00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef SOCKET_HXX_
00024 # define SOCKET_HXX_
00025
00026 namespace Network
00027 {
00028 inline bool Socket::_check_answer(int res, std::string &str)
00029 {
00030 if (res <= 0)
00031 {
00032 if (!_buffer.size())
00033 throw ConnectionClosed("Connection Closed", HERE);
00034 else
00035 {
00036 str += _buffer;
00037 _buffer = "";
00038 _state_timeout = 0;
00039 return true;
00040 }
00041 }
00042 return false;
00043 }
00044
00045 inline bool Socket::_update_buffer(std::pair<int, int> &delim,
00046 int &i, std::string &str)
00047 {
00048 delim = _find_delim(_buffer, 0);
00049 i = delim.first;
00050 while (!_empty_lines && !i)
00051 {
00052
00053 _buffer = _buffer.substr(delim.second, _buffer.size() - delim.second);
00054 delim = _find_delim(_buffer, 0);
00055 i = delim.first;
00056 }
00057 if ((i > 0 || _empty_lines) && ((unsigned int)i < _buffer.size()))
00058 {
00059 str = _buffer.substr(0, i);
00060 _buffer = _buffer.substr(i + delim.second,
00061 _buffer.size() - i - delim.second);
00062 return true;
00063 }
00064 else
00065 return false;
00066 }
00067 }
00068
00069 #endif