2 ** \file AjpBaseSocket.h
4 ** \author grymse@alhem.net
7 Copyright (C) 2007 Anders Hedstrom
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 #ifndef _SOCKETS_AjpBaseSocket_H
24 #define _SOCKETS_AjpBaseSocket_H
26 #include "TcpSocket.h"
29 #ifdef SOCKETS_NAMESPACE
30 namespace SOCKETS_NAMESPACE
{
33 class AjpBaseSocket
: public TcpSocket
39 virtual ~Initializer() {}
41 std::map
<int, std::string
> Method
;
42 std::map
<int, std::string
> Header
;
43 std::map
<int, std::string
> Attribute
;
45 std::map
<std::string
, int> ResponseHeader
;
50 AjpBaseSocket(ISocketHandler
& h
);
52 void OnRawData(const char *buf
, size_t sz
);
54 virtual void OnHeader( short id
, short len
) = 0;
55 virtual void OnPacket( const char *buf
, size_t sz
) = 0;
58 unsigned char get_byte(const char *buf
, int& ptr
);
59 bool get_boolean(const char *buf
, int& ptr
);
60 short get_integer(const char *buf
, int& ptr
);
61 std::string
get_string(const char *buf
, int& ptr
);
63 void put_byte(char *buf
, int& ptr
, unsigned char zz
);
64 void put_boolean(char *buf
, int& ptr
, bool zz
);
65 void put_integer(char *buf
, int& ptr
, short zz
);
66 void put_string(char *buf
, int& ptr
, const std::string
& zz
);
68 static Initializer Init
;
78 #ifdef SOCKETS_NAMESPACE
79 } // namespace SOCKETS_NAMESPACE {
82 #endif // _SOCKETS_AjpBaseSocket_H