libiqxmlrpc
0.12.4
Main Page
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Files
Functions
Typedefs
Enumerations
libiqxmlrpc
server_conn.h
1
// Libiqxmlrpc - an object-oriented XML-RPC solution.
2
// Copyright (C) 2011 Anton Dedov
3
4
#ifndef _iqxmlrpc_server_conn_h_
5
#define _iqxmlrpc_server_conn_h_
6
7
#include "connection.h"
8
#include "conn_factory.h"
9
#include "http.h"
10
11
namespace
iqnet
12
{
13
class
Reactor_base;
14
}
15
16
namespace
iqxmlrpc {
17
18
class
Server;
19
20
#ifdef _MSC_VER
21
#pragma warning(push)
22
#pragma warning(disable: 4251)
23
#endif
24
26
class
LIBIQXMLRPC_API
Server_connection
{
27
protected
:
28
iqnet::Inet_addr
peer_addr;
29
Server
*server;
30
http::Packet_reader
preader;
31
32
size_t
read_buf_sz;
33
char
*read_buf;
34
35
std::string response;
36
37
protected
:
38
bool
keep_alive;
39
40
public
:
41
Server_connection
(
const
iqnet::Inet_addr
& );
42
virtual
~
Server_connection
() = 0;
43
44
const
iqnet::Inet_addr
& get_peer_addr()
const
{
return
peer_addr; }
45
46
void
set_read_sz(
size_t
);
47
48
void
set_server(
Server
* s )
49
{
50
server = s;
51
}
52
53
void
schedule_response(
http::Packet
* );
54
55
protected
:
56
http::Packet
* read_request(
const
std::string& );
57
58
virtual
void
do_schedule_response() = 0;
59
};
60
61
#ifdef _MSC_VER
62
#pragma warning(pop)
63
#pragma warning(disable: 4251)
64
#endif
65
67
template
<
class
Transport >
68
class
Server_conn_factory
:
public
iqnet::Serial_conn_factory
<Transport>
69
{
70
Server
* server;
71
iqnet::Reactor_base
* reactor;
72
73
public
:
74
Server_conn_factory
():
75
server(0), reactor(0) {}
76
77
void
post_init(
Server
* s,
iqnet::Reactor_base
* r )
78
{
79
server = s;
80
reactor = r;
81
}
82
83
void
post_create( Transport* c )
84
{
85
c->set_server( server );
86
c->set_reactor( reactor );
87
}
88
};
89
90
}
// namespace iqxmlrpc
91
92
#endif
Generated on Mon Aug 5 2013 18:53:37 for libiqxmlrpc by
1.8.3.1