libsocket 1.5
socket.hxx
Go to the documentation of this file.
1/*
2** socket.hxx
3** Login : Julien Lemoine <speedblue@happycoders.org>
4** Started on Tue Jun 1 22:45:16 2004 Julien Lemoine
5** $Id: socket.hxx,v 1.2 2004/11/14 19:37:46 speedblue Exp $
6**
7** Copyright (C) 2004 Julien Lemoine
8** This program is free software; you can redistribute it and/or modify
9** it under the terms of the GNU Lesser General Public License as published by
10** the Free Software Foundation; either version 2 of the License, or
11** (at your option) any later version.
12**
13** This program is distributed in the hope that it will be useful,
14** but WITHOUT ANY WARRANTY; without even the implied warranty of
15** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16** GNU Lesser General Public License for more details.
17**
18** You should have received a copy of the GNU Lesser General Public License
19** along with this program; if not, write to the Free Software
20** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21*/
22
23#ifndef SOCKET_HXX_
24# define SOCKET_HXX_
25
26namespace Network
27{
28 inline bool Socket::_check_answer(int res, std::string &str)
29 {
30 if (res <= 0)
31 {
32 if (!_buffer.size()) // No more data...
33 throw ConnectionClosed("Connection Closed", HERE);
34 else
35 {
36 str += _buffer;
37 _buffer = "";
39 return true;
40 }
41 }
42 return false;
43 }
44
45 inline bool Socket::_update_buffer(std::pair<int, int> &delim,
46 int &i, std::string &str)
47 {
48 delim = _find_delim(_buffer, 0);
49 i = delim.first;
50 while (!_empty_lines && !i)
51 {
52 // remove delimiter in front of buffer
53 _buffer = _buffer.substr(delim.second, _buffer.size() - delim.second);
54 delim = _find_delim(_buffer, 0);
55 i = delim.first;
56 }
57 if ((i > 0 || _empty_lines) && ((unsigned int)i < _buffer.size()))
58 {
59 str = _buffer.substr(0, i);
60 _buffer = _buffer.substr(i + delim.second,
61 _buffer.size() - i - delim.second);
62 return true;
63 }
64 else
65 return false;
66 }
67}
68
69#endif /* !SOCKET_HXX_ */
std::pair< int, int > _find_delim(const std::string &str, int start) const
Definition: socket.cc:339
bool _empty_lines
Definition: socket.hh:201
std::string _buffer
Definition: socket.hh:202
bool _check_answer(int res, std::string &str)
return the content of the buffer is there is
Definition: socket.hxx:28
unsigned _state_timeout
Definition: socket.hh:192
bool _update_buffer(std::pair< int, int > &delim, int &i, std::string &str)
look delimiter and remove delimiter at begining of buffer if needed
Definition: socket.hxx:45
Network namespace represent all networks connection.
Definition: localsocket.cc:33
#define HERE