summaryrefslogtreecommitdiff
path: root/docs/tutorials/005a/server.news
diff options
context:
space:
mode:
Diffstat (limited to 'docs/tutorials/005a/server.news')
-rw-r--r--docs/tutorials/005a/server.news139
1 files changed, 0 insertions, 139 deletions
diff --git a/docs/tutorials/005a/server.news b/docs/tutorials/005a/server.news
deleted file mode 100644
index 51db8033c36..00000000000
--- a/docs/tutorials/005a/server.news
+++ /dev/null
@@ -1,139 +0,0 @@
-
-#include "ace/Acceptor.h"
-#include "ace/SOCK_Acceptor.h"
-#include "ace/Reactor.h"
-#include "ace/Thread.h"
-
-
-ACE_Reactor * g_reactor;
-
-static sig_atomic_t finished = 0;
-
-
-extern "C" void handler (int) { finished = 1; }
-static void *thread_run(void *);
-// ----------------------------------------
-
-class Logging_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
-{
-
-public:
-
- Logging_Handler (void)
- {
- thread_reactor = NULL;
- }
-
- ~Logging_Handler (void)
- {
- delete thread_reactor;
- }
-
- virtual void destroy (void)
- {
- g_reactor->cancel_timer (this);
- this->peer ().close ();
- delete this;
- }
-
- static void *run_thread(Logging_Handler *this_)
- {
- cout << "run_thread in " << getpid() << endl;
-
- this_->thread_reactor = new ACE_Reactor;
-
- if (this_->thread_reactor->register_handler(this_, ACE_Event_Handler::READ_MASK) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "(%P|%t) can't register with reactor\n"), -1);
- else if (this_->thread_reactor->schedule_timer (this_, (const void *)this_, ACE_Time_Value (2), ACE_Time_Value (2)) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "can'(%P|%t) t register with reactor\n"), -1);
- else
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) connected with client \n"));
-
- while(!finished)
- this_->thread_reactor->handle_events();
-
- }
-
- virtual int open (void *)
- {
- ACE_Thread::spawn(&Logging_Handler::run_thread,this);
- return 0;
- }
-
- virtual int close (u_long)
- {
- this->destroy ();
- return 0;
- }
-
-protected:
-
- virtual int handle_input (ACE_HANDLE)
- {
- char buf[128];
- memset(buf,0,sizeof(buf));
-
- cout << "handle_input in " << getpid() << endl;
- switch( this->peer().recv(buf,sizeof buf) )
- {
- case -1:
- ACE_ERROR_RETURN ((LM_ERROR, "(%P|%t) %p bad read\n", "client logger"), -1);
- case 0:
- ACE_ERROR_RETURN ((LM_ERROR, "(%P|%t) closing log daemon (fd = %d)\n", this->get_handle ()), -1);
- default:
- cout << "Data from client " << buf << endl;
- // ACE_DEBUG ((LM_DEBUG, "(%P|%t) from client: %s",buf));
- }
-
- return 0;
- }
-
- virtual int handle_timeout (const ACE_Time_Value &tv, const void *arg)
- {
- ACE_ASSERT (arg == this);
- // ACE_DEBUG ((LM_DEBUG, "(%P|%t) handling timeout from this = %u\n", this));
- cout << "Timout in " << getpid() << endl;
- return 0;
- }
-
-private:
- ACE_Reactor *thread_reactor;
- char peer_name_[MAXHOSTNAMELEN + 1];
-
-};
-
-
-typedef ACE_Acceptor <Logging_Handler, ACE_SOCK_ACCEPTOR> Logging_Acceptor;
-
-
-static const u_short PORT = ACE_DEFAULT_SERVER_PORT;
-
-int main (int argc, char *argv[])
-{
- g_reactor = new ACE_Reactor;
-
- cout << "main is " << getpid() << endl;
-
- // Acceptor factory.
- Logging_Acceptor peer_acceptor;
-
- if (peer_acceptor.open (ACE_INET_Addr (PORT)) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), -1);
-
- else if (g_reactor->register_handler (&peer_acceptor, ACE_Event_Handler::READ_MASK) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "registering service with ACE_Reactor\n"), -1);
-
- ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT);
-
- // Run forever, performing logging service.
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) starting up server logging daemon\n"));
-
- // Perform logging service until QUIT_HANDLER receives SIGINT.
- while ( !finished )
- g_reactor->handle_events ();
-
- ACE_DEBUG ((LM_DEBUG, "(%P|%t) shutting down server logging daemon\n"));
-
- return 0;
-}