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.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.atomic.AtomicInteger
blockedCount
Blocked threads count.private static boolean
debug
private static java.lang.String
DONE
End message.private boolean
isRunning
Flag if receiver is running.private static org.apache.logging.log4j.Logger
logger
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, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, yield
-
-
-
-
Field Detail
-
logger
private static final org.apache.logging.log4j.Logger logger
-
debug
private static final boolean debug
-
isRunning
private volatile boolean isRunning
Flag if receiver is running.
-
DONE
private static final java.lang.String DONE
End message.- See Also:
- Constant Field Values
-
blockedCount
private final java.util.concurrent.atomic.AtomicInteger blockedCount
Blocked threads count.
-
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.
-
-