Open Lighting Architecture
0.9.5
Main Page
Modules
Related Pages
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
common
rpc
RpcServer.h
1
/*
2
* This library is free software; you can redistribute it and/or
3
* modify it under the terms of the GNU Lesser General Public
4
* License as published by the Free Software Foundation; either
5
* version 2.1 of the License, or (at your option) any later version.
6
*
7
* This library is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10
* Lesser General Public License for more details.
11
*
12
* You should have received a copy of the GNU Lesser General Public
13
* License along with this library; if not, write to the Free Software
14
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
*
16
* RpcServer.h
17
* A generic RPC server.
18
* Copyright (C) 2014 Simon Newton
19
*/
20
21
#ifndef COMMON_RPC_RPCSERVER_H_
22
#define COMMON_RPC_RPCSERVER_H_
23
24
#include <stdint.h>
25
#include <ola/io/SelectServerInterface.h>
26
#include <ola/network/TCPSocketFactory.h>
27
28
#include <set>
29
#include <memory>
30
31
namespace
ola {
32
33
class
ExportMap;
34
35
namespace
rpc {
36
48
class
RpcServer
{
49
public
:
53
struct
Options
{
54
public
:
60
uint16_t
listen_port
;
61
62
class
ExportMap
*
export_map
;
63
73
ola::network::TCPAcceptingSocket
*
listen_socket
;
74
75
Options
()
76
:
listen_port
(0),
77
export_map
(NULL),
78
listen_socket
(NULL) {
79
}
80
};
81
90
RpcServer
(
ola::io::SelectServerInterface
*ss,
91
class
RpcService
*service,
92
class
RpcSessionHandlerInterface
*session_handler,
93
const
Options &options);
94
95
~
RpcServer
();
96
101
bool
Init
();
102
107
ola::network::GenericSocketAddress
ListenAddress
();
108
114
bool
AddClient
(
ola::io::ConnectedDescriptor
*descriptor);
115
116
private
:
117
typedef
std::set<ola::io::ConnectedDescriptor*> ClientDescriptors;
118
119
ola::io::SelectServerInterface
*m_ss;
120
RpcService
*m_service;
121
class
RpcSessionHandlerInterface
*m_session_handler;
122
const
Options m_options;
123
124
ola::network::TCPSocketFactory
m_tcp_socket_factory;
125
std::auto_ptr<ola::network::TCPAcceptingSocket> m_accepting_socket;
126
ClientDescriptors m_connected_sockets;
127
128
void
NewTCPConnection(
ola::network::TCPSocket
*socket);
129
void
ChannelClosed(
ola::io::ConnectedDescriptor
*socket,
130
class
RpcSession
*session);
131
132
static
const
char
K_CLIENT_VAR[];
133
static
const
char
K_RPC_PORT_VAR[];
134
};
135
}
// namespace rpc
136
}
// namespace ola
137
138
#endif // COMMON_RPC_RPCSERVER_H_
Generated on Sun Mar 1 2015 13:02:39 for Open Lighting Architecture by
1.8.1.2