src/proto2/NetworkTCP.hh
branchno-netsession
changeset 38 4189b8bf3a5b
parent 37 ed2957490bbf
child 39 cfb8b6e2a35f
equal deleted inserted replaced
37:ed2957490bbf 38:4189b8bf3a5b
    10 
    10 
    11 const size_t NETWORK_TCP_CHUNK_SIZE = 1024;
    11 const size_t NETWORK_TCP_CHUNK_SIZE = 1024;
    12 const size_t NETWORK_TCP_INITIAL_IN_BUF = 4096;
    12 const size_t NETWORK_TCP_INITIAL_IN_BUF = 4096;
    13 const size_t NETWORK_TCP_INITIAL_OUT_BUF = 0;
    13 const size_t NETWORK_TCP_INITIAL_OUT_BUF = 0;
    14 
    14 
    15 class NetworkDisconnectError : public Error {
       
    16     public:
       
    17         NetworkDisconnectError (const std::string &message) : Error(message) { }
       
    18 };
       
    19 
       
    20 class NetworkBufferError : public Error {
    15 class NetworkBufferError : public Error {
    21     public:
    16     public:
    22         NetworkBufferError (const std::string &message) : Error(message) { }
    17         NetworkBufferError (const std::string &message) : Error(message) { }
    23 };
    18 };
    24 
    19 
    25 class NetworkBuffer {
    20 class NetworkBuffer {
    26     private:
    21     private:
    27         NetworkSocket &socket;
    22         NetworkSocket socket;
    28 
    23 
    29         char *buf;
    24         char *buf;
    30         size_t size, offset;
    25         size_t size, offset;
    31     
    26     
    32     public:
    27     public:
    41         void trim (size_t prefix_size);
    36         void trim (size_t prefix_size);
    42 
    37 
    43     public:    
    38     public:    
    44         void push_write (char *buf_ptr, size_t buf_size);
    39         void push_write (char *buf_ptr, size_t buf_size);
    45         void flush_write (void);
    40         void flush_write (void);
    46         template <typename PrefixType> void write_prefix (char *buf, PrefixType prefix);
    41         void write_prefix (char *buf, uint16_t prefix);
       
    42         void write_prefix (char *buf, uint32_t prefix);
    47         
    43         
    48         bool try_read (size_t item_size);
    44         bool try_read (size_t item_size);
    49         bool peek_prefix (uint16_t &ref);
    45         bool peek_prefix (uint16_t &ref);
    50         bool peek_prefix (uint32_t &ref);
    46         bool peek_prefix (uint32_t &ref);
    51         template <typename PrefixType> PrefixType read_prefix (char *buf_ptr, size_t buf_max);
    47         template <typename PrefixType> PrefixType read_prefix (char *buf_ptr, size_t buf_max);