src/proto2/NetworkTCP.hh
branchno-netsession
changeset 36 785d220fc6b7
parent 34 1ea6554d703e
child 37 ed2957490bbf
equal deleted inserted replaced
35:e21cfda0edde 36:785d220fc6b7
     1 #ifndef NETWORK_TCP_HH
     1 #ifndef NETWORK_TCP_HH
     2 #define NETWORK_TCP_HH
     2 #define NETWORK_TCP_HH
     3 
     3 
     4 #include "NetworkSocket.hh"
     4 #include "NetworkSocket.hh"
     5 #include "NetworkAddress.hh"
     5 #include "NetworkAddress.hh"
       
     6 #include "NetworkPacket.hh"
       
     7 #include "Error.hh"
     6 
     8 
     7 const size_t NETWORK_TCP_CHUNK_SIZE = 1024;
     9 const size_t NETWORK_TCP_CHUNK_SIZE = 1024;
     8 const size_t NETWORK_TCP_INITIAL_IN_BUF = 4096;
    10 const size_t NETWORK_TCP_INITIAL_IN_BUF = 4096;
     9 const size_t NETWORK_TCP_INITIAL_OUT_BUF = 0;
    11 const size_t NETWORK_TCP_INITIAL_OUT_BUF = 0;
    10 
    12 
    11 class NetworkDisconnectError : public exception {
    13 class NetworkDisconnectError : public Error {
    12 
    14     public:
       
    15         NetworkDisconnectError (const std::string &message) : Error(message) { }
    13 };
    16 };
    14 
    17 
    15 class NetworkBuffer {
    18 class NetworkBuffer {
    16     private:
    19     private:
    17         char *buf;
    20         char *buf;
    19 
    22 
    20         NetworkSocket &socket;
    23         NetworkSocket &socket;
    21     
    24     
    22     public:
    25     public:
    23         NetworkBuffer (NetworkSocket &socket, size_t size_hint);
    26         NetworkBuffer (NetworkSocket &socket, size_t size_hint);
    24  
    27     
    25     private:
    28     private:
    26         NetworkBuffer (const NetworkBuffer &copy) { };
    29         NetworkBuffer (const NetworkBuffer &copy);
    27         ~NetworkBuffer (void);
    30         ~NetworkBuffer (void);
    28         NetworkBuffer& operator= (const NetworkBuffer &copy) { };
    31         NetworkBuffer& operator= (const NetworkBuffer &copy);
    29 
    32 
    30         void resize (size_t suffix_size);
    33         void resize (size_t suffix_size);
    31         void trim (size_t prefix_size);
    34         void trim (size_t prefix_size);
    32 
    35 
    33     public:    
    36     public:    
    56     private:
    59     private:
    57         void on_read (void);
    60         void on_read (void);
    58         void on_write (void);
    61         void on_write (void);
    59         void on_disconnected (void);
    62         void on_disconnected (void);
    60 
    63 
    61         CL_Signal_v1<const NetworkPacket&> _sig_packet;
    64         CL_Signal_v1<const NetworkPacket &> _sig_packet;
    62         CL_Signal_v0 _sig_disconnect;
    65         CL_Signal_v0 _sig_disconnect;
    63 
    66 
    64     public:
    67     public:
    65         NetworkAddress getRemoteAddress (void) { return socket.get_dest_address(); }
    68         NetworkAddress getRemoteAddress (void) { return socket.get_dest_address(); }
    66 
    69