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 class
SocketBase.EndpointPipe
private static class
SocketBase.SimpleURI
-
Field Summary
Fields Modifier and Type Field Description private boolean
active
protected java.lang.String
connectRid
private java.util.concurrent.atomic.AtomicBoolean
ctxTerminated
private java.util.concurrent.atomic.AtomicBoolean
destroyed
private MultiMap<java.lang.String,SocketBase.EndpointPipe>
endpoints
private java.nio.channels.SocketChannel
fileDesc
private Poller.Handle
handle
private MultiMap<java.lang.String,Pipe>
inprocs
private java.lang.ThreadLocal<java.lang.Boolean>
isInEventThreadLocal
private long
lastTsc
private IMailbox
mailbox
private int
monitorEvents
private SocketBase
monitorSocket
private java.util.concurrent.locks.ReentrantLock
monitorSync
private java.util.Set<Pipe>
pipes
private Poller
poller
private boolean
rcvmore
private Signaler
reaperSignaler
private boolean
threadSafe
private java.util.concurrent.locks.ReentrantLock
threadSafeSync
private int
ticks
-
Constructor Summary
Constructors Modifier Constructor Description protected
SocketBase(Ctx parent, int tid, int sid)
protected
SocketBase(Ctx parent, int tid, int sid, boolean threadSafe)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description private void
addEndpoint(java.lang.String addr, Own endpoint, Pipe pipe)
private void
attachPipe(Pipe pipe, boolean isLocallyInitiated)
private void
attachPipe(Pipe pipe, boolean subscribe2all, boolean isLocallyInitiated)
boolean
bind(java.lang.String addr)
void
cancel(java.util.concurrent.atomic.AtomicBoolean canceled)
private void
checkDestroy()
private NetProtocol
checkProtocol(java.lang.String protocol)
void
close()
boolean
connect(java.lang.String addr)
private boolean
connectInternal(java.lang.String addr)
int
connectPeer(java.lang.String addr)
protected void
destroy()
boolean
disconnectPeer(int routingId)
private void
enterInEvent()
int
errno()
private void
event(java.lang.String addr, java.lang.Object arg, int event)
void
eventAccepted(java.lang.String addr, java.nio.channels.SelectableChannel ch)
void
eventAcceptFailed(java.lang.String addr, int errno)
void
eventBindFailed(java.lang.String addr, int errno)
void
eventClosed(java.lang.String addr, java.nio.channels.SelectableChannel ch)
void
eventCloseFailed(java.lang.String addr, int errno)
void
eventConnectDelayed(java.lang.String addr, int errno)
void
eventConnected(java.lang.String addr, java.nio.channels.SelectableChannel ch)
void
eventConnectRetried(java.lang.String addr, int interval)
void
eventDisconnected(java.lang.String addr, java.nio.channels.SelectableChannel ch)
void
eventHandshakeFailedAuth(java.lang.String addr, int errno)
void
eventHandshakeFailedNoDetail(java.lang.String addr, int errno)
void
eventHandshakeFailedProtocol(java.lang.String addr, int errno)
void
eventHandshaken(java.lang.String addr, int zmtpVersion)
void
eventHandshakeSucceeded(java.lang.String addr, int errno)
void
eventListening(java.lang.String addr, java.nio.channels.SelectableChannel ch)
private void
extractFlags(Msg msg)
protected Blob
getCredential()
java.nio.channels.SelectableChannel
getFD()
(package private) IMailbox
getMailbox()
int
getSocketOpt(int option)
java.lang.Object
getSocketOptx(int option)
(package private) boolean
hasIn()
(package private) boolean
hasOut()
void
hiccuped(Pipe pipe)
void
inEvent()
Called by I/O thread when file descriptor is ready for reading.(package private) boolean
isActive()
private boolean
isInEvent()
boolean
join(java.lang.String group)
boolean
leave(java.lang.String group)
private void
leaveInEvent()
private void
lock()
boolean
monitor(java.lang.String addr, int events)
Register the address for a monitor.protected void
monitorEvent(ZMQ.Event event)
void
pipeTerminated(Pipe pipe)
int
poll(int interest, int timeout, java.util.concurrent.atomic.AtomicBoolean canceled)
protected void
processBind(Pipe pipe)
private boolean
processCommands(int timeout, boolean throttle, java.util.concurrent.atomic.AtomicBoolean canceled)
protected void
processDestroy()
protected void
processStop()
protected void
processTerm(int linger)
void
readActivated(Pipe pipe)
Msg
recv(int flags)
Msg
recv(int flags, java.util.concurrent.atomic.AtomicBoolean canceled)
boolean
send(Msg msg, int flags)
boolean
send(Msg msg, int flags, java.util.concurrent.atomic.AtomicBoolean canceled)
boolean
setSocketOpt(int option, java.lang.Object optval)
(package private) void
startReaping(Poller poller)
(package private) void
stop()
private void
stopMonitor()
boolean
termEndpoint(java.lang.String addr)
java.lang.String
toString()
java.lang.String
typeString()
private void
unlock()
void
writeActivated(Pipe pipe)
protected abstract void
xattachPipe(Pipe pipe, boolean subscribe2all, boolean isLocallyInitiated)
protected boolean
xdisconnectPeer(int routingId)
protected boolean
xhasIn()
protected boolean
xhasOut()
protected void
xhiccuped(Pipe pipe)
protected boolean
xjoin(java.lang.String group)
protected boolean
xleave(java.lang.String group)
protected abstract void
xpipeTerminated(Pipe pipe)
protected void
xreadActivated(Pipe pipe)
protected Msg
xrecv()
protected boolean
xsend(Msg msg)
protected boolean
xsetsockopt(int option, java.lang.Object optval)
protected void
xwriteActivated(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:
processStop
in classZObject
-
processBind
protected final void processBind(Pipe pipe)
- Overrides:
processBind
in classZObject
-
processTerm
protected final void processTerm(int linger)
- Overrides:
processTerm
in classOwn
-
processDestroy
protected final void processDestroy()
- Overrides:
processDestroy
in 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:IPollEvents
Called by I/O thread when file descriptor is ready for reading.- Specified by:
inEvent
in interfaceIPollEvents
-
checkDestroy
private void checkDestroy()
-
readActivated
public final void readActivated(Pipe pipe)
- Specified by:
readActivated
in interfacePipe.IPipeEvents
-
writeActivated
public final void writeActivated(Pipe pipe)
- Specified by:
writeActivated
in interfacePipe.IPipeEvents
-
hiccuped
public final void hiccuped(Pipe pipe)
- Specified by:
hiccuped
in interfacePipe.IPipeEvents
-
pipeTerminated
public final void pipeTerminated(Pipe pipe)
- Specified by:
pipeTerminated
in 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:
toString
in 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()
-
-