* tunneling and relaying of packets of any protocol.
*
*
- * Copyright (C) 2007-2008 Othmar Gsenger, Erwin Nindl,
+ * Copyright (C) 2007-2009 Othmar Gsenger, Erwin Nindl,
* Christian Pointner <satp@wirdorange.org>
*
* This file is part of Anytun.
*
* Anytun is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3 as
- * published by the Free Software Foundation.
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
*
* Anytun is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* along with anytun. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef _SYNC_SERVER_H_
-#define _SYNC_SERVER_H_
-//#include <iostream>
-//#include <string>
+#ifndef ANYTUN_syncServer_h_INCLUDED
+#define ANYTUN_syncServer_h_INCLUDED
+
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
{
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();
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