libiqxmlrpc
0.12.4
Main Page
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Files
Functions
Typedefs
Enumerations
libiqxmlrpc
ssl_connection.h
1
// Libiqxmlrpc - an object-oriented XML-RPC solution.
2
// Copyright (C) 2011 Anton Dedov
3
4
#ifndef _libiqnet_ssl_connection_
5
#define _libiqnet_ssl_connection_
6
7
#include "connection.h"
8
#include "conn_factory.h"
9
#include "reactor.h"
10
#include "ssl_lib.h"
11
12
#include <openssl/ssl.h>
13
14
namespace
iqnet {
15
namespace
ssl {
16
18
class
LIBIQXMLRPC_API
Connection
:
public
iqnet::Connection
{
19
protected
:
20
ssl::Ctx
* ssl_ctx;
21
SSL *ssl;
22
23
public
:
24
Connection
(
const
Socket
& sock );
25
~
Connection
();
26
27
void
shutdown();
28
size_t
send(
const
char
*,
size_t
);
29
size_t
recv(
char
*,
size_t
);
30
32
void
post_accept();
34
void
post_connect();
35
36
protected
:
38
virtual
void
ssl_accept();
40
virtual
void
ssl_connect();
41
42
bool
shutdown_recved();
43
bool
shutdown_sent();
44
};
45
48
class
LIBIQXMLRPC_API
Reaction_connection
:
public
ssl::Connection
{
49
Reactor_base
* reactor;
50
51
enum
State { EMPTY, ACCEPTING, CONNECTING, READING, WRITING, SHUTDOWN };
52
State state;
53
54
char
* recv_buf;
55
const
char
* send_buf;
56
size_t
buf_len;
57
58
public
:
59
Reaction_connection
(
const
Socket
&,
Reactor_base
* = 0 );
60
62
void
set_reactor(
Reactor_base
* r )
63
{
64
reactor = r;
65
}
66
67
void
post_accept();
68
void
post_connect();
69
void
handle_input(
bool
& );
70
void
handle_output(
bool
& );
71
72
private
:
73
void
switch_state(
bool
& terminate );
74
void
try_send();
75
size_t
try_recv();
76
77
protected
:
78
void
ssl_accept();
79
void
ssl_connect();
81
bool
reg_shutdown();
82
void
reg_accept();
83
void
reg_connect();
84
void
reg_send(
const
char
*,
size_t
);
85
void
reg_recv(
char
*,
size_t
);
86
88
virtual
void
accept_succeed
() {};
90
virtual
void
connect_succeed
() {};
91
92
virtual
void
recv_succeed(
bool
& terminate,
size_t
req_len,
size_t
real_len ) = 0;
93
virtual
void
send_succeed(
bool
& terminate ) = 0;
94
};
95
96
}
// namespace ssl
97
}
// namespace iqnet
98
99
#endif
Generated on Mon Aug 5 2013 18:53:37 for libiqxmlrpc by
1.8.3.1