#define MSP_NET_COMMUNICATOR_H_
#include <msp/core/except.h>
+#include <msp/core/noncopyable.h>
#include <sigc++/signal.h>
+#include "mspnet_api.h"
#include "protocol.h"
namespace Msp {
class StreamSocket;
-class sequence_error: public invalid_state
+class MSPNET_API sequence_error: public invalid_state
{
public:
sequence_error(const std::string &w): invalid_state(w) { }
};
-class incompatible_protocol: public std::runtime_error
+class MSPNET_API incompatible_protocol: public std::runtime_error
{
public:
incompatible_protocol(const std::string &w): std::runtime_error(w) { }
};
-class Communicator
+class MSPNET_API Communicator: public NonCopyable
{
public:
sigc::signal<void> signal_handshake_done;
StreamSocket &socket;
const Protocol &protocol;
ReceiverBase &receiver;
- int handshake_status;
- std::size_t buf_size;
- char *in_buf;
- char *in_begin;
- char *in_end;
- char *out_buf;
- bool good;
+ int handshake_status = 0;
+ std::size_t buf_size = 65536;
+ char *in_buf = nullptr;
+ char *in_begin = nullptr;
+ char *in_end = nullptr;
+ char *out_buf = nullptr;
+ bool good = true;
public:
Communicator(StreamSocket &, const Protocol &, ReceiverBase &);