diff options
-rw-r--r-- | Limber/main.cpp | 11 | ||||
-rw-r--r-- | Swiften/Network/ConnectionServer.cpp | 8 | ||||
-rw-r--r-- | Swiften/Network/ConnectionServer.h | 15 | ||||
-rw-r--r-- | Swiften/Network/IncomingConnection.cpp | 8 | ||||
-rw-r--r-- | Swiften/Network/IncomingConnection.h | 17 | ||||
-rw-r--r-- | Swiften/Network/Makefile.inc | 2 |
6 files changed, 55 insertions, 6 deletions
diff --git a/Limber/main.cpp b/Limber/main.cpp index bc061e5..0893fc8 100644 --- a/Limber/main.cpp +++ b/Limber/main.cpp @@ -11,6 +11,8 @@ #include "Swiften/Base/ByteArray.h" #include "Swiften/EventLoop/MainEventLoop.h" #include "Swiften/EventLoop/SimpleEventLoop.h" +#include "Swiften/Network/IncomingConnection.h" +#include "Swiften/Network/ConnectionServer.h" using namespace Swift; @@ -33,7 +35,7 @@ class SharedBuffer { boost::asio::const_buffer buffer_; }; -class IncomingBoostConnection : public boost::enable_shared_from_this<IncomingBoostConnection> { +class IncomingBoostConnection : public IncomingConnection, public boost::enable_shared_from_this<IncomingBoostConnection> { public: typedef boost::shared_ptr<IncomingBoostConnection> pointer; @@ -64,7 +66,6 @@ class IncomingBoostConnection : public boost::enable_shared_from_this<IncomingBo } boost::asio::ip::tcp::socket socket_; - std::string message_; }; class BoostIOServiceThread { @@ -92,14 +93,12 @@ class BoostIOServiceThread { boost::thread thread_; }; -class BoostConnectionServer { +class BoostConnectionServer : public ConnectionServer { public: BoostConnectionServer(int port, boost::asio::io_service& ioService) : acceptor_(ioService, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), port)) { acceptNextConnection(); } - boost::signal<void (IncomingBoostConnection::pointer)> onNewConnection; - private: // Called from Asio thread void acceptNextConnection() { @@ -119,7 +118,7 @@ class BoostConnectionServer { boost::asio::ip::tcp::acceptor acceptor_; }; -void doSomething(IncomingBoostConnection::pointer c) { +void doSomething(boost::shared_ptr<IncomingConnection> c) { c->write("Hello\n"); } diff --git a/Swiften/Network/ConnectionServer.cpp b/Swiften/Network/ConnectionServer.cpp new file mode 100644 index 0000000..7f63fee --- /dev/null +++ b/Swiften/Network/ConnectionServer.cpp @@ -0,0 +1,8 @@ +#include "Swiften/Network/ConnectionServer.h" + +namespace Swift { + +ConnectionServer::~ConnectionServer() { +} + +} diff --git a/Swiften/Network/ConnectionServer.h b/Swiften/Network/ConnectionServer.h new file mode 100644 index 0000000..d376308 --- /dev/null +++ b/Swiften/Network/ConnectionServer.h @@ -0,0 +1,15 @@ +#pragma once + +#include <boost/shared_ptr.hpp> +#include <boost/signal.hpp> + +#include "Swiften/Network/IncomingConnection.h" + +namespace Swift { + class ConnectionServer { + public: + virtual ~ConnectionServer(); + + boost::signal<void (boost::shared_ptr<IncomingConnection>)> onNewConnection; + }; +} diff --git a/Swiften/Network/IncomingConnection.cpp b/Swiften/Network/IncomingConnection.cpp new file mode 100644 index 0000000..669f68e --- /dev/null +++ b/Swiften/Network/IncomingConnection.cpp @@ -0,0 +1,8 @@ +#include "Swiften/Network/IncomingConnection.h" + +namespace Swift { + +IncomingConnection::~IncomingConnection() { +} + +} diff --git a/Swiften/Network/IncomingConnection.h b/Swiften/Network/IncomingConnection.h new file mode 100644 index 0000000..eaa2ad6 --- /dev/null +++ b/Swiften/Network/IncomingConnection.h @@ -0,0 +1,17 @@ +#pragma once + +#include <boost/signal.hpp> + +#include "Swiften/Base/ByteArray.h" + +namespace Swift { + class IncomingConnection { + public: + virtual ~IncomingConnection(); + + virtual void write(const ByteArray& data) = 0; + + //boost::signal<void (Error)> onError; + boost::signal<void (const ByteArray&)> onDataRead; + }; +} diff --git a/Swiften/Network/Makefile.inc b/Swiften/Network/Makefile.inc index 17b2838..b0f0fd1 100644 --- a/Swiften/Network/Makefile.inc +++ b/Swiften/Network/Makefile.inc @@ -4,6 +4,8 @@ SWIFTEN_SOURCES += \ Swiften/Network/ConnectionFactory.cpp \ Swiften/Network/BoostConnection.cpp \ Swiften/Network/BoostConnectionFactory.cpp \ + Swiften/Network/ConnectionServer.cpp \ + Swiften/Network/IncomingConnection.cpp \ Swiften/Network/Timer.cpp include Swiften/Network/UnitTest/Makefile.inc |