The Meta-Environment API

toolbus
Class AbstractTool

java.lang.Object
  extended by toolbus.AbstractTool
All Implemented Interfaces:
java.lang.Runnable, IOperations, Tool
Direct Known Subclasses:
SwingTool

public abstract class AbstractTool
extends java.lang.Object
implements Tool, java.lang.Runnable, IOperations


Nested Class Summary
private static class AbstractTool.Job
          A job.
private  class AbstractTool.JobQueue
          This job queue holds all the jobs that are send from a single source.
private  class AbstractTool.OperationTermPair
           
private  class AbstractTool.ThreadLocalJobQueue
          This job queue holds all the jobs that are posted by a certain thread.
private static class AbstractTool.WorkerQueue
          The queue that is meant to take care of the asynchroneous execution and queueing of anything that invokes stuff on a tool.
 
Field Summary
private  boolean connected
           
private  aterm.ATerm empty
           
private  boolean expectingDisconnect
           
protected  aterm.ATermFactory factory
           
private static int HANDSHAKEBUFFERSIZE
           
private  java.lang.String host
           
private  java.lang.Object lockObject
           
private  int port
           
private  java.util.Map<java.lang.String,AbstractTool.JobQueue> queues
           
private  java.nio.ByteBuffer readBuffer
           
private  boolean running
           
private  java.nio.channels.SocketChannel socketChannel
           
private  java.util.Map<java.lang.Long,AbstractTool.ThreadLocalJobQueue> threadLocalQueues
           
private  int toolid
           
private  java.lang.String toolname
           
private  AbstractTool.WorkerQueue workerQueue
           
private  java.nio.ByteBuffer writeBuffer
           
 
Fields inherited from interface toolbus.IOperations
ACKDO, ACKEVENT, CONNECT, DEBUGPERFORMANCESTATS, DISCONNECT, DO, END, EVAL, EVENT, PERFORMANCESTATS, REQUEST, RESPONSE, TERMINATE, UNDEFINED, VALUE
 
Constructor Summary
AbstractTool(aterm.ATermFactory factory)
           
 
Method Summary
private  void ackEvent(aterm.ATermList ackEvent)
           
private  void closeConnection()
           
 void connect()
           
 void connect(java.lang.String tool_name, java.net.InetAddress address, int p)
           
 void disconnect()
           
 java.net.InetAddress getAddress()
           
 java.lang.Object getLockObject()
           
private  aterm.ATerm getPerformanceStats()
          Gathers performance statistics about this tool, like memory usage and the user-/system-time spend per thread.
 int getPort()
           
 void handleIncomingTerm()
           
 void handleIncomingTerm(byte operation, aterm.ATerm t)
           
protected  void handleTerm(byte operation, aterm.ATerm t)
           
 void init(java.lang.String[] args)
           
 boolean isConnected()
           
 void postEvent(aterm.ATerm term)
           
 aterm.ATerm postRequest(aterm.ATerm term)
           
 AbstractTool.OperationTermPair readTerm()
           
private  aterm.ATerm readTermFromChannel(java.nio.ByteBuffer byteBuffer)
           
 void run()
           
 void sendEvent(aterm.ATerm term)
           
 void sendTerm(aterm.ATerm term)
           
private  void sendTerm(byte operation, aterm.ATerm term)
           
 void setLockObject(java.lang.Object lockObject)
           
private  void setRunning(boolean state)
           
private  void shakeHands()
           
 void stopRunning()
           
private  void writeTermToChannel(aterm.ATerm aTerm, java.nio.ByteBuffer byteBuffer)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface toolbus.Tool
checkInputSignature, handler
 

Field Detail

HANDSHAKEBUFFERSIZE

private static final int HANDSHAKEBUFFERSIZE
See Also:
Constant Field Values

writeBuffer

private final java.nio.ByteBuffer writeBuffer

readBuffer

private final java.nio.ByteBuffer readBuffer

socketChannel

private java.nio.channels.SocketChannel socketChannel

factory

protected final aterm.ATermFactory factory

toolname

private java.lang.String toolname

toolid

private int toolid

host

private java.lang.String host

port

private int port

threadLocalQueues

private final java.util.Map<java.lang.Long,AbstractTool.ThreadLocalJobQueue> threadLocalQueues

queues

private final java.util.Map<java.lang.String,AbstractTool.JobQueue> queues

workerQueue

private final AbstractTool.WorkerQueue workerQueue

empty

private aterm.ATerm empty

lockObject

private java.lang.Object lockObject

running

private volatile boolean running

connected

private boolean connected

expectingDisconnect

private boolean expectingDisconnect
Constructor Detail

AbstractTool

public AbstractTool(aterm.ATermFactory factory)
Method Detail

init

public void init(java.lang.String[] args)
          throws java.net.UnknownHostException
Specified by:
init in interface Tool
Throws:
java.net.UnknownHostException

setLockObject

public void setLockObject(java.lang.Object lockObject)
Specified by:
setLockObject in interface Tool

getLockObject

public java.lang.Object getLockObject()
Specified by:
getLockObject in interface Tool

connect

public void connect()
             throws java.io.IOException
Specified by:
connect in interface Tool
Throws:
java.io.IOException

connect

public void connect(java.lang.String tool_name,
                    java.net.InetAddress address,
                    int p)
             throws java.io.IOException
Specified by:
connect in interface Tool
Throws:
java.io.IOException

disconnect

public void disconnect()
Specified by:
disconnect in interface Tool

isConnected

public boolean isConnected()
Specified by:
isConnected in interface Tool

getPort

public int getPort()

getAddress

public java.net.InetAddress getAddress()

writeTermToChannel

private void writeTermToChannel(aterm.ATerm aTerm,
                                java.nio.ByteBuffer byteBuffer)
                         throws java.io.IOException
Throws:
java.io.IOException

readTermFromChannel

private aterm.ATerm readTermFromChannel(java.nio.ByteBuffer byteBuffer)
                                 throws java.io.IOException
Throws:
java.io.IOException

shakeHands

private void shakeHands()
                 throws java.io.IOException
Throws:
java.io.IOException

sendTerm

private void sendTerm(byte operation,
                      aterm.ATerm term)

readTerm

public AbstractTool.OperationTermPair readTerm()
                                        throws java.io.IOException
Throws:
java.io.IOException

setRunning

private void setRunning(boolean state)

run

public void run()
Specified by:
run in interface java.lang.Runnable

stopRunning

public void stopRunning()

handleIncomingTerm

public void handleIncomingTerm()
                        throws java.io.IOException
Throws:
java.io.IOException

handleIncomingTerm

public void handleIncomingTerm(byte operation,
                               aterm.ATerm t)

handleTerm

protected void handleTerm(byte operation,
                          aterm.ATerm t)

sendTerm

public void sendTerm(aterm.ATerm term)
              throws java.io.IOException
Specified by:
sendTerm in interface Tool
Throws:
java.io.IOException

sendEvent

public void sendEvent(aterm.ATerm term)
Specified by:
sendEvent in interface Tool

postEvent

public void postEvent(aterm.ATerm term)
Specified by:
postEvent in interface Tool

postRequest

public aterm.ATerm postRequest(aterm.ATerm term)
Specified by:
postRequest in interface Tool

ackEvent

private void ackEvent(aterm.ATermList ackEvent)

closeConnection

private void closeConnection()

getPerformanceStats

private aterm.ATerm getPerformanceStats()
Gathers performance statistics about this tool, like memory usage and the user-/system-time spend per thread.

Returns:
performance statictics.

The Meta-Environment API