* tunneling and relaying of packets of any protocol.
*
*
- * Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl,
+ * Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl,
* Christian Pointner <satp@wirdorange.org>
*
* This file is part of Anytun.
#include <list>
#include "syncTcpConnection.h"
-typedef boost::function<void (SyncTcpConnection *)> ConnectCallback;
+typedef boost::function<void (SyncTcpConnection*)> ConnectCallback;
class SyncServer
{
public:
SyncServer(std::string localaddr, std::string port, ConnectCallback onConnect);
- void onResolve(const SyncTcpConnection::proto::endpoint& e);
+ ~SyncServer();
+ void onResolve(SyncTcpConnection::proto::resolver::iterator& it);
void onResolvError(const std::runtime_error& e);
-
+
void run();
void send(std::string message);
-
+
std::list<SyncTcpConnection::pointer> conns_;
-
+
private:
- void start_accept();
- void handle_accept(SyncTcpConnection::pointer new_connection, const boost::system::error_code& error);
-
Mutex mutex_; //Mutex for list conns_
boost::asio::io_service io_service_;
- SyncTcpConnection::proto::acceptor acceptor_;
+ typedef struct {
+ SyncTcpConnection::proto::acceptor* acceptor_;
+ bool started_;
+ } AcceptorsElement;
+ std::list<AcceptorsElement> acceptors_;
ConnectCallback onConnect_;
Semaphore ready_sem_;
+
+ void start_accept();
+ void handle_accept(SyncTcpConnection::pointer new_connection, const boost::system::error_code& error, std::list<AcceptorsElement>::iterator it);
};
#endif