Mercurial > projects > ldc
diff tango/tango/net/cluster/tina/RollCall.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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tango/tango/net/cluster/tina/RollCall.d Fri Jan 11 17:57:40 2008 +0100 @@ -0,0 +1,85 @@ +/******************************************************************************* + + 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.RollCall; + +private import tango.net.cluster.NetworkMessage; + +/****************************************************************************** + + An IMessage used by the cluster client and server during discovery + lookup and liveness broadcasts. The client broadcasts one of these + at startup to see which servers are alive. The server responds with + a reply RollCall stating its name and port. The server will also + broadcast one of these when it first starts, such that any running + clients can tell the server has 'recovered'. + + Requests and responses are distinguished by the content of the msg: + a type value of Request indicates a request from a client and other + values are considered to be responses from servers. + +******************************************************************************/ + +class RollCall : NetworkMessage +{ + enum {Request, Cache, Queue, Task} + + char[] addr; // server name & port pair + uint type; // request, cache, queue, or task server? + + /********************************************************************** + + A request from a client + + **********************************************************************/ + + this () + { + } + + /********************************************************************** + + Response from a server + + **********************************************************************/ + + this (int type) + { + this.type = type; + } + + /********************************************************************** + + Freeze the content + + **********************************************************************/ + + void read (IReader input) + { + super.read (input); + input (addr) (type); + } + + /********************************************************************** + + Defrost the content + + **********************************************************************/ + + void write (IWriter output) + { + super.write (output); + output (addr) (type); + } +} + +