summaryrefslogtreecommitdiff
path: root/java/netsvcs
diff options
context:
space:
mode:
Diffstat (limited to 'java/netsvcs')
-rw-r--r--java/netsvcs/Logger/DefaultLMR.java36
-rw-r--r--java/netsvcs/Logger/LogMessageReceiver.java33
-rw-r--r--java/netsvcs/Logger/LogRecord.java188
-rw-r--r--java/netsvcs/Logger/Makefile23
-rw-r--r--java/netsvcs/Logger/ServerLoggingAcceptor.java171
-rw-r--r--java/netsvcs/Logger/ServerLoggingHandler.java105
-rw-r--r--java/netsvcs/Naming/Makefile24
-rw-r--r--java/netsvcs/Naming/NameAcceptor.java306
-rw-r--r--java/netsvcs/Naming/NameHandler.java521
-rw-r--r--java/netsvcs/Naming/NameProxy.java351
-rw-r--r--java/netsvcs/Naming/NameReply.java145
-rw-r--r--java/netsvcs/Naming/NameRequest.java331
-rwxr-xr-xjava/netsvcs/Time/Clerk.java23
-rwxr-xr-xjava/netsvcs/Time/Makefile26
-rwxr-xr-xjava/netsvcs/Time/Server.java23
-rwxr-xr-xjava/netsvcs/Time/TSClerkHandler.java296
-rwxr-xr-xjava/netsvcs/Time/TSClerkProcessor.java267
-rwxr-xr-xjava/netsvcs/Time/TSRequestAcceptor.java142
-rwxr-xr-xjava/netsvcs/Time/TSRequestHandler.java106
-rwxr-xr-xjava/netsvcs/Time/TSServerAcceptor.java100
-rwxr-xr-xjava/netsvcs/Time/TSServerHandler.java99
21 files changed, 0 insertions, 3316 deletions
diff --git a/java/netsvcs/Logger/DefaultLMR.java b/java/netsvcs/Logger/DefaultLMR.java
deleted file mode 100644
index 19e319de015..00000000000
--- a/java/netsvcs/Logger/DefaultLMR.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Logger
- *
- * = FILENAME
- * DefaultLMR.java
- *
- *
- *@author Everett Anderson
- *
- *************************************************/
-package netsvcs.Logger;
-
-import java.io.*;
-
-/**
- *
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>
- * The LogMessageReceiver removes the code that handles a log message from
- * the logging service acceptor. The DefaultLMR simply calls the LogRecord's
- * print method.
- *
- * @see netsvcs.Logger.ServerLoggingAcceptor
- * @see netsvcs.Logger.LogRecord
- */
-class DefaultLMR implements LogMessageReceiver
-{
- public void logRecord (String hostname,
- LogRecord record)
- {
- record.print(hostname, true, System.err);
- }
-}
diff --git a/java/netsvcs/Logger/LogMessageReceiver.java b/java/netsvcs/Logger/LogMessageReceiver.java
deleted file mode 100644
index c001e06f2bd..00000000000
--- a/java/netsvcs/Logger/LogMessageReceiver.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Logger
- *
- * = FILENAME
- * LogMessageReceiver.java
- *
- *@author Everett Anderson
- *
- *************************************************/
-package netsvcs.Logger;
-
-import java.io.*;
-
-/**
- *
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>
- * The LogMessageReceiver removes the code that handles a log message from
- * the logging service acceptor. The DefaultLMR simply calls the LogRecord's
- * print method. Other implementations of this interface can be built and
- * given to the ServerLoggingAcceptor to change the result.
- *
- * @see netsvcs.Logger.ServerLoggingAcceptor
- * @see netsvcs.Logger.LogRecord
- */
-public interface LogMessageReceiver
-{
- public void logRecord (String hostname,
- LogRecord record);
-};
diff --git a/java/netsvcs/Logger/LogRecord.java b/java/netsvcs/Logger/LogRecord.java
deleted file mode 100644
index 0043c040f74..00000000000
--- a/java/netsvcs/Logger/LogRecord.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Logger
- *
- * = FILENAME
- * LogRecord.java
- *
- *@author Chris Cleeland, Everett Anderson
- *
- *************************************************/
-package netsvcs.Logger;
-
-import java.util.Date;
-import java.io.DataOutputStream;
-import java.io.DataInputStream;
-import java.io.PrintStream;
-import java.io.IOException;
-import JACE.OS.*;
-
-/**
- *
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>
- * Communicates logging information. Compatible with the C++ ACE
- * ACE_Log_Record class.
- *
- */
-public class LogRecord
-{
- final public int MAXLOGMSGLEN = 4 * 1024;
-
- private int type_;
- private int length_;
- private long msec_;
- private int pid_;
- private byte[] msgData_;
- private final static int numIntMembers = 5;
- private final static int sizeofIntInBytes = 4;
-
- /**
- * Create a default instance.
- */
- public LogRecord()
- {
- type(0);
- timeStamp((int)new Date().getTime());
- length(0);
- pid(0);
- }
-
- /**
- * Create a LogRecord. This is the designated initializer.
- * @param priority a numeric specification of the priority (ascending)
- * @param milliseconds time attached to the log entry in Unix <pre>time_t</pre> format
- * @param pid the process ID; not currently used
- */
- public LogRecord(int priority,
- long milliseconds,
- int pid)
- {
- type(priority);
- timeStamp(milliseconds);
- length(0);
- pid(pid);
- }
-
- /**
- * Conversion to string. Only includes the <pre>msgData_</pre> member.
- */
- public String toString()
- {
- return new String(msgData_);
- }
-
- /**
- * Place a textual representation of the record on a PrintStream.
- * @param hostname name of the host generating this record
- * @param verbose if <b>true</b>, print information in the form, (give example)
- * @param ps A PrintStream instance to which the output should go.
- * @see PrintStream,String
- */
- public void print(String hostname,
- boolean verbose,
- PrintStream ps)
- {
- String toprint;
- if (verbose)
- {
- Date now = new Date(this.timeStamp());
-
- /* 01234567890123456789012345 */
- /* Wed Oct 18 14:25:36 1989n0 */
- toprint = now.toString().substring(4) + "@"
- + hostname + "@" + pid_ + "@" + type_ + "@"
- + this.toString();
- }
- else
- {
- toprint = this.toString();
- }
- ps.println(toprint);
- }
-
- /**
- * Streaming methods
- */
- public void streamInFrom(DataInputStream dis) throws IOException
- {
- // Order here must match layout order in the C++ class.
- // This, of course, is VERY fragile, and ought not be used as
- // a model for anything except how NOT to do anything.
- length(dis.readInt());
- type(dis.readInt());
- this.timeStamp((long)dis.readInt() * 1000);
-
- // Skip smaller time resolution info since we're lucky if Java's
- // timer can handle more than millisecond precision, anyway
- dis.skipBytes(4);
-
- pid(dis.readInt());
-
- // Does readFully() allocate space for the buffer? Either
- // way, we won't have memory leaks :-)
- int dataLength = (int) (length_ - numIntMembers * sizeofIntInBytes);
-
- msgData_ = new byte[dataLength];
- dis.readFully(msgData_, 0, dataLength);
- }
-
- public void streamOutTo(DataOutputStream dos) throws IOException
- {
- dos.writeInt(length());
- dos.writeInt(type());
- dos.writeInt((int)(this.msec_ / 1000));
- dos.writeInt(0);
- dos.writeInt(pid());
-
- dos.write(msgData_);
- }
-
- /**
- * Accessor methods
- */
- public int type() { return type_; }
- public void type(int t) { type_ = t; }
-
- public int length() { return length_; }
- public void length(int l) { length_ = l; }
- private void setLen(int msgLen)
- { length(msgLen + numIntMembers * sizeofIntInBytes); }
-
- public long timeStamp() { return this.msec_; }
- public void timeStamp(long msec){ this.msec_ = msec; }
-
- public int pid() { return pid_; }
- public void pid(int p) { pid_ = p; }
-
- public byte[] msgData() { return msgData_; }
- public void msgData(byte[] m)
- {
- int size = m.length;
-
- if (size > MAXLOGMSGLEN)
- size = MAXLOGMSGLEN;
-
- this.msgData_ = new byte[size];
-
- System.arraycopy(m, 0, msgData_, 0, size);
-
- setLen(size);
- }
-
- public void msgData(String m)
- {
- byte temp[] = m.getBytes();
- if (temp.length > MAXLOGMSGLEN) {
- this.msgData_ = new byte[MAXLOGMSGLEN];
-
- System.arraycopy(temp, 0, msgData_, 0, MAXLOGMSGLEN);
- } else
- this.msgData_ = temp;
-
- setLen(msgData_.length);
- }
-};
-
diff --git a/java/netsvcs/Logger/Makefile b/java/netsvcs/Logger/Makefile
deleted file mode 100644
index a15f673eba0..00000000000
--- a/java/netsvcs/Logger/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# $Id$
-
-.SUFFIXES: .java .class
-
-JACE_WRAPPER = $(ACE_ROOT)/java
-
-all:
- javac -d ${JACE_WRAPPER}/classes $(files)
-doc:
- javadoc -d ${JACE_WRAPPER}/doc $(files) $(packages)
-
-files = LogMessageReceiver.java \
- DefaultLMR.java \
- LogRecord.java \
- ServerLoggingAcceptor.java \
- ServerLoggingHandler.java
-
-packages = netsvcs \
- netsvcs.Logger
-
-realclean:
- /bin/rm -rf ${JACE_WRAPPER}/classes/netsvcs/Logger
-
diff --git a/java/netsvcs/Logger/ServerLoggingAcceptor.java b/java/netsvcs/Logger/ServerLoggingAcceptor.java
deleted file mode 100644
index d5d4ae5220d..00000000000
--- a/java/netsvcs/Logger/ServerLoggingAcceptor.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Logger
- *
- * = FILENAME
- * ServerLoggingAcceptor.java
- *
- *@author Chris Cleeland, Everett Anderson
- *
- *************************************************/
-package netsvcs.Logger;
-
-import JACE.SOCK_SAP.*;
-import JACE.Connection.*;
-import JACE.OS.*;
-import java.io.*;
-import java.net.*;
-import JACE.Misc.*;
-
-/**
- *
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>
- * Acceptor: Listens on a specified port and launches ServerLoggingHandlers
- * in response to requests. A LogMessageReceiver can be specified on the
- * command line to change the way the logging service processes messages.
- *
- * @see netsvcs.Logger.ServerLoggingHandler, netsvcs.Logger.LogMessageReceiver
- */
-public class ServerLoggingAcceptor extends Acceptor implements Runnable
-{
- /** Main function to bootstrap the process
- *
- * Command line arguments:
- *
- * -p <port> Select a port for listening for requests
- * -r <class name> Specify a LogMessageReceiver (make sure it's a full class name)
- *
- */
- public static void main (String [] args)
- {
- ServerLoggingAcceptor sla = new ServerLoggingAcceptor();
-
- sla.init(args);
- }
-
- /**
- * Receives the command line and launches its own thread
- */
- public int init (String [] args)
- {
- this.parseArgs(args);
-
- // If the user didn't specify a LogMessageReceiver, use the default
- // (which just calls a print method on LogMessage)
- if (this.receiver_ == null)
- this.receiver_ = new DefaultLMR();
-
- new Thread (this).start();
- return 0;
- }
-
- /**
- * Specify what LogMessageReceiver to use
- */
- public void setLMR(LogMessageReceiver receiver)
- {
- this.receiver_ = receiver;
- }
-
- /**
- * Accessor for the LogMessageReceiver
- */
- public LogMessageReceiver getLMR ()
- {
- return this.receiver_;
- }
-
- /**
- * Create a new ServerLoggingHandler
- */
- protected SvcHandler makeSvcHandler ()
- throws InstantiationException, IllegalAccessException
- {
- return new netsvcs.Logger.ServerLoggingHandler (this.receiver_);
- }
-
- /**
- * Run forever accepting new connections
- */
- public void run ()
- {
- try {
-
- this.open (this.port_);
- while (true)
- this.accept();
-
- } catch (SocketException e)
- {
- ACE.ERROR ("Socket Exception: " + e);
- }
- catch (InstantiationException e)
- {
- ACE.ERROR (e);
- }
- catch (IllegalAccessException e)
- {
- ACE.ERROR (e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
-
- ACE.ERROR("ServerLoggingAcceptor has exited");
- }
-
- /**
- * Process the command line
- */
- protected void parseArgs (String args[])
- {
- String s;
- GetOpt opt = new GetOpt (args, "p:r:");
- for (int c; (c = opt.next ()) != -1; )
- {
- switch (c)
- {
- case 'p':
- s = opt.optarg ();
- this.port_ = (new Integer (s)).intValue ();
- break;
- case 'r':
- // Load the LMR with the given name
- s = new String(opt.optarg ());
- Class LMRfactory;
- try {
- LMRfactory = Class.forName(s);
-
- receiver_ = (LogMessageReceiver)LMRfactory.newInstance();
-
- } catch (ClassNotFoundException e) {
- ACE.ERROR("Unable to find LMR factory: " + e);
- } catch (InstantiationException e) {
- ACE.ERROR("Creating LMR: " + e);
- } catch (IllegalAccessException e) {
- ACE.ERROR("Creating LMR: " + e);
- }
- // Any of the above exceptions will result in just using the
- // default LMR
- break;
- default:
- ACE.ERROR ("Unknown argument: " + c);
- ACE.ERROR ("Valid args: -p <port> -r <LogMessageReceiver name>");
- break;
- }
- }
- }
-
- private int port_ = ACE.DEFAULT_SERVER_PORT;
- private LogMessageReceiver receiver_ = null;
-};
-
-
-
-
-
-
diff --git a/java/netsvcs/Logger/ServerLoggingHandler.java b/java/netsvcs/Logger/ServerLoggingHandler.java
deleted file mode 100644
index 40f1aee8440..00000000000
--- a/java/netsvcs/Logger/ServerLoggingHandler.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Logger
- *
- * = FILENAME
- * ServerLoggingHandler.java
- *
- *@author Chris Cleeland, Everett Anderson
- *
- *************************************************/
-package netsvcs.Logger;
-
-import JACE.SOCK_SAP.*;
-import JACE.Connection.*;
-import JACE.OS.*;
-import java.util.*;
-import java.io.*;
-
-/**
- *
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>
- * Created by ServerLoggingAcceptor every time a client connects. This reads
- * a logging statement passes it to the LogMessageReceiver for processing.
- * </blockquote>
- *
- * @see netsvcs.Logger.ServerLoggingAcceptor
- */
-public class ServerLoggingHandler extends SvcHandler
-{
- // Processes log messages
- private LogMessageReceiver receiver_;
-
- /**
- * Constructor
- *
- *@param receiver LogMessageReceiver that handles what to do with a message
- */
- public ServerLoggingHandler (LogMessageReceiver receiver)
- {
- super();
- this.receiver_ = receiver;
- }
-
- /**
- * Start this handler in its own thread
- */
- public int open(Object obj)
- {
- new Thread (this).start();
- return 0;
- }
-
- /**
- * Accessor: get the host name of the connected client
- */
- protected String hostName ()
- {
- return new String(this.peer().socket().getInetAddress().getHostName());
- }
-
- /**
- * Receive input from the client, and send it to the LMR. This is the
- * main loop for this thread.
- */
- public void run()
- {
- DataInputStream dis = new DataInputStream(this.peer().inputStream());
-
- for (;;)
- {
- // Messages arrive in the ACE.LogRecord format
- //
- // Hey! We need exception catching in here too!
- try
- {
- // Reconstitute a log message from the wire
- LogRecord rec = new LogRecord();
-
- rec.streamInFrom(dis);
-
- // Give the record to the log processor
- this.receiver_.logRecord(this.hostName(),
- rec);
- }
- catch (EOFException eof)
- {
- try {
- this.stream_.close();
- } catch (IOException n) { }
-
- return;
- }
- catch (IOException ioe)
- {
- ACE.ERROR(Thread.currentThread().getName()
- + ": "
- + ioe);
- }
- }
- }
-};
-
diff --git a/java/netsvcs/Naming/Makefile b/java/netsvcs/Naming/Makefile
deleted file mode 100644
index af49d9061d8..00000000000
--- a/java/netsvcs/Naming/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Makefile
-# $Id$
-
-.SUFFIXES: .java .class
-
-JACE_WRAPPER = $(WRAPPER_ROOT)/java
-
-all:
- javac -d ${JACE_WRAPPER}/classes $(files)
-doc:
- javadoc -d ${JACE_WRAPPER}/doc $(files) $(packages)
-
-files = NameAcceptor.java \
- NameHandler.java \
- NameRequest.java \
- NameReply.java \
- NameProxy.java \
-
-packages = netsvcs \
- netsvcs.Naming
-
-realclean:
- /bin/rm -rf ${JACE_WRAPPER}/classes/netsvcs/Naming
-
diff --git a/java/netsvcs/Naming/NameAcceptor.java b/java/netsvcs/Naming/NameAcceptor.java
deleted file mode 100644
index f704504ee3c..00000000000
--- a/java/netsvcs/Naming/NameAcceptor.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Naming
- *
- * = FILENAME
- * NameAcceptor.java
- *
- * Listens on the specified port (command line option) and launches
- * NameHandlers when connections are made. Each NameHandler runs in
- * its own thread.
- *
- * The hash table for the mapping and a timer queue are created here.
- * Periodically the mapping is written out to a file.
- *
- * A small main program is included to start things off. If the
- * data file exists, it is read into memory. Currently the service
- * stores the entire mapping in memory at all times. The mapping is
- * dumped to a file at regular intervals.
- *
- *@see netsvcs.Naming.NameHandler
- *
- *@author Everett Anderson
- *
- *************************************************/
-package netsvcs.Naming;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Misc.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-import JACE.ASX.TimeValue;
-
-public class NameAcceptor extends Acceptor implements Runnable
-{
- /**
- * Constructor
- */
- public NameAcceptor ()
- {
- super();
-
- // Create the hash table and timer queue
- this.mapping_ = new Hashtable();
- this.tq_ = new TimerQueue(true);
- }
-
- /**
- * Simple main program. Command line options are
- * described under parseArgs.
- */
- public static void main (String [] args)
- {
- // Simple main program to get things rolling
- NameAcceptor na = new NameAcceptor();
-
- na.init(args);
- }
-
-
- /**
- * Close the socket when shutting down
- */
- public int fini ()
- {
- try
- {
- this.done_ = true;
- this.sockAcceptor_.close();
- }
- catch (IOException e)
- {
- ACE.ERROR("" + e);
- return -1;
- }
-
- return 0;
- }
-
- /**
- * Stops accepting when suspended
- */
- public int suspend()
- {
- this.suspended_ = true;
- return 0;
- }
-
- /**
- * Resumes accepting
- */
- public int resume()
- {
- this.suspended_ = false;
- return 0;
- }
-
-
- /**
- * Runs this instance in its own thread
- */
- public int init (String [] args)
- {
- // Parse arguments
- this.parseArgs (args);
-
- System.out.println("Starting naming service on port: " + this.port_);
-
- // Run in own thread of control so that we don't block the caller
- new Thread (this).start();
-
- return 0;
- }
-
- /**
- *
- * Main loop: launches NameHandlers in separate threads whenever a
- * connection request is made
- */
- public void run ()
- {
- // Load the hash table from disk
- this.loadTable();
-
- // Schedule to write out the memory copy of the hash table at regular
- // intervals
- this.tq_.scheduleTimer(this,
- null,
- new TimeValue(this.updateInterval_),
- new TimeValue(this.updateInterval_));
-
- try
- {
- // Create new NameHandlers as requests come in
- this.open (this.port_);
- while (!this.done_) {
-
- if (!this.suspended_)
- this.accept ();
- }
- }
- catch (SocketException e)
- {
- ACE.ERROR ("Socket Exception: " + e);
- }
- catch (InstantiationException e)
- {
- ACE.ERROR (e);
- }
- catch (IllegalAccessException e)
- {
- ACE.ERROR (e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- }
-
- /**
- * Create a new NameHandler
- */
- protected SvcHandler makeSvcHandler ()
- throws InstantiationException, IllegalAccessException
- {
- return new netsvcs.Naming.NameHandler (this.mapping_);
- }
-
- /**
- * Process the command line. The following options are available:
- *
- * -p <port> Port number for listening
- * -f <filename> Name of the database file
- * -t <time> Mapping write-out time interval (in seconds)
- *
- */
- protected void parseArgs (String args[])
- {
- String s;
- GetOpt opt = new GetOpt (args, "p:f:t:");
- for (int c; (c = opt.next ()) != -1; )
- {
- switch (c)
- {
- // Specify port
- case 'p':
- s = opt.optarg ();
- this.port_ = (new Integer (s)).intValue ();
- break;
- // Specify file name of the database
- case 'f':
- s = opt.optarg ();
- this.filename_ = new String(s);
- break;
- // Specify time interval to write out the table
- case 't':
- s = opt.optarg ();
- this.updateInterval_ = (new Integer (s)).intValue();
- break;
- default:
- ACE.ERROR ("Unknown argument: " + c);
- break;
- }
- }
- }
-
- /**
- * Loads the hash table into memory from the specified
- * file. Uses ObjectInputStream.
- */
- protected void loadTable ()
- {
- File file = new File(this.filename_);
- FileInputStream fis;
- ObjectInputStream ois;
-
- Hashtable ht = null;
-
- try {
-
- if ((file.exists()) && (file.canRead())) {
-
- fis = new FileInputStream (file);
-
- ois = new ObjectInputStream(fis);
-
- ht = (Hashtable)ois.readObject();
- } else
- return;
- } catch (ClassNotFoundException e) {
- ACE.ERROR(e);
- } catch (StreamCorruptedException e) {
- ACE.ERROR(e);
- } catch (SecurityException e) {
- ACE.ERROR(e);
- } catch (IOException e) {
- ACE.ERROR(e);
- }
-
- if (ht != null)
- this.mapping_ = ht;
-
- }
-
- /**
- * Writes the table out to the specified file.
- */
- protected void saveTable ()
- {
- FileOutputStream fos;
- ObjectOutputStream oos;
-
- try {
-
- fos = new FileOutputStream(this.filename_);
- oos = new ObjectOutputStream(fos);
-
- oos.writeObject(this.mapping_);
-
- oos.flush();
-
- oos.close();
-
- } catch (OptionalDataException e) {
- ACE.ERROR(e);
- } catch (NotSerializableException e) {
- ACE.ERROR(e);
- } catch (IOException e) {
- ACE.ERROR(e);
- }
- }
-
- /**
- * Call back for the TimerQueue. This calls the method to save the
- * hash table. The default time out is 60 seconds.
- */
- public int handleTimeout (TimeValue tv, Object obj)
- {
- this.saveTable();
-
- return 0;
- }
-
- // Port to listen on
- private int port_ = ACE.DEFAULT_SERVER_PORT;
-
- // Mapping data structure
- Hashtable mapping_ = null;
-
- // Default file name
- String filename_ = "namedata.dat";
-
- // How often to save the table (seconds)
- int updateInterval_ = 60;
-
- // Calls handleTimeout at updateInterval_ intervals
- TimerQueue tq_ = null;
-
- boolean done_ = false;
- boolean suspended_ = false;
-
-}
-
diff --git a/java/netsvcs/Naming/NameHandler.java b/java/netsvcs/Naming/NameHandler.java
deleted file mode 100644
index a619eab0733..00000000000
--- a/java/netsvcs/Naming/NameHandler.java
+++ /dev/null
@@ -1,521 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Naming
- *
- * = FILENAME
- * NameHandler.java
- *
- * An instance of this class is created in a separate thread for each connection
- * request received by the NameAcceptor. All interaction between the
- * client's requests and the database are handled here.
- *
- * In general, the user binds a name to a (value, type) pair. The type is just
- * treated as just another String (in the C++ version the name and value are
- * arrays of 16 bit data types and the type is an array of 8 bit chars).
- *
- * For this to work in the hash table scheme, the type and value are wrapped in
- * a ValueType class defined at the end of this file.
- *
- * This is compatible with the C++ ACE remote name service.
- *
- *@see netsvcs.Naming.NameAcceptor
- *@see netsvcs.Naming.NameRequest
- *@see netsvcs.Naming.NameReply
- *
- *@author Everett Anderson
- *
- *************************************************/
-package netsvcs.Naming;
-
-import java.io.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-import JACE.SOCK_SAP.*;
-
-public class NameHandler extends SvcHandler
-{
- /**
- * Constructor
- *
- * @param mapping Hash table created in NameAcceptor
- */
- public NameHandler (Hashtable mapping)
- {
- super();
-
- this.mapping_ = mapping;
- }
-
- /**
- * Starts this handler in its own thread
- *
- */
- public int open (Object obj)
- {
- new Thread (this).start ();
- return 0;
- }
-
- /**
- * Main loop that this thread executes. Waits for connection requests and
- * creates a NameHandler thread for each.
- *
- */
- public void run ()
- {
- ACE.DEBUG("NameHandler instance running");
-
- // Can't assume the SOCKStream uses DataInputStream, so put one
- // over its OutputStream
- DataInputStream dis = new DataInputStream (this.peer().inputStream());
-
- // The NameRequest is the how all requests come in to the naming service.
- NameRequest nameRequest = new NameRequest();
-
- // Main loop -- wait for requests
- int msgLen;
- try
- {
- while (!this.done_)
- {
- // Read a NameRequest from the stream
- nameRequest.streamInFrom(dis);
-
- // Decide what to do based on the request type
- this.dispatch(nameRequest);
-
- }
- }
- catch (NullPointerException e)
- {
- ACE.ERROR ("Connection reset by peer");
- }
- catch (EOFException e)
- {
- /* The client has shut down the connection */
-
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- finally
- {
- try
- {
- this.peer ().close ();
- }
- catch (IOException e)
- {
- }
- }
- }
-
-
- /**
- *
- * This is the point at which a request is sent to the various methods
- * that fulfill it. Switches on the request type -- bind, rebind, resolve,
- * etc.
- *
- *@param nameRequest The request to fill
- */
- void dispatch(NameRequest nameRequest) throws IOException
- {
-
- // Call the various other member functions based on the
- // message type of the request -- bind, rebind, etc.
- switch (nameRequest.requestType())
- {
- case NameRequest.BIND:
- this.bind(nameRequest, false);
- break;
- case NameRequest.REBIND:
- this.bind(nameRequest, true);
- break;
- case NameRequest.RESOLVE:
- this.resolve(nameRequest);
- break;
- case NameRequest.UNBIND:
- this.unbind(nameRequest);
- break;
- case NameRequest.LIST_NAMES:
- this.listByName(nameRequest.name(), false);
- break;
- case NameRequest.LIST_VALUES:
- this.listByValue(nameRequest.name(), false);
- break;
- case NameRequest.LIST_TYPES:
- this.listByType(nameRequest.name(), false);
- break;
- case NameRequest.LIST_NAME_ENTRIES:
- this.listByName(nameRequest.name(), true);
- break;
- case NameRequest.LIST_VALUE_ENTRIES:
- this.listByValue(nameRequest.name(), true);
- break;
- case NameRequest.LIST_TYPE_ENTRIES:
- this.listByType(nameRequest.name(), true);
- break;
- default:
- System.err.println("unknown type");
-
- ACE.ERROR("Unknown type: " + nameRequest.requestType());
-
- // Send a failure message. This will only work if the other
- // side is expecting something like a NameReply rather than
- // a NameRequest. It would've been better to have everything
- // use NameRequests to avoid this kind of thing.
- NameReply reply = new NameReply(NameReply.FAILURE, 0);
- reply.streamOutTo(this.peer());
-
- break;
- }
-
- }
-
- /**
- *
- * Bind a name and a (value, type) pair. All this data is given in the
- * NameRequest from the client. Returns a NameReply back to the client
- * with either Reply.SUCCESS or Reply.FAILURE as the type.
- *
- *@param request NameRequest given by the client
- *@param rebind Is this a rebind or not?
- */
- void bind (NameRequest request, boolean rebind) throws IOException
- {
- // The hash table entries consists of (String name, ValueType data) pairs, so
- // create the appropriate ValueType
- ValueType vt = new ValueType(request.type(),
- request.value());
-
- // Reply to tell sender of success or failure
- NameReply reply = new NameReply();
-
- // If it's a rebind request, overwrite the old entry. If the key doesn't
- // exist, add it. If it does exist and it's not a bind request, return
- // a failure code via a NameReply.
- if ((rebind) || (!this.mapping_.containsKey(request.name()))) {
-
- System.err.println("Binding: " + request.name() + " and " + vt.value_);
-
- // Add/Update the entry in the hash table
- this.mapping_.put(request.name(), vt);
-
- // Set the reply code to success
- reply.type(NameReply.SUCCESS);
-
- } else {
-
- ACE.DEBUG("Key " + request.name() + " already exists");
-
- // Set reply code to failure
- reply.type(NameReply.FAILURE);
-
- // reply error code unused as far as I know
- }
-
- reply.streamOutTo(this.peer());
- }
-
- /**
- * Given a name, this looks up and returns the type and value. This is
- * done by sending back a full NameRequest with the correct info. If
- * there is a problem, an "empty" NameRequest is returned -- it has no
- * name, type, or value fields.
- *
- *@param request NameRequest sent by the client (has the name to lookup)
- */
- void resolve (NameRequest request) throws IOException
- {
- // A NameRequest is also used in response
- NameRequest result;
-
- // Wrap a DataOutputStream around the socket's output stream
- // (the socket should already have at least a BufferedOutputStream)
- DataOutputStream dos = new DataOutputStream(this.peer().outputStream());
-
- // If the requested name is in the hash table, return the data
- if (this.mapping_.containsKey(request.name())) {
-
- // Get the data pair based on the name
- ValueType vt = (ValueType)this.mapping_.get(request.name());
-
- ACE.DEBUG("Good resolve: " + vt.value_);
-
- // Fill the reply structure
- result = new NameRequest(NameRequest.RESOLVE,
- null,
- vt.value_,
- vt.type_,
- null);
-
- } else {
-
- // Otherwise return a null response
- result = new NameRequest(NameRequest.RESOLVE,
- null,
- null,
- null,
- null);
-
- }
-
- // Send the result to the socket
- // result.streamOutTo(dos);
-
- result.streamOutTo(this.peer());
-
- }
-
- /**
- *
- * Given a name, remove its entry in the mapping. Returns a NameReply
- * to the client with NameReply.SUCCESS or NameReply.FAILURE.
- *
- *@param request NameRequest from the client (has the name to remove)
- */
- void unbind (NameRequest request) throws IOException
- {
- NameReply reply = new NameReply();
-
- // If the given key isn't in the table, return an error
- // Otherwise remove it. Uses a NameReply to respond.
- if (!this.mapping_.containsKey(request.name()))
- reply.type(NameReply.FAILURE);
- else {
- this.mapping_.remove(request.name());
- reply.type(NameReply.SUCCESS);
- }
-
- // Send the reply out to the socket
- reply.streamOutTo(this.peer());
- }
-
- /**
- *
- * Given a pattern string (given in NameRequest's name field), this
- * finds all the entries in the mapping which have a name that begins with
- * the string. Each one is sent back separately via a NameRequest, and this
- * sequence is followed by a blank NameRequest.
- *
- *@param pattern Pattern to find (what result names should begin with)
- *@param completeLookup Should the value and type be returned as well?
- */
- void listByName (String pattern, boolean completeLookup) throws IOException
- {
- // Get a listing of all the keys in the hash table
- Enumeration enum = this.mapping_.keys();
-
- // References used in the loop
- String name;
- ValueType vt;
-
- // A NameRequest is used to return each item corresponding to the pattern.
- NameRequest result = new NameRequest((completeLookup ? NameRequest.LIST_NAMES :
- NameRequest.LIST_NAME_ENTRIES),
- null,
- null,
- null,
- null);
-
- // Keep ourselves safe from null pointer exceptions
- if (pattern == null)
- pattern = new String("");
-
- // Scan through all the elements
- while (enum.hasMoreElements()) {
-
- // Get a key
- name = (String)enum.nextElement();
-
- // Does it fit the pattern?
- if (name.startsWith(pattern)) {
-
- // Set the result name
- result.name(name);
-
- // Only make another hash table request if the user
- // wants all the data
- if (completeLookup) {
-
- // Get data from the hash table
- vt = (ValueType)mapping_.get(name);
-
- // Set the rest of the data
- result.type(vt.type_);
- result.value(vt.value_);
- }
-
- // Send it to the socket
- result.streamOutTo(this.peer());
- }
- }
-
- // Send final null message
- result.name(null);
- result.type(null);
- result.value(null);
- result.requestType(NameRequest.MAX_ENUM);
- result.streamOutTo(this.peer());
- }
-
- /**
- *
- * Given a pattern string (given in NameRequest's name field), this
- * finds all the entries in the mapping which have a type that begins with
- * the string. Each one is sent back separately via a NameRequest, and this
- * sequence is followed by a blank NameRequest.
- *
- *@param pattern Pattern to find (what result types should begin with)
- *@param completeLookup Should the value be returned as well? This is only
- * used to decide between LIST_TYPES and LIST_TYPE_ENTRIES
- * since we might as well send back both if we look them up
- * together.
- */
- void listByType (String pattern, boolean completeLookup) throws IOException
- {
- // Get a listing of all the keys in the hash table
- Enumeration enum = this.mapping_.keys();
-
- // References used in the loop
- String name;
- ValueType vt;
-
- // A NameRequest is used to return each item corresponding to the pattern.
- NameRequest result = new NameRequest((completeLookup ? NameRequest.LIST_TYPES :
- NameRequest.LIST_TYPE_ENTRIES),
- null,
- null,
- null,
- null);
- // Keep ourselves safe from null pointer exceptions
- if (pattern == null)
- pattern = new String("");
-
- // Scan through all the elements
- while (enum.hasMoreElements()) {
-
- // Get a key
- name = (String)enum.nextElement();
-
- // Have to get all the data for this entry to compare
- vt = (ValueType)mapping_.get(name);
-
- // Does it fit the pattern?
- if (vt.type_ != null)
- if (vt.type_.startsWith(pattern)) {
-
- // Set the result values
- result.name(name);
- result.type(vt.type_);
- result.value(vt.value_);
-
- // Send it out to the socket
- result.streamOutTo(this.peer());
- }
- }
-
- // Send final null message
- result.name(null);
- result.type(null);
- result.value(null);
- result.requestType(NameRequest.MAX_ENUM);
- result.streamOutTo(this.peer());
- }
- /**
- *
- * Given a pattern string (given in NameRequest's name field), this
- * finds all the entries in the mapping which have a value that begins with
- * the string. Each one is sent back separately via a NameRequest, and this
- * sequence is followed by a blank NameRequest.
- *
- *@param pattern Pattern to find (what result values should begin with)
- *@param completeLookup Should the type be returned as well? This is only
- * used to decide between LIST_VALUES and LIST_VALUE_ENTRIES
- * since we might as well send back both if we look them up
- * together.
- */
-
- void listByValue (String pattern, boolean completeLookup) throws IOException
- {
- // Get a listing of all the keys in the hash table
- Enumeration enum = this.mapping_.keys();
-
- // References used in the loop
- String name;
- ValueType vt;
-
- // A NameRequest is used to return each item corresponding to the pattern.
- NameRequest result = new NameRequest((completeLookup ? NameRequest.LIST_VALUES :
- NameRequest.LIST_VALUE_ENTRIES),
- null,
- null,
- null,
- null);
- // Keep ourselves safe from null pointer exceptions
- if (pattern == null)
- pattern = new String("");
-
- // Scan through all the elements
- while (enum.hasMoreElements()) {
-
- // Get a key
- name = (String)enum.nextElement();
-
- // Have to get all the data for this entry to compare
- vt = (ValueType)mapping_.get(name);
-
- // Does it fit the pattern?
- if (vt.value_ != null)
- if (vt.value_.startsWith(pattern)) {
-
- // Set the result values
- result.name(name);
- result.type(vt.type_);
- result.value(vt.value_);
-
- // Send it out to the socket
- result.streamOutTo(this.peer());
- }
- }
-
- // Send final null message
- result.name(null);
- result.type(null);
- result.value(null);
- result.requestType(NameRequest.MAX_ENUM);
- result.streamOutTo(this.peer());
- }
-
- boolean done_ = false;
-
-
- // References to the hash table and the timer queue
- Hashtable mapping_;
-}
-
-
-/**
- * A simple wrapper to keep the type and value together in
- * the hash table.
- */
-class ValueType implements Serializable
-{
- /**
- * Constructor
- *
- *@param type Type string to include
- *@param value Value string to include
- */
- ValueType(String type, String value)
- { this.type_ = type; this.value_ = value; }
-
- public String type_;
- public String value_;
-}
-
diff --git a/java/netsvcs/Naming/NameProxy.java b/java/netsvcs/Naming/NameProxy.java
deleted file mode 100644
index 249f745f5ce..00000000000
--- a/java/netsvcs/Naming/NameProxy.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Naming
- *
- * = FILENAME
- * NameProxy.java
- *
- * This is a proxy which clients can use to interact with the naming service. They
- * open a SOCKStream to the service, and can then call simple bind and resolve
- * methods.
- *
- *@see netsvcs.Naming.NameAcceptor
- *@see netsvcs.Naming.NameHandler
- *
- *@author Everett Anderson
- *
- *************************************************/
-package netsvcs.Naming;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.SOCK_SAP.*;
-
-public class NameProxy
-{
- /**
- * Constructor
- *
- *@param socket A SOCKStream already connected to the naming service
- */
- public NameProxy(SOCKStream socket)
- {
- this.socket_ = socket;
- }
-
- /**
- * Attempt to bind the given data pair
- * @param name Name/key
- * @param value Value to bind
- *
- * @return True iff bind is successful
- */
- public boolean bind(String name, String value) throws IOException
- {
- return this.bind(name, value, null, false);
- }
-
- /**
- * Attempt to bind the given data triplet
- * @param name Name/key
- * @param value Value to bind
- * @param type Type to bind (another string)
- *
- * @return True iff the bind was successful
- */
- public boolean bind(String name, String value, String type) throws IOException
- {
- return this.bind(name, value, type, false);
- }
-
- /**
- * The most generic of the bind methods. Allows factoring out of common code. Not public.
- */
- boolean bind (String name, String value, String type, boolean rebind) throws IOException
- {
- // Create a new NameRequest with the desired info
- NameRequest request = new NameRequest(rebind ? NameRequest.REBIND : NameRequest.BIND,
- name,
- value,
- type,
- null);
-
- // Send it to the naming service
- request.streamOutTo(this.socket_);
-
- // Create a reply
- NameReply reply = new NameReply();
-
- // Get the status of the bind from the naming service
- reply.streamInFrom(this.socket_);
-
- // Return true on success
- return (reply.type() == NameReply.SUCCESS ? true : false);
- }
-
- /**
- * Rebind a name and a value
- * @param name Name/key
- * @param value Bound value
- *
- * @return True if the rebind was successful
- */
- public boolean rebind (String name, String value) throws IOException
- {
- return this.bind(name, value, null, true);
- }
-
- /**
- * Rebind a name, value, and type
- * @param name Name/key
- * @param value Bound value
- * @param type Bound type
- *
- * @return True if rebind was successful
- */
- public boolean rebind (String name, String value, String type) throws IOException
- {
- return this.bind(name, value, type, true);
- }
- /**
- * Look up information bound to the given key/name.
- *
- * @param name Name/key
- *
- * @return Vector with three elements:
- * 0 Name/key
- * 1 Value
- * 2 Type
- */
- public Vector resolve (String name) throws IOException
- {
- // Create a new NameRequest with the name & request type
- NameRequest request = new NameRequest(NameRequest.RESOLVE,
- name,
- null,
- null,
- null);
-
- // Send it to the naming service
- request.streamOutTo(this.socket_);
-
- // Get a response (hopefully with the value and type)
- request.streamInFrom(this.socket_);
-
- // Dump the result into a vector
- Vector result = new Vector();
-
- result.addElement(request.name());
- result.addElement(request.value());
- result.addElement(request.type());
-
- // Cut it down to the size we need
- result.trimToSize();
-
- return result;
- }
-
- /**
- * Remove the entry in the mapping corresponding to the given name/key.
- *
- * @param name Name/key
- *
- * @return True if the unbind was successful
- */
- public boolean unbind (String name) throws IOException
- {
- NameRequest request = new NameRequest(NameRequest.UNBIND,
- name,
- null,
- null,
- null);
- // Send the request to the naming service
- request.streamOutTo(this.socket_);
-
- NameReply reply = new NameReply();
-
- // Get reply
- reply.streamInFrom(this.socket_);
-
- return (reply.type() == NameReply.SUCCESS ? true : false);
- }
-
- /**
- * Return a vector that's a list of names (Strings) that begin with
- * the given pattern
- * @param pattern Search pattern
- * @return Vector List of names
- */
- public Vector listNames (String pattern) throws IOException
- {
- return this.requestSimpleList(pattern, NameRequest.LIST_NAMES);
- }
-
- /**
- * Return a vector that's a list of types (Strings) that begin with
- * the given pattern
- * @param pattern Search pattern
- * @return Vector List of types
- */
- public Vector listTypes (String pattern) throws IOException
- {
- return this.requestSimpleList(pattern, NameRequest.LIST_TYPES);
- }
-
- /**
- * Return a vector that's a list of values (Strings) that begin with
- * the given pattern
- * @param pattern Search pattern
- * @return Vector List of values
- */
- public Vector listValues (String pattern) throws IOException
- {
- return this.requestSimpleList(pattern, NameRequest.LIST_VALUES);
- }
-
- /**
- * Non-public generic list gathering method
- */
- Vector requestSimpleList (String pattern, int type) throws IOException
- {
- // Make request for a list of the given type
- NameRequest request = new NameRequest(type,
- pattern,
- null,
- null,
- null);
- request.streamOutTo(this.socket_);
-
- // Allocate and reuse the DIS here rather than each time we call
- // streamInFrom
- DataInputStream dis = new DataInputStream(this.socket_.inputStream());
-
- request.streamInFrom(dis);
- Vector result = new Vector();
-
- // Add elements until there's a null message with the MAX_ENUM
- // request type
- while (request.requestType() != NameRequest.MAX_ENUM) {
- if (type == NameRequest.LIST_NAMES)
- result.addElement(new String(request.name()));
- else
- if (type == NameRequest.LIST_VALUES)
- result.addElement(new String(request.value()));
- else
- result.addElement(new String(request.type()));
-
- request.streamInFrom(dis);
- }
-
- // Adjust the vector to the minimal size
- result.trimToSize();
-
- return result;
- }
-
- /**
- * Get a vector with the entire data set for entries whose name begins with
- * the given pattern. Each element in the vector is another vector
- * with the following layout:
- * 0 Name/key
- * 1 Value
- * 2 Type
- *
- * @param pattern Search pattern
- * @return Vector of vectors
- */
- public Vector listNameEntries (String pattern) throws IOException
- {
- return this.requestComplexList(pattern, NameRequest.LIST_NAME_ENTRIES);
- }
-
- /**
- * Get a vector with the entire data set for entries whose value begins with
- * the given pattern. Each element in the vector is another vector
- * with the following layout:
- * 0 Name/key
- * 1 Value
- * 2 Type
- *
- * @param pattern Search pattern
- * @return Vector of vectors
- */
- public Vector listValueEntries (String pattern) throws IOException
- {
- return this.requestComplexList(pattern, NameRequest.LIST_VALUE_ENTRIES);
- }
-
- /**
- * Get a vector with the entire data set for entries whose type begins with
- * the given pattern. Each element in the vector is another vector
- * with the following layout:
- * 0 Name/key
- * 1 Value
- * 2 Type
- *
- * @param pattern Search pattern
- * @return Vector of vectors
- */
-
- public Vector listTypeEntries (String pattern) throws IOException
- {
- return this.requestComplexList(pattern, NameRequest.LIST_TYPE_ENTRIES);
- }
-
- /**
- * Non-public generic method for getting a a vector of vectors with the
- * entire data set for entries fitting the given pattern.
- */
- Vector requestComplexList (String pattern, int type) throws IOException
- {
- // Create request with desired type
- NameRequest request = new NameRequest(type,
- pattern,
- null,
- null,
- null);
- // Send it to the naming service
- request.streamOutTo(this.socket_);
-
- // Allocate the DIS here and reuse
- DataInputStream dis = new DataInputStream(this.socket_.inputStream());
-
- // Get the first response
- request.streamInFrom(dis);
- Vector result = new Vector();
-
- // Loop while we don't see a null response with the MAX_ENUM request type
- while (request.requestType() != NameRequest.MAX_ENUM) {
- Vector entry = new Vector();
-
- // Create an element in the main vector
- entry.addElement(request.name());
- entry.addElement(request.value());
- entry.addElement(request.type());
- entry.trimToSize();
-
- // Add it to the result
- result.addElement(entry);
-
- // Get another NameRequest
- request.streamInFrom(dis);
- }
-
- result.trimToSize();
-
- return result;
- }
-
- // The SOCKStream used to communication with the service
- SOCKStream socket_;
-};
-
-
-
-
-
-
-
diff --git a/java/netsvcs/Naming/NameReply.java b/java/netsvcs/Naming/NameReply.java
deleted file mode 100644
index 52ebb111574..00000000000
--- a/java/netsvcs/Naming/NameReply.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Naming
- *
- * = FILENAME
- * NameReply.java
- *
- * Used by the naming server to give quick status messages
- * to the client. This is only used to signal the success or
- * failure of bind and unbind requests. The error number is
- * unused (same in C++ version?).
- *
- *@see netsvcs.Naming.NameHandler
- *
- *@author Everett Anderson
- *
- *************************************************/
-package netsvcs.Naming;
-
-import java.io.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-import JACE.ASX.*;
-import JACE.SOCK_SAP.*;
-
-public class NameReply
-{
- // Success and failure constants
- public final static int SUCCESS = 1;
- public final static int FAILURE = 2;
-
- /**
- * Default Constructor
- */
- public NameReply ()
- {
- this.type_ = this.SUCCESS;
- this.errno_ = 0;
- }
-
- /**
- * Constructor
- *
- *@param type Success or failure
- *@param err Error number (unused)
- */
- public NameReply (int type, int err)
- {
- this.type_ = type;
- this.errno_ = err;
- }
-
- /**
- * Length accessor
- */
- int length()
- { return this.length_; }
-
- /**
- * Type accessor -- success or failure
- */
- int type()
- { return this.type_; }
-
- /**
- * Error number accessor
- */
- int errno()
- { return this.errno_; }
-
- /**
- * Set type
- * @param type New type
- */
- void type(int type)
- { this.type_ = type; }
-
- /**
- * Set error number
- * @param errno New error number
- */
- void errno(int errno)
- { this.errno_ = errno; }
-
- /**
- * Send this data to the given SOCKStream
- *
- *@param sock SOCKStream to send to
- */
- public void streamOutTo (JACE.SOCK_SAP.SOCKStream sock) throws IOException
- {
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- DataOutputStream dos = new DataOutputStream(bout);
-
- dos.writeInt(this.length_);
- dos.writeInt(this.type_);
- dos.writeInt(this.errno_);
-
- dos.flush();
-
- byte[] array = bout.toByteArray();
-
- sock.sendN(array, 0, array.length);
- }
-
- /**
- * Fill the fields of this instance from data in the socket
- *
- *@param sock SOCKStream to read from
- */
- public void streamInFrom (JACE.SOCK_SAP.SOCKStream sock) throws IOException
- {
- DataInputStream dis = new DataInputStream(sock.inputStream());
-
- this.streamInFrom(dis);
- }
-
- /**
- * Send this data to the given DataInputStream (which should be buffered)
- *
- *@param dis DataInputStream to use
- */
- public void streamInFrom (DataInputStream dis) throws IOException
- {
- int length = dis.readInt();
-
- if (length != this.length_)
- throw new IOException("Incorrect NameReply length");
-
- type_ = dis.readInt();
- errno_ = dis.readInt();
- }
-
- final static int length_ = 12;
-
- int type_;
- int errno_;
-}
-
-
-
-
diff --git a/java/netsvcs/Naming/NameRequest.java b/java/netsvcs/Naming/NameRequest.java
deleted file mode 100644
index f8a3579fa35..00000000000
--- a/java/netsvcs/Naming/NameRequest.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Naming
- *
- * = FILENAME
- * NameRequest.java
- *
- * Used by both client and naming server as detailed in
- * the NameHandler. This structure transfers information
- * including name, value, type, and request type.
- *
- *@see netsvcs.Naming.NameHandler
- *
- *@author Everett Anderson
- *
- *************************************************/
-package netsvcs.Naming;
-
-import java.io.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-import JACE.ASX.*;
-import JACE.SOCK_SAP.*;
-
-public class NameRequest
-{
- /**
- * Different types of requests
- */
- public static final int BIND = 1;
- public static final int REBIND = 2;
- public static final int RESOLVE = 3;
- public static final int UNBIND = 4;
- public static final int LIST_NAMES = 5;
- public static final int LIST_VALUES = 13;
- public static final int LIST_TYPES = 21;
- public static final int LIST_NAME_ENTRIES = 6;
- public static final int LIST_VALUE_ENTRIES = 14;
- public static final int LIST_TYPE_ENTRIES = 22;
- public static final int MAX_ENUM = 11;
-
- /**
- * Default constructor
- */
- public NameRequest ()
- {
- this.name_ = this.value_ = this.type_ = null;
- this.length_ = 32;
- }
-
- /**
- * Constructor
- *
- * @param requestType Type of request this is (BIND, REBIND, etc)
- * @param name Key to bind
- * @param value Value to bind
- * @param type Type to couple with the value
- * @param timeout Timer information (not really used in JACE yet)
- */
- public NameRequest(int requestType,
- String name,
- String value,
- String type,
- TimeValue timeout)
- {
- this.requestType_ = requestType;
-
- if (timeout == null) {
-
- this.blockForever_ = 1;
- this.secTimeout_ = 0;
- this.usecTimeout_ = 0;
- } else {
-
- this.blockForever_ = 0;
- this.secTimeout_ = (int)timeout.sec();
- this.usecTimeout_ = (int)timeout.getMilliTime() * 1000;
- }
-
- // This is necessary to make sure null pointer exceptions are
- // avoided. It makes it more consistent later on
- if (name == null)
- this.name_ = new String("");
- else
- this.name_ = new String(name);
- if (value == null)
- this.value_ = new String("");
- else
- this.value_ = new String(value);
- if (type == null)
- this.type_ = new String("");
- else
- this.type_ = new String(type);
-
- // Set the length
- this.calculateLength();
- }
-
- /**
- * Calculate the transmission length (bytes) of this structure
- */
- private void calculateLength()
- {
- // The type is sent as an 8 bit data type (chars in the C++ version),
- // but the name and value are sent as 16 bit chars (ACE_USHORT16's in C++)
-
- this.length_ = 34 + this.type_.length() + 2 * (this.name_.length() +
- this.value_.length());
-
- }
-
- /**
- * Return the transmission length
- */
- public int length()
- { return this.length_; }
-
- /**
- * Return the name/key
- */
- public String name()
- { return new String(this.name_); }
-
- /**
- * Set the name/key
- * @param name Name to set to
- */
- public void name(String name)
- {
- if (name == null)
- this.name_ = new String("");
- else
- this.name_ = new String(name);
-
- this.calculateLength();
- }
-
- /**
- * Return the value
- */
- public String value()
- { return new String(this.value_); }
-
- /**
- * Set the value
- * @param value New value
- */
- public void value(String value)
- {
- if (value == null)
- this.value_ = new String("");
- else
- this.value_ = new String(value);
-
- this.calculateLength();
- }
-
- /**
- * Return the type
- */
- public String type()
- { return new String(this.type_); }
-
- /**
- * Set the type
- * @param type New type
- */
- public void type(String type)
- {
- if (type == null)
- this.type_ = new String("");
- else
- this.type_ = new String(type);
-
- this.calculateLength();
- }
-
- /**
- * Fill the fields of this instance with data from the socket
- *
- *@param sock Socket to read from
- */
- public void streamInFrom (JACE.SOCK_SAP.SOCKStream sock) throws IOException
- {
- DataInputStream dis = new DataInputStream(sock.inputStream());
-
- this.streamInFrom(dis);
- }
-
- /**
- * Fill the fields of this instance from the given DataInputStream
- *
- *@param dis DataInputStream to read from
- */
- public void streamInFrom (DataInputStream dis) throws IOException
- {
- // Read the length (32 bits)
- length_ = dis.readInt();
-
- // Read the request type
- requestType_ = dis.readInt();
-
- // Can we block forever to fulfill this request? (unused)
- blockForever_ = dis.readInt();
-
- // How long until we should time out this request? (unused)
- secTimeout_ = dis.readInt();
- usecTimeout_ = dis.readInt();
-
- // The sizes are in bytes, and there are two bytes per char
- // (ACE_USHORT16 in C++ land)
- int nameLen = dis.readInt() / 2;
- int valueLen = dis.readInt() / 2;
-
- int typeLen = dis.readInt();
-
- // Read the name -- just read chars since they're 16 bits.
- // Hopefully the SOCKStream has buffered the data
- char buf[] = new char[nameLen];
- for (int i = 0; i < nameLen; i++) {
- buf[i] = dis.readChar();
- }
- this.name_ = new String(buf);
-
- // Read the value
- buf = new char[valueLen];
- for (int i = 0; i < valueLen; i++)
- buf[i] = dis.readChar();
- this.value_ = new String(buf);
-
- // Read the type -- now we can use readFully since
- // the type was sent as 8 bit chars
- byte tbuf[] = new byte[typeLen];
- dis.readFully(tbuf);
- this.type_ = new String(tbuf);
-
- // Skip the null char at the end
- dis.skipBytes(2);
- }
-
- /**
- * Send this NameRequest out to the given SOCKStream
- *
- *@param sock SOCKStream to send to
- */
- public void streamOutTo (JACE.SOCK_SAP.SOCKStream sock) throws IOException
- {
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- DataOutputStream dos = new DataOutputStream(bout);
-
- dos.writeInt(length_);
- dos.writeInt(requestType_);
- dos.writeInt(blockForever_);
- dos.writeInt(secTimeout_);
- dos.writeInt(usecTimeout_);
-
- // Byte sizes are sent, and the name and value are stored as
- // 16 bit char arrays (ACE_USHORT16 arrays in C++ version)
- dos.writeInt(this.name_.length() * 2);
- dos.writeInt(this.value_.length() * 2);
- dos.writeInt(this.type_.length());
-
- // Making sure the name_ wasn't null comes in handy
- // in situations like this
- dos.writeChars(this.name_);
- dos.writeChars(this.value_);
- dos.writeBytes(this.type_);
-
- // Null termination
- dos.writeChar(0);
-
- // Send it for real
- dos.flush();
-
- byte[] array = bout.toByteArray();
-
- sock.sendN(array, 0, array.length);
- }
-
- /**
- * Set the requestType
- *@param type Type to set to
- */
- public void requestType(int type)
- {
- this.requestType_ = type;
- }
-
- /**
- * Get requestType
- */
- public int requestType()
- {
- return this.requestType_;
- }
-
- /**
- * Can we block forever to fulfill the request? (unused)
- */
- public boolean blockForever()
- {
- return (this.blockForever_ != 0) ? true : false;
- }
-
- /**
- * Allowed timeout (unused)
- */
- public int secTimeout()
- {
- return this.secTimeout_;
- }
-
- int length_;
- int requestType_;
- int blockForever_;
- int secTimeout_;
- int usecTimeout_;
-
- String name_;
- String value_;
- String type_;
-};
-
-
-
-
-
-
diff --git a/java/netsvcs/Time/Clerk.java b/java/netsvcs/Time/Clerk.java
deleted file mode 100755
index f29e08e06f8..00000000000
--- a/java/netsvcs/Time/Clerk.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// ============================================================================
-//
-// = PACKAGE
-// netsvcs.Time
-//
-// = FILENAME
-// Clerk.java
-//
-// = AUTHOR
-// Prashant Jain
-//
-// ============================================================================
-package netsvcs.Time;
-
-// Test driver for the time server clerk
-public class Clerk
-{
- public static void main (String [] args)
- {
- TSClerkProcessor clerk = new TSClerkProcessor ();
- clerk.init (args);
- }
-}
diff --git a/java/netsvcs/Time/Makefile b/java/netsvcs/Time/Makefile
deleted file mode 100755
index 830c2646a8a..00000000000
--- a/java/netsvcs/Time/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-# $Id$
-
-.SUFFIXES: .java .class
-
-JACE_WRAPPER = $(ACE_ROOT)/java
-
-all:
- javac -d ${JACE_WRAPPER}/classes $(files)
-doc:
- javadoc -d ${JACE_WRAPPER}/doc $(files) $(packages)
-
-files = TSClerkProcessor.java \
- TSClerkHandler.java \
- TSRequestAcceptor.java \
- TSRequestHandler.java \
- TSServerAcceptor.java \
- TSServerHandler.java \
- Clerk.java \
- Server.java
-
-packages = netsvcs \
- netsvcs.Time
-
-realclean:
- /bin/rm -rf ${JACE_WRAPPER}/classes/netsvcs/Time
-
diff --git a/java/netsvcs/Time/Server.java b/java/netsvcs/Time/Server.java
deleted file mode 100755
index 6b44ddf8d9f..00000000000
--- a/java/netsvcs/Time/Server.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// ============================================================================
-//
-// = PACKAGE
-// netsvcs.Time
-//
-// = FILENAME
-// Server.java
-//
-// = AUTHOR
-// Prashant Jain
-//
-// ============================================================================
-package netsvcs.Time;
-
-// Test driver for the time service server
-public class Server
-{
- public static void main (String [] args)
- {
- TSServerAcceptor server = new TSServerAcceptor ();
- server.init (args);
- }
-}
diff --git a/java/netsvcs/Time/TSClerkHandler.java b/java/netsvcs/Time/TSClerkHandler.java
deleted file mode 100755
index fc89b69c45c..00000000000
--- a/java/netsvcs/Time/TSClerkHandler.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Time
- *
- * = FILENAME
- * TS_Clerk_Handler.java
- *
- *@author Prashant Jain, Everett Anderson
- *
- *************************************************/
-package netsvcs.Time;
-
-import java.io.*;
-import java.util.Date;
-import JACE.OS.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-import JACE.ASX.TimeValue;
-
-/**
- * <hr>
- * <p><h2>SYNOPSIS</h2>
- *
- * <blockquote>Requests the remote time on a server at regular
- * intervals.</blockquote>
- *
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>TSClerkHandlers are created by a TSClerkProcessor. There
- * is one handler for each server that the Clerk Processor factors into
- * its calculations.</blockquote>
- */
-public class TSClerkHandler extends SvcHandler
-{
- /**
- * Constructor. TSClerkProcessor specifies the server machine and
- * port, as well as the interval at which to make the query.
- */
- public TSClerkHandler (String hostname,
- int port,
- TimerQueue tq,
- int timeout,
- TSClerkProcessor parent)
- {
-
- this.hostname_ = hostname;
- this.port_ = port;
- this.tq_ = tq;
- this.timeout_ = timeout;
-
- this.initialTimeout_ = timeout;
- this.processor_ = parent;
-
- this.sendMsg_ = new String ("TIME_UPDATE_REQUEST");
- }
-
- /**
- * Called to start this handler in a new thread. This only
- * does it when the state of the handler is INITIALIZING.
- */
- public int open (Object obj)
- {
- if (this.state_ != RECONNECTING) {
-
- Thread test = new Thread(this);
-
- new Thread (this).start ();
-
- }
- return 0;
- }
-
- /**
- * Accessor - return the host name of the server
- */
- public String hostname ()
- {
- return this.hostname_;
- }
-
- /**
- * Accessor - return the port used to contact the server
- */
- public int port ()
- {
- return this.port_;
- }
-
- /**
- * Accessor - returns the difference between the local time and
- * the remote server.
- */
- public long delta ()
- {
- return this.delta_;
- }
-
- /**
- * Called when the thread starts. Schedules itself with the
- * timer queue.
- */
- public void run ()
- {
- this.timerId_ = this.tq_.scheduleTimer (this,
- null,
- new TimeValue (this.timeout_),
- new TimeValue (this.timeout_));
-
- }
-
- /**
- * Accessor - return the state
- */
- public int state()
- {
- return this.state_;
- }
-
- /**
- * Sets the state of the handler
- */
- public void state(int newState)
- {
- this.state_ = newState;
- }
-
- /**
- * Provides a new time out interval (exponentially increasing) so
- * that if the server doesn't respond, we don't keep trying to
- * reconnect as often. Maximum value is 5 minutes.
- */
- public int recalculateTimeout()
- {
- this.timeout_ *= 2;
-
- if (this.timeout_ > this.max_timeout_)
- this.timeout_ = max_timeout_;
-
- return this.timeout_;
- }
-
- /**
- * Start the recovery from a server disconnection by closing the
- * port and recalculating the timeout value.
- */
- protected void errorRecovery()
- {
- ACE.DEBUG("Time Service failure with server " + this.hostname_);
-
- this.timeout_ = this.recalculateTimeout();
-
- this.reschedule();
- }
-
- /**
- * Removes this handler from the timer queue, and reschedules it
- * (presumably with a new timeout value)
- */
- public void reschedule()
- {
- this.tq_.cancelTimer(this);
-
- this.timerId_ = this.tq_.scheduleTimer (this,
- null,
- new TimeValue (this.timeout_),
- new TimeValue (this.timeout_));
- }
-
- /**
- * Called back by the timer queue. If the handler isn't connected,
- * it tries to reconnect to the server. Otherwise, it requests
- * the remote time. The server is said to have disconnected when
- * an exception is thrown in the socket system, or the result is
- * a string with length <= 0.
- */
- public int handleTimeout (TimeValue tv, Object obj)
- {
- if (this.state_ != CONNECTED) {
-
- this.processor_.initiateConnection(this);
-
- // If still not connected
- if (this.state_ != CONNECTED) {
-
- // used to set state to reconnecting here
- this.state_ = RECONNECTING;
-
- // Reschedule to try again later
- this.errorRecovery();
- return 0;
- }
-
- // If connected, poll the server at the requested intervals
- this.resetTimeout();
- }
-
- StringBuffer ack = new StringBuffer ();
- int ackLen;
- try
- {
- // Used to calculate the turn-around time
- long sendTime = System.currentTimeMillis();
-
- this.peer ().send(this.sendMsg_);
- ackLen = this.peer ().recv (ack);
-
- long recvTime = System.currentTimeMillis();
-
- if (ackLen <= 0) {
-
- this.state_ = DISCONNECTED;
- return -1;
-
- } else {
-
- long delta = (new Long(ack.toString())).longValue() - recvTime;
-
- delta += (recvTime - sendTime) / 2;
-
- this.delta_ = delta;
-
- System.err.println("Delta: " + this.delta_);
- }
-
- }
- catch (NullPointerException e)
- {
- ACE.ERROR ("connection reset by peer");
- this.state_ = DISCONNECTED;
- return -1;
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- this.state_ = DISCONNECTED;
- return -1;
- }
-
- return 0;
- }
-
- /**
- * Resets the timer interval to be the one supplied to the
- * constructor.
- */
- public void resetTimeout()
- {
- this.timeout_ = this.initialTimeout_;
-
- this.reschedule();
- }
-
- private TSClerkProcessor processor_;
- // Reference used to re-establish connections
-
- public static final int MAX_RETRY_TIMEOUT = 300;
- // Wait at most 5 minutes before trying to reconnect
-
- // States
- public static final int CONNECTED = 0;
- public static final int DISCONNECTED = 1;
- public static final int RECONNECTING = 2;
-
- // If there has been a failure, try reconnecting
- // at least every MAX_RETRY_TIMEOUT seconds
- private int max_timeout_ = MAX_RETRY_TIMEOUT;
-
- // State of the handler
- private int state_ = DISCONNECTED;
-
- // Difference between the remote time and the local time.
- private long delta_ = 0;
-
- // Name of the remote host
- private String hostname_;
-
- // Port used for the connection
- private int port_;
-
- // Current timer interval
- private int timeout_;
-
- // Reference to the Clerk Processor's timer queue
- private TimerQueue tq_;
-
- // Message to send for a time update
- private String sendMsg_;
-
- // ID of the handler in the queue
- private int timerId_;
-
- // Desired time interval to receive updates
- private int initialTimeout_;
-
-}
diff --git a/java/netsvcs/Time/TSClerkProcessor.java b/java/netsvcs/Time/TSClerkProcessor.java
deleted file mode 100755
index d7b1773cc9e..00000000000
--- a/java/netsvcs/Time/TSClerkProcessor.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Time
- *
- * = FILENAME
- * TSClerkProcessor.java
- *
- *@author Prashant Jain, Everett Anderson
- *
- *************************************************/
-package netsvcs.Time;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Misc.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-import JACE.ASX.TimeValue;
-
-/**
- *
- * <hr>
- * <p><h2>SYNOPSIS</h2>
- *
- * <blockquote>Monitors a specified port (default 7989) and launches
- * TSClerkHandlers when connections are made. The handlers communicate
- * with servers and calculate the difference between the server time
- * and local time. The Clerk Processor averages these differences
- * and reports them to clients.</blockquote>
- *
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>This doesn't actually change the system clock, but it
- * provides the average of the differences of the local and server
- * times. A client could use this information to adjust the clock, or
- * just use the midpoint to determine the correct network time.</blockquote>
- *
- */
-public class TSClerkProcessor extends Connector implements Runnable
-{
- /**
- * Default constructor
- */
- public TSClerkProcessor ()
- {
- this.serverArray_ = new Vector ();
-
- }
-
- /**
- * Parse the command line, setup the TSRequestAcceptor, and run
- * the Clerk Processor in its own thread.
- */
- public int init (String [] args)
- {
- // Parse arguments
- this.parseArgs (args);
-
- TSRequestAcceptor ra = new TSRequestAcceptor (this);
- ra.init (args);
-
- // Run in own thread of control so that we don't block the caller
- new Thread (this).start ();
- return 0;
- }
-
-
- /**
- * Makes connections to the servers, schedules itself for intervals
- * to update the delta time.
- */
- public void run ()
- {
-
- // Set up connections with all servers
- Enumeration table = this.serverArray_.elements ();
- while (table.hasMoreElements ())
- {
- this.initiateConnection((TSClerkHandler)table.nextElement());
- }
-
- // Set up timer
- this.timer_id_ = this.tq_.scheduleTimer (this,
- null,
- new TimeValue (this.timeout_),
- new TimeValue (this.timeout_));
- }
-
- /**
- * Makes connections to the servers.
- */
- public void initiateConnection (TSClerkHandler handler)
- {
- this.open (handler.hostname(), handler.port());
-
- try
- {
- // Connect to the server
- this.connect (handler);
-
- // Set the state of the Clerk Handler so it queries the
- // server at intervals.
- handler.state(TSClerkHandler.CONNECTED);
-
- }
- catch (UnknownHostException e)
- {
- ACE.ERROR (e);
- }
- catch (SocketException e)
- {
- ACE.ERROR ("Connection refused");
- }
- catch (InstantiationException e)
- {
- ACE.ERROR (e);
- }
- catch (IllegalAccessException e)
- {
- ACE.ERROR (e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- }
-
-
- /**
- *
- * Called by the timer queue. Calls updateTime().
- */
- public int handleTimeout (TimeValue tv, Object obj)
- {
- return this.updateTime ();
- }
-
- /**
- * Calculates the delta time by averaging the results from
- * Clerk Handler delta()'s. It only includes handlers whose
- * state is currently CONNECTED. If they're not connected, it
- * reschedules them to begin the error correction process of
- * trying to reconnect to the server (possible synch problems?).
- */
- protected int updateTime ()
- {
- TSClerkHandler handler;
- int count = 0;
- long totalDeltaTime = 0;
-
- Enumeration table = this.serverArray_.elements ();
-
- while (table.hasMoreElements ())
- {
- handler = (TSClerkHandler) table.nextElement ();
-
- if (handler.state() != TSClerkHandler.CONNECTED) {
-
- // Reconnecting state means we don't need to put
- // it in the timer queue again
- if (handler.state() == TSClerkHandler.RECONNECTING)
- continue;
- else
- if (handler.state() == TSClerkHandler.DISCONNECTED)
- handler.state(TSClerkHandler.RECONNECTING);
-
- handler.errorRecovery();
- continue;
- }
-
- long delta = handler.delta();
-
- ACE.DEBUG(handler.hostname() + ": " + delta);
-
- totalDeltaTime += delta;
- count++;
- }
-
- if (count > 0) {
-
- this.timeDelta_ = totalDeltaTime / count;
-
- ACE.DEBUG("Average deviation: " + totalDeltaTime/count);
-
- } else
-
- this.timeDelta_ = 0;
-
- return 0;
- }
-
- /**
- * Return the delta time.
- */
- public long getDelta()
- {
- return this.timeDelta_;
- }
-
- /**
- * Parse the command line. Watches for -t <time> and
- * -h <machine:port> switches. Must specify time
- * value before host switches!
- */
- protected void parseArgs (String args[])
- {
- String s;
- GetOpt opt = new GetOpt (args, "t:h:");
- for (int c; (c = opt.next ()) != -1; )
- {
- switch (c)
- {
- case 't':
- s = opt.optarg ();
- this.timeout_ = (new Integer (s)).intValue ();
- break;
- case 'h':
- s = opt.optarg ();
- this.addNewHandler (s);
- break;
- default:
- ACE.ERROR ("Bad command line argument: " + c);
-
- ACE.ERROR ("Valid arguments: -t <timeout> -h <hostname>:<port> -h ...");
- break;
- }
- }
- }
-
- /**
- *
- * Creates a new Clerk Handler and adds it to the serverArray_
- */
- private void addNewHandler (String s)
- {
- StringTokenizer tokens = new StringTokenizer (s, ":");
- String hostname = tokens.nextToken ();
-
- int port = (new Integer (tokens.nextToken ())).intValue ();
-
- // Create new handler and add it to array of servers
- this.serverArray_.addElement (new TSClerkHandler (hostname,
- port,
- this.tq_,
- this.timeout_,
- this));
- }
-
- // Vector of TSClerkHandlers, one for each server
- private Vector serverArray_;
-
- // Default interval at which to update the time
- private int timeout_ = 1000;
-
- // Timer queue which calls handleTimeout when the Clerk Processor
- // is supposed to update the time.
- private TimerQueue tq_ = new TimerQueue (true);
-
- // Clerk Processor ID in the timer queue
- private int timer_id_;
-
- // Average of the differences of the local and server times.
- private long timeDelta_;
-}
diff --git a/java/netsvcs/Time/TSRequestAcceptor.java b/java/netsvcs/Time/TSRequestAcceptor.java
deleted file mode 100755
index e02b0b261ba..00000000000
--- a/java/netsvcs/Time/TSRequestAcceptor.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Time
- *
- * = FILENAME
- * TSRequestAcceptor.java
- *
- *@author Prashant Jain, Everett Anderson
- *
- *************************************************/
-package netsvcs.Time;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Misc.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-
-/**
- * <hr>
- * <p><h2>SYNOPSIS</h2>
- *
- * <blockquote>Monitors a specified port (default 7990) and launches
- * TSRequestHandlers when connections are made. The handlers
- * report the average deviation from the local time when input
- * is received to their sockets.</blockquote>
- *
- * <p><h2>DESCRIPTION</h2>
- * <blockquote>This is in place of the shared memory system used in C++ ACE.
- * The clients need to request the correct time range from the Clerk, so
- * they can do it with <a href="ACE.SOCK_SAP.SOCKStream.html#_top_">
- * <tt>sockets</tt></a>. An instance of TSRequestAcceptor is created
- * and initialized in TSClerkProcessor init(). This should be the
- * only place it's used.</blockquote>
- *
- * @see ACE.SOCK_SAP.SOCKAcceptor,ACE.netsvcs.Time.TSClerkProcessor
- */
-
-public class TSRequestAcceptor extends Acceptor implements Runnable
-{
- /**
- * Create an instance of TSRequestAcceptor. Default constructor.
- */
- public TSRequestAcceptor (TSClerkProcessor parent)
- {
- this.parent_ = parent;
- }
-
- /**
- *
- * Process command line arguments (port), and start this instance
- * in its own thread.
- *
- */
- public int init(String [] args)
- {
- this.parseArgs (args);
-
- new Thread (this).start();
- return 0;
- }
-
- /**
- *
- * Called when the thread starts. Open the port and accept
- * connections.
- */
- public void run ()
- {
- try {
- this.open (this.port_);
- while (true)
- this.accept();
- }
- catch (SocketException e)
- {
- ACE.ERROR (e);
- }
- catch (InstantiationException e)
- {
- ACE.ERROR (e);
- }
- catch (IllegalAccessException e)
- {
- ACE.ERROR (e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
-
- System.err.println("Stopped accepting");
- }
-
- /**
- *
- * Parse the command line. This only looks for -p <port number>.
- *
- */
- protected void parseArgs (String args[])
- {
- String s;
- GetOpt opt = new GetOpt (args, "p:");
-
- for (int c; (c = opt.next ()) != -1; )
- {
- switch (c)
- {
- case 'p':
- s = opt.optarg ();
- this.port_ = (new Integer (s)).intValue ();
- break;
- default:
- ACE.ERROR("Invalid argument: " + c);
- break;
- }
- }
- }
-
- /**
- *
- * Modifies to behavior of Acceptor accept() so the TSClerkProcessor
- * reference can be passed to the TSRequestHandler.
- *
- */
-
- protected SvcHandler makeSvcHandler ()
- throws InstantiationException, IllegalAccessException
- {
- return (SvcHandler) new TSRequestHandler(parent_);
- }
-
- // Port to monitor
- private int port_ = 7990;
-
- // Reference to the Clerk Processor (which holds the time value)
- private TSClerkProcessor parent_;
-};
-
diff --git a/java/netsvcs/Time/TSRequestHandler.java b/java/netsvcs/Time/TSRequestHandler.java
deleted file mode 100755
index dbeded22250..00000000000
--- a/java/netsvcs/Time/TSRequestHandler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package netsvcs.Time;
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Time
- *
- * = FILENAME
- * TSRequestHandler.java
- *
- *@author Prashant Jain, Everett Anderson
- *
- *************************************************/
-import java.io.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-
-/**
- * <hr>
- * <p><h2>SYNOPSIS</h2>
- *
- * <blockquote>Handles giving the client the average difference between
- * the local time and the server times.</blockquote>
- *
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>Whenever the RequestHandler receives input to the port, it
- * sends the current delta (average difference time) in return as a string.
- * Instances of this class are created by TSRequestAcceptor.</blockquote>
- */
-public class TSRequestHandler extends SvcHandler
-{
- /**
- * Constructor. Takes in a reference to the Clerk Processor
- * so it can call TSClerkProcessor getDelta().
- */
- public TSRequestHandler (TSClerkProcessor processor)
- {
- this.processor_ = processor;
- }
-
- /**
- *
- * Run this in a separate thread.
- */
- public int open (Object obj)
- {
- new Thread (this).start ();
- return 0;
- }
-
- /**
- *
- * Called when the thread starts. This is the main code -- whenever
- * input comes to the socket, it sends out the current delta time
- * as a string.
- */
- public void run ()
- {
- int msgLen;
- try
- {
- while (true)
- {
- StringBuffer msg = new StringBuffer ();
-
- msgLen = this.peer ().recv (msg);
-
- if (msgLen < 0)
- break;
- else {
-
- // No matter what was sent in, send the average difference back
-
- String msgOut = new String("" + this.processor_.getDelta() + '\n');
- this.peer ().send (msgOut);
-
- }
- }
- }
- catch (NullPointerException e)
- {
- ACE.ERROR ("Connection reset by peer");
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- finally
- {
- try
- {
- this.peer ().close ();
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- }
- }
-
-
- // Reference to the Clerk Processor to call getDelta()
- TSClerkProcessor processor_;
-}
diff --git a/java/netsvcs/Time/TSServerAcceptor.java b/java/netsvcs/Time/TSServerAcceptor.java
deleted file mode 100755
index 2d54f7b740b..00000000000
--- a/java/netsvcs/Time/TSServerAcceptor.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Time
- *
- * = FILENAME
- * TS_Server_Acceptor.java
- *
- *@author Prashant Jain
- *
- *************************************************/
-package netsvcs.Time;
-
-import java.io.*;
-import java.net.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Misc.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-
-/**
- * <hr>
- * <p><h2>DESCRIPTION</h2>
- *
- * Acceptor: listens to a port and launches TSServerHandlers
- * when connections are made.
- *
- * @see netsvcs.Time.TSServerHandler, JACE.Connection.Acceptor
- */
-public class TSServerAcceptor extends Acceptor implements Runnable
-{
- // Run this in its own thread
- public int init (String [] args)
- {
- // Parse arguments
- this.parseArgs (args);
-
- // Run in own thread of control so that we don't block the caller
- new Thread (this).start ();
- return 0;
- }
-
- // Create a TSServerHandler for each client that wants to connect
- public void run ()
- {
- try
- {
- this.setHandlerFactory (Class.forName ("netsvcs.Time.TSServerHandler"));
- this.open (this.port_);
- while (true)
- this.accept ();
- }
- catch (ClassNotFoundException e)
- {
- ACE.ERROR (e);
- }
- catch (SocketException e)
- {
- ACE.ERROR ("Socket Exception: " + e);
- }
- catch (InstantiationException e)
- {
- ACE.ERROR (e);
- }
- catch (IllegalAccessException e)
- {
- ACE.ERROR (e);
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
-
- System.err.println("Stopped accepting");
- }
-
- // Process the command line
- protected void parseArgs (String args[])
- {
- String s;
- GetOpt opt = new GetOpt (args, "p:");
- for (int c; (c = opt.next ()) != -1; )
- {
- switch (c)
- {
- case 'p':
- s = opt.optarg ();
- this.port_ = (new Integer (s)).intValue ();
- break;
- default:
- ACE.ERROR ("Unknown argument: " + c);
- break;
- }
- }
- }
-
- private int port_ = 7989;
-}
-
diff --git a/java/netsvcs/Time/TSServerHandler.java b/java/netsvcs/Time/TSServerHandler.java
deleted file mode 100755
index 4ee700254ed..00000000000
--- a/java/netsvcs/Time/TSServerHandler.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************
- *
- * = PACKAGE
- * netsvcs.Time
- *
- * = FILENAME
- * TS_Server_Handler.java
- *
- *@author Prashant Jain, Everett Anderson
- *
- *************************************************/
-package netsvcs.Time;
-
-import java.io.*;
-import java.util.*;
-import JACE.OS.*;
-import JACE.Connection.*;
-import JACE.Reactor.*;
-
-/**
- * <hr>
- * <p><h2>DESCRIPTION</h2>
- *
- * <blockquote>Handles requests from a TSClerkHandler and sends
- * back the current local time.</blockquote>
- *
- * @see netsvcs.Time.TSClerkHandler. netsvcs.Time.TSServerAcceptor
- */
-
-public class TSServerHandler extends SvcHandler
-{
- // Constructor
- public TSServerHandler ()
- {
- }
-
- // Start this handler in its own thread
- public int open (Object obj)
- {
-
- new Thread (this).start ();
- return 0;
- }
-
- // Wait for messages from the Client and send the current local
- // time back as a string.
- public void run ()
- {
- int msgLen;
- try
- {
- while (true)
- {
- // Use a new one each time since recv appends
- StringBuffer msg = new StringBuffer ();
-
- // Get the message from the client (blocks)
- msgLen = this.peer ().recv (msg);
-
- // Just keep waiting if there's a problem
- if (msgLen <= 0)
- break;
-
- // Is the message for the right thing?
- if (msg.toString().compareTo ("TIME_UPDATE_REQUEST") != 0) {
- System.err.println("Unknown message: \"" + msg + '\"');
- this.peer().send("\n"); // send so other side isn't stuck
- break;
- }
-
- // Get local time
- long time = System.currentTimeMillis();
-
- // Send as a string
- this.peer ().send ("" + time);
-
- ACE.DEBUG("Time: " + new Date(time));
- }
- }
- catch (NullPointerException e)
- {
- ACE.ERROR ("Connection reset by peer");
- }
- catch (IOException e)
- {
- ACE.ERROR (e);
- }
- finally
- {
- try
- {
- this.peer ().close ();
- }
- catch (IOException e)
- {
- }
- }
- }
-}