Package zmq
Class SocketBase
- java.lang.Object
-
- zmq.ZObject
-
- zmq.Own
-
- zmq.SocketBase
-
- All Implemented Interfaces:
Pipe.IPipeEvents,IPollEvents
- Direct Known Subclasses:
Channel,Client,Dealer,Dish,Gather,Pair,Pull,Push,Radio,Router,Scatter,Server,Stream,XPub,XSub
public abstract class SocketBase extends Own implements IPollEvents, Pipe.IPipeEvents
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classSocketBase.EndpointPipeprivate static classSocketBase.SimpleURI
-
Field Summary
Fields Modifier and Type Field Description private booleanactiveprotected java.lang.StringconnectRidprivate java.util.concurrent.atomic.AtomicBooleanctxTerminatedprivate java.util.concurrent.atomic.AtomicBooleandestroyedprivate MultiMap<java.lang.String,SocketBase.EndpointPipe>endpointsprivate java.nio.channels.SocketChannelfileDescprivate Poller.Handlehandleprivate MultiMap<java.lang.String,Pipe>inprocsprivate java.lang.ThreadLocal<java.lang.Boolean>isInEventThreadLocalprivate longlastTscprivate IMailboxmailboxprivate intmonitorEventsprivate SocketBasemonitorSocketprivate java.util.concurrent.locks.ReentrantLockmonitorSyncprivate java.util.Set<Pipe>pipesprivate Pollerpollerprivate booleanrcvmoreprivate SignalerreaperSignalerprivate booleanthreadSafeprivate java.util.concurrent.locks.ReentrantLockthreadSafeSyncprivate intticks
-
Constructor Summary
Constructors Modifier Constructor Description protectedSocketBase(Ctx parent, int tid, int sid)protectedSocketBase(Ctx parent, int tid, int sid, boolean threadSafe)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description private voidaddEndpoint(java.lang.String addr, Own endpoint, Pipe pipe)private voidattachPipe(Pipe pipe, boolean isLocallyInitiated)private voidattachPipe(Pipe pipe, boolean subscribe2all, boolean isLocallyInitiated)booleanbind(java.lang.String addr)voidcancel(java.util.concurrent.atomic.AtomicBoolean canceled)private voidcheckDestroy()private NetProtocolcheckProtocol(java.lang.String protocol)voidclose()booleanconnect(java.lang.String addr)private booleanconnectInternal(java.lang.String addr)intconnectPeer(java.lang.String addr)protected voiddestroy()booleandisconnectPeer(int routingId)private voidenterInEvent()interrno()private voidevent(java.lang.String addr, java.lang.Object arg, int event)voideventAccepted(java.lang.String addr, java.nio.channels.SelectableChannel ch)voideventAcceptFailed(java.lang.String addr, int errno)voideventBindFailed(java.lang.String addr, int errno)voideventClosed(java.lang.String addr, java.nio.channels.SelectableChannel ch)voideventCloseFailed(java.lang.String addr, int errno)voideventConnectDelayed(java.lang.String addr, int errno)voideventConnected(java.lang.String addr, java.nio.channels.SelectableChannel ch)voideventConnectRetried(java.lang.String addr, int interval)voideventDisconnected(java.lang.String addr, java.nio.channels.SelectableChannel ch)voideventHandshakeFailedAuth(java.lang.String addr, int errno)voideventHandshakeFailedNoDetail(java.lang.String addr, int errno)voideventHandshakeFailedProtocol(java.lang.String addr, int errno)voideventHandshaken(java.lang.String addr, int zmtpVersion)voideventHandshakeSucceeded(java.lang.String addr, int errno)voideventListening(java.lang.String addr, java.nio.channels.SelectableChannel ch)private voidextractFlags(Msg msg)protected BlobgetCredential()java.nio.channels.SelectableChannelgetFD()(package private) IMailboxgetMailbox()intgetSocketOpt(int option)java.lang.ObjectgetSocketOptx(int option)(package private) booleanhasIn()(package private) booleanhasOut()voidhiccuped(Pipe pipe)voidinEvent()Called by I/O thread when file descriptor is ready for reading.(package private) booleanisActive()private booleanisInEvent()booleanjoin(java.lang.String group)booleanleave(java.lang.String group)private voidleaveInEvent()private voidlock()booleanmonitor(java.lang.String addr, int events)Register the address for a monitor.protected voidmonitorEvent(ZMQ.Event event)voidpipeTerminated(Pipe pipe)intpoll(int interest, int timeout, java.util.concurrent.atomic.AtomicBoolean canceled)protected voidprocessBind(Pipe pipe)private booleanprocessCommands(int timeout, boolean throttle, java.util.concurrent.atomic.AtomicBoolean canceled)protected voidprocessDestroy()protected voidprocessStop()protected voidprocessTerm(int linger)voidreadActivated(Pipe pipe)Msgrecv(int flags)Msgrecv(int flags, java.util.concurrent.atomic.AtomicBoolean canceled)booleansend(Msg msg, int flags)booleansend(Msg msg, int flags, java.util.concurrent.atomic.AtomicBoolean canceled)booleansetSocketOpt(int option, java.lang.Object optval)(package private) voidstartReaping(Poller poller)(package private) voidstop()private voidstopMonitor()booleantermEndpoint(java.lang.String addr)java.lang.StringtoString()java.lang.StringtypeString()private voidunlock()voidwriteActivated(Pipe pipe)protected abstract voidxattachPipe(Pipe pipe, boolean subscribe2all, boolean isLocallyInitiated)protected booleanxdisconnectPeer(int routingId)protected booleanxhasIn()protected booleanxhasOut()protected voidxhiccuped(Pipe pipe)protected booleanxjoin(java.lang.String group)protected booleanxleave(java.lang.String group)protected abstract voidxpipeTerminated(Pipe pipe)protected voidxreadActivated(Pipe pipe)protected Msgxrecv()protected booleanxsend(Msg msg)protected booleanxsetsockopt(int option, java.lang.Object optval)protected voidxwriteActivated(Pipe pipe)-
Methods inherited from class zmq.Own
incSeqnum, isTerminating, launchChild, processOwn, processSeqnum, processTermAck, processTermReq, registerTermAcks, termChild, terminate, unregisterTermAck
-
Methods inherited from class zmq.ZObject
chooseIoThread, connectPending, destroySocket, findEndpoint, getCtx, getTid, pendConnection, processActivateRead, processActivateWrite, processAttach, processCancel, processCommand, processHiccup, processPipeTerm, processPipeTermAck, processPlug, processReap, processReapAck, processReaped, registerEndpoint, sendActivateRead, sendActivateWrite, sendAttach, sendAttach, sendBind, sendBind, sendCancel, sendDone, sendHiccup, sendInprocConnected, sendOwn, sendPipeTerm, sendPipeTermAck, sendPlug, sendPlug, sendReap, sendReapAck, sendReaped, sendStop, sendTerm, sendTermAck, sendTermReq, setTid, unregisterEndpoint, unregisterEndpoints
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface zmq.poll.IPollEvents
acceptEvent, connectEvent, outEvent, timerEvent
-
-
-
-
Field Detail
-
endpoints
private final MultiMap<java.lang.String,SocketBase.EndpointPipe> endpoints
-
active
private boolean active
-
ctxTerminated
private java.util.concurrent.atomic.AtomicBoolean ctxTerminated
-
isInEventThreadLocal
private java.lang.ThreadLocal<java.lang.Boolean> isInEventThreadLocal
-
destroyed
private java.util.concurrent.atomic.AtomicBoolean destroyed
-
mailbox
private final IMailbox mailbox
-
pipes
private final java.util.Set<Pipe> pipes
-
poller
private Poller poller
-
handle
private Poller.Handle handle
-
lastTsc
private long lastTsc
-
ticks
private int ticks
-
rcvmore
private boolean rcvmore
-
fileDesc
private java.nio.channels.SocketChannel fileDesc
-
monitorSocket
private SocketBase monitorSocket
-
monitorEvents
private int monitorEvents
-
connectRid
protected java.lang.String connectRid
-
monitorSync
private final java.util.concurrent.locks.ReentrantLock monitorSync
-
threadSafe
private final boolean threadSafe
-
threadSafeSync
private final java.util.concurrent.locks.ReentrantLock threadSafeSync
-
reaperSignaler
private Signaler reaperSignaler
-
-
Method Detail
-
xattachPipe
protected abstract void xattachPipe(Pipe pipe, boolean subscribe2all, boolean isLocallyInitiated)
-
xpipeTerminated
protected abstract void xpipeTerminated(Pipe pipe)
-
isActive
boolean isActive()
- Returns:
- false if object is not a socket.
-
getMailbox
final IMailbox getMailbox()
-
stop
final void stop()
-
checkProtocol
private NetProtocol checkProtocol(java.lang.String protocol)
-
attachPipe
private void attachPipe(Pipe pipe, boolean isLocallyInitiated)
-
attachPipe
private void attachPipe(Pipe pipe, boolean subscribe2all, boolean isLocallyInitiated)
-
setSocketOpt
public final boolean setSocketOpt(int option, java.lang.Object optval)
-
getSocketOpt
public final int getSocketOpt(int option)
-
getSocketOptx
public final java.lang.Object getSocketOptx(int option)
-
bind
public final boolean bind(java.lang.String addr)
-
connect
public final boolean connect(java.lang.String addr)
-
connectPeer
public final int connectPeer(java.lang.String addr)
-
connectInternal
private boolean connectInternal(java.lang.String addr)
-
disconnectPeer
public boolean disconnectPeer(int routingId)
-
termEndpoint
public final boolean termEndpoint(java.lang.String addr)
-
send
public final boolean send(Msg msg, int flags)
-
send
public final boolean send(Msg msg, int flags, java.util.concurrent.atomic.AtomicBoolean canceled)
-
recv
public final Msg recv(int flags)
-
recv
public final Msg recv(int flags, java.util.concurrent.atomic.AtomicBoolean canceled)
-
join
public final boolean join(java.lang.String group)
-
leave
public final boolean leave(java.lang.String group)
-
cancel
public final void cancel(java.util.concurrent.atomic.AtomicBoolean canceled)
-
poll
public final int poll(int interest, int timeout, java.util.concurrent.atomic.AtomicBoolean canceled)
-
close
public final void close()
-
hasIn
final boolean hasIn()
-
hasOut
final boolean hasOut()
-
startReaping
final void startReaping(Poller poller)
-
isInEvent
private boolean isInEvent()
-
processCommands
private boolean processCommands(int timeout, boolean throttle, java.util.concurrent.atomic.AtomicBoolean canceled)
-
processStop
protected final void processStop()
- Overrides:
processStopin classZObject
-
processBind
protected final void processBind(Pipe pipe)
- Overrides:
processBindin classZObject
-
processTerm
protected final void processTerm(int linger)
- Overrides:
processTermin classOwn
-
processDestroy
protected final void processDestroy()
- Overrides:
processDestroyin classOwn
-
xsetsockopt
protected boolean xsetsockopt(int option, java.lang.Object optval)
-
xhasOut
protected boolean xhasOut()
-
xsend
protected boolean xsend(Msg msg)
-
xhasIn
protected boolean xhasIn()
-
xrecv
protected Msg xrecv()
-
getCredential
protected Blob getCredential()
-
xreadActivated
protected void xreadActivated(Pipe pipe)
-
xwriteActivated
protected void xwriteActivated(Pipe pipe)
-
xhiccuped
protected void xhiccuped(Pipe pipe)
-
xjoin
protected boolean xjoin(java.lang.String group)
-
xleave
protected boolean xleave(java.lang.String group)
-
xdisconnectPeer
protected boolean xdisconnectPeer(int routingId)
-
enterInEvent
private void enterInEvent()
-
leaveInEvent
private void leaveInEvent()
-
inEvent
public final void inEvent()
Description copied from interface:IPollEventsCalled by I/O thread when file descriptor is ready for reading.- Specified by:
inEventin interfaceIPollEvents
-
checkDestroy
private void checkDestroy()
-
readActivated
public final void readActivated(Pipe pipe)
- Specified by:
readActivatedin interfacePipe.IPipeEvents
-
writeActivated
public final void writeActivated(Pipe pipe)
- Specified by:
writeActivatedin interfacePipe.IPipeEvents
-
hiccuped
public final void hiccuped(Pipe pipe)
- Specified by:
hiccupedin interfacePipe.IPipeEvents
-
pipeTerminated
public final void pipeTerminated(Pipe pipe)
- Specified by:
pipeTerminatedin interfacePipe.IPipeEvents
-
extractFlags
private void extractFlags(Msg msg)
-
monitor
public final boolean monitor(java.lang.String addr, int events)Register the address for a monitor. It must be a inproc PAIR.- Parameters:
addr- or null for unregister.events- an event mask to monitor.- Returns:
- true if creation succeeded.
- Throws:
java.lang.IllegalStateException- if a previous monitor was already registered.
-
eventHandshaken
public final void eventHandshaken(java.lang.String addr, int zmtpVersion)
-
eventConnected
public final void eventConnected(java.lang.String addr, java.nio.channels.SelectableChannel ch)
-
eventConnectDelayed
public final void eventConnectDelayed(java.lang.String addr, int errno)
-
eventConnectRetried
public final void eventConnectRetried(java.lang.String addr, int interval)
-
eventListening
public final void eventListening(java.lang.String addr, java.nio.channels.SelectableChannel ch)
-
eventBindFailed
public final void eventBindFailed(java.lang.String addr, int errno)
-
eventAccepted
public final void eventAccepted(java.lang.String addr, java.nio.channels.SelectableChannel ch)
-
eventAcceptFailed
public final void eventAcceptFailed(java.lang.String addr, int errno)
-
eventClosed
public final void eventClosed(java.lang.String addr, java.nio.channels.SelectableChannel ch)
-
eventCloseFailed
public final void eventCloseFailed(java.lang.String addr, int errno)
-
eventDisconnected
public final void eventDisconnected(java.lang.String addr, java.nio.channels.SelectableChannel ch)
-
eventHandshakeFailedNoDetail
public final void eventHandshakeFailedNoDetail(java.lang.String addr, int errno)
-
eventHandshakeFailedProtocol
public final void eventHandshakeFailedProtocol(java.lang.String addr, int errno)
-
eventHandshakeFailedAuth
public final void eventHandshakeFailedAuth(java.lang.String addr, int errno)
-
eventHandshakeSucceeded
public final void eventHandshakeSucceeded(java.lang.String addr, int errno)
-
event
private void event(java.lang.String addr, java.lang.Object arg, int event)
-
monitorEvent
protected final void monitorEvent(ZMQ.Event event)
-
stopMonitor
private void stopMonitor()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getFD
public final java.nio.channels.SelectableChannel getFD()
-
typeString
public java.lang.String typeString()
-
errno
public final int errno()
-
lock
private void lock()
-
unlock
private void unlock()
-
-