1 #ifndef MSP_NET_COMMUNICATOR_H_
2 #define MSP_NET_COMMUNICATOR_H_
4 #include <sigc++/signal.h>
12 class sequence_error: public std::logic_error
15 sequence_error(const std::string &w): std::logic_error(w) { }
16 virtual ~sequence_error() throw() { }
23 sigc::signal<void> signal_handshake_done;
24 sigc::signal<void, const std::exception &> signal_error;
28 const Protocol &protocol;
29 ReceiverBase &receiver;
39 Communicator(StreamSocket &, const Protocol &, ReceiverBase &);
42 void initiate_handshake();
43 bool is_handshake_done() const { return handshake_status==2; }
49 void send_data(unsigned);
51 void data_available();
52 bool receive_packet(const Protocol &, ReceiverBase &);
53 void send_handshake();
57 void Communicator::send(const P &pkt)
59 send_data(protocol.serialize(pkt, out_buf, buf_size));