Mercurial > projects > ldc
view tango/tango/net/cluster/tina/TaskServer.d @ 132:1700239cab2e trunk
[svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.
Lots of bugfixes...
This build is not suitable for most things.
author | lindquist |
---|---|
date | Fri, 11 Jan 2008 17:57:40 +0100 |
parents | |
children |
line wrap: on
line source
/******************************************************************************* copyright: Copyright (c) 2004 Kris Bell. All rights reserved license: BSD style: $(LICENSE) version: July 2004: Initial release author: Kris *******************************************************************************/ module tango.net.cluster.tina.TaskServer; private import tango.net.cluster.tina.RollCall, tango.net.cluster.tina.TaskThread, tango.net.cluster.tina.ClusterServer; /****************************************************************************** Extends the ClusterServer to glue cluster-rpc support together ******************************************************************************/ class TaskServer : ClusterServer { /********************************************************************** Construct this server with the requisite attributes. The 'bind' address is the local address we'll be listening on **********************************************************************/ this (InternetAddress bind, Logger logger) { super ("task", bind, logger); } /********************************************************************** Start the server **********************************************************************/ override void start (bool reuse=false) { super.start (new RollCall(RollCall.Task), reuse); } /********************************************************************** Factory method for servicing a request. We just create a new TaskThread to handle requests from the client. The thread does not exit until the socket connection is broken by the client, or some other exception occurs. **********************************************************************/ override void service (IConduit conduit) { (new TaskThread (this, conduit, cluster)).execute; } } version (TaskServer) { import tango.io.Console; import tango.net.cluster.tina.CmdParser; void main (char[][] args) { auto arg = new CmdParser ("task.server"); if (args.length > 1) arg.parse (args[1..$]); if (arg.help) Cout ("usage: taskserver -port=number -log[=trace, info, warn, error, fatal, none]").newline; else (new TaskServer(new InternetAddress(arg.port), arg.log)).start; } }