]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/communicator.cpp
Refactor the API for defining packets in Protocol
[libs/net.git] / source / net / communicator.cpp
index 22a79631d9a214741fdbf71721d8e6322986ea4e..3ac62d7e4be0906f270582ddd2576f32b346a381 100644 (file)
@@ -1,6 +1,5 @@
 #include <cstring>
 #include "communicator.h"
-#include "protocol_impl.h"
 #include "streamsocket.h"
 
 using namespace std;
@@ -11,7 +10,7 @@ using namespace Msp::Net;
 
 struct Handshake
 {
-       Msp::UInt64 hash;
+       uint64_t hash;
 };
 
 
@@ -24,25 +23,20 @@ public:
 HandshakeProtocol::HandshakeProtocol():
        Protocol(0x7F00)
 {
-       add<Handshake>()(&Handshake::hash);
+       add<Handshake>(&Handshake::hash);
 }
 
 
 class HandshakeReceiver: public PacketReceiver<Handshake>
 {
 private:
-       Msp::UInt64 hash;
+       uint64_t hash = 0;
 
 public:
-       HandshakeReceiver();
-       Msp::UInt64 get_hash() const { return hash; }
-       virtual void receive(const Handshake &);
+       uint64_t get_hash() const { return hash; }
+       void receive(const Handshake &) override;
 };
 
-HandshakeReceiver::HandshakeReceiver():
-       hash(0)
-{ }
-
 void HandshakeReceiver::receive(const Handshake &shake)
 {
        hash = shake.hash;
@@ -58,13 +52,10 @@ Communicator::Communicator(StreamSocket &s, const Protocol &p, ReceiverBase &r):
        socket(s),
        protocol(p),
        receiver(r),
-       handshake_status(0),
-       buf_size(65536),
        in_buf(new char[buf_size]),
        in_begin(in_buf),
        in_end(in_buf),
-       out_buf(new char[buf_size]),
-       good(true)
+       out_buf(new char[buf_size])
 {
        socket.signal_data_available.connect(sigc::mem_fun(this, &Communicator::data_available));
 }
@@ -84,7 +75,7 @@ void Communicator::initiate_handshake()
        handshake_status = 1;
 }
 
-void Communicator::send_data(unsigned size)
+void Communicator::send_data(size_t size)
 {
        if(!good)
                throw sequence_error("connection aborted");
@@ -161,7 +152,7 @@ bool Communicator::receive_packet(const Protocol &proto, ReceiverBase &recv)
        {
                if(in_end==in_buf+buf_size)
                {
-                       unsigned used = in_end-in_begin;
+                       size_t used = in_end-in_begin;
                        memmove(in_buf, in_begin, used);
                        in_begin = in_buf;
                        in_end = in_begin+used;
@@ -176,7 +167,7 @@ void Communicator::send_handshake()
        shake.hash = protocol.get_hash();
 
        HandshakeProtocol hsproto;
-       unsigned size = hsproto.serialize(shake, out_buf, buf_size);
+       size_t size = hsproto.serialize(shake, out_buf, buf_size);
        socket.write(out_buf, size);
 }