Package edu.jas.util
Class TaggedSocketChannel
- java.lang.Object
-
- java.lang.Thread
-
- edu.jas.util.TaggedSocketChannel
-
- All Implemented Interfaces:
java.lang.Runnable
public class TaggedSocketChannel extends java.lang.Thread
TaggedSocketChannel provides a communication channel with message tags for Java objects using TCP/IP sockets.- Author:
- Heinz Kredel
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<java.lang.Integer,java.util.concurrent.BlockingQueue>
queues
Queues for each message tag.protected SocketChannel
sc
Underlying socket channel.
-
Constructor Summary
Constructors Constructor Description TaggedSocketChannel(SocketChannel s)
Constructs a tagged socket channel on the given socket channel s.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes the channel.SocketChannel
getSocket()
Get the SocketChannelvoid
init()
thread initialization and start.int
messages()
Number of messages.java.lang.Object
receive(java.lang.Integer tag)
Receive an object.void
run()
Run receive() in an infinite loop.void
send(java.lang.Integer tag, java.lang.Object v)
Sends an object.int
tagSize()
Number of tags.void
terminate()
Terminate the TaggedSocketChannel.java.lang.String
toString()
To string.-
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, yield
-
-
-
-
Field Detail
-
sc
protected final SocketChannel sc
Underlying socket channel.
-
queues
protected final java.util.Map<java.lang.Integer,java.util.concurrent.BlockingQueue> queues
Queues for each message tag.
-
-
Constructor Detail
-
TaggedSocketChannel
public TaggedSocketChannel(SocketChannel s)
Constructs a tagged socket channel on the given socket channel s.- Parameters:
s
- A socket channel object.
-
-
Method Detail
-
init
public void init()
thread initialization and start.
-
getSocket
public SocketChannel getSocket()
Get the SocketChannel
-
send
public void send(java.lang.Integer tag, java.lang.Object v) throws java.io.IOException
Sends an object.- Parameters:
tag
- message tagv
- object to send- Throws:
java.io.IOException
-
receive
public java.lang.Object receive(java.lang.Integer tag) throws java.lang.InterruptedException, java.io.IOException, java.lang.ClassNotFoundException
Receive an object.- Parameters:
tag
- message tag- Returns:
- object received
- Throws:
java.lang.InterruptedException
java.io.IOException
java.lang.ClassNotFoundException
-
close
public void close()
Closes the channel.
-
toString
public java.lang.String toString()
To string.- Overrides:
toString
in classjava.lang.Thread
- See Also:
Thread.toString()
-
tagSize
public int tagSize()
Number of tags.- Returns:
- size of key set.
-
messages
public int messages()
Number of messages.- Returns:
- sum of all messages in queues.
-
run
public void run()
Run receive() in an infinite loop.- Specified by:
run
in interfacejava.lang.Runnable
- Overrides:
run
in classjava.lang.Thread
- See Also:
Thread.run()
-
terminate
public void terminate()
Terminate the TaggedSocketChannel.
-
-