Open Lighting Architecture: include/ola/network/TCPSocketFactory.h Source File

| Open Lighting Architecture 0.10.9

Loading...
Searching...
No Matches
TCPSocketFactory.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 * TCPSocketFactory.h
17 * Factories for creating TCP Sockets
18 * Copyright (C) 2012 Simon Newton
19 */
20
21#ifndef INCLUDE_OLA_NETWORK_TCPSOCKETFACTORY_H_
22#define INCLUDE_OLA_NETWORK_TCPSOCKETFACTORY_H_
23
24#include <ola/Callback.h>
25#include <ola/base/Macro.h>
26#include <ola/network/TCPSocket.h>
27
28namespace ola {
29namespace network {
30
34 class TCPSocketFactoryInterface {
35 public:
36 virtual ~TCPSocketFactoryInterface() {}
37
38 virtual void NewTCPSocket(int fd) = 0;
39};
40
41
45template<class SocketType>
46 class GenericTCPSocketFactory: public TCPSocketFactoryInterface {
47 public:
48 typedef ola::Callback1<void, SocketType*> NewSocketCallback;
49
50 explicit GenericTCPSocketFactory(NewSocketCallback *on_accept)
51 : m_new_socket(on_accept) {
52 }
53
54 ~GenericTCPSocketFactory() {
55 if (m_new_socket)
56 delete m_new_socket;
57 }
58
59 void NewTCPSocket(int fd) {
60 SocketType *socket = new SocketType(fd);
61 socket->SetReadNonBlocking();
62 m_new_socket->Run(socket);
63 }
64
65 private:
66 NewSocketCallback *m_new_socket;
67
68 GenericTCPSocketFactory(const GenericTCPSocketFactory &) = delete;
69 const GenericTCPSocketFactory &operator=(const GenericTCPSocketFactory &) = delete;
70};
71
72typedef GenericTCPSocketFactory<TCPSocket> TCPSocketFactory;
73} // namespace network
74} // namespace ola
75#endif // INCLUDE_OLA_NETWORK_TCPSOCKETFACTORY_H_
Callback.h
Macro.h
Helper macros.
ola::Callback1
A 1 argument callback which can be called multiple times.
Definition Callback.h:992
ola::network::GenericTCPSocketFactory
Definition TCPSocketFactory.h:46
ola::network::TCPSocketFactoryInterface
Definition TCPSocketFactory.h:34
ola::network
Code for network communication.
Definition AdvancedTCPConnector.cpp:28
ola
The namespace containing all OLA symbols.
Definition Credentials.cpp:44