00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00024 #include "config.h"
00025
00026 #include <memory>
00027
00028 #include <scalestack/echo/server/stream_service.h>
00029 #include <scalestack/kernel/core.h>
00030 #include <scalestack/kernel/module.h>
00031 #include <scalestack/network/ip/tcp/connection_service.h>
00032 #include <scalestack/network/ip/tcp/listener_service.h>
00033
00034 using namespace std;
00035 using namespace scalestack;
00036
00037 static void options(kernel::module& module)
00038 {
00039 network::ip::tcp::listener_service::options(module, "7");
00040 }
00041
00042 static void start(kernel::module& module)
00043 {
00044 auto_ptr<network::stream_service> stream_service(
00045 new echo::server::stream_service(module));
00046 auto_ptr<network::stream_service_provider> connection_service(
00047 new network::ip::tcp::connection_service(module, stream_service, "7"));
00048 auto_ptr<network::ip::tcp::listener_service> listener_service(
00049 new network::ip::tcp::listener_service(module, connection_service, ""));
00050
00051 listener_service->add_listeners();
00052 module.get_core().add_service("echo::server::tcp", listener_service.get());
00053 listener_service.release();
00054 }
00055
00056 static void stop(kernel::module& module)
00057 {
00058 delete module.get_core().remove_service("echo::server::tcp");
00059 }
00060
00061 SCALESTACK_KERNEL_MODULE(options, start, stop, NULL, NULL);