Package org.epics.ca.impl
Class ChannelImpl<T>
- java.lang.Object
-
- org.epics.ca.impl.ChannelImpl<T>
-
- All Implemented Interfaces:
java.lang.AutoCloseable,Channel<T>,TransportClient
public class ChannelImpl<T> extends java.lang.Object implements Channel<T>, TransportClient
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.atomic.AtomicReference<AccessRights>accessRightsprotected org.epics.ca.impl.ChannelImpl.AccessRightsStatefullEventSourceaccessRightsEventSourceprotected java.util.Map<org.epics.ca.impl.ChannelImpl.AccessRightsListener,java.util.function.BiConsumer<Channel<T>,AccessRights>>accessRightsListenersprotected booleanallowCreationprotected java.lang.Class<T>channelTypeprotected intcidprotected java.util.concurrent.atomic.AtomicReference<java.util.concurrent.CompletableFuture<Channel<T>>>connectFutureprotected java.util.Map<org.epics.ca.impl.ChannelImpl.ConnectionListener,java.util.function.BiConsumer<Channel<T>,java.lang.Boolean>>connectionListenersprotected java.util.concurrent.atomic.AtomicReference<ConnectionState>connectionStateprotected org.epics.ca.impl.ChannelImpl.ConnectionStateStatefullEventSourceconnectionStateEventSourceprotected java.util.concurrent.atomic.AtomicBooleanconnectIssueedprotected ContextImplcontextprotected intINVALID_SIDprotected java.lang.Stringnameprotected intnativeElementCountprotected intpriorityprotected java.util.Map<java.lang.String,java.lang.Object>propertiesprotected IntHashMap<ResponseRequest>responseRequestsprotected intsidprotected java.util.concurrent.atomic.AtomicReference<java.lang.Object>timerIdRefprotected TCPTransporttransportprotected TypeSupports.TypeSupport<T>typeSupport
-
Constructor Summary
Constructors Constructor Description ChannelImpl(ContextImpl context, java.lang.String name, java.lang.Class<T> channelType, int priority)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ListeneraddAccessRightListener(java.util.function.BiConsumer<Channel<T>,AccessRights> handler)ListeneraddConnectionListener(java.util.function.BiConsumer<Channel<T>,java.lang.Boolean> handler)<MT extends Metadata<T>>
Monitor<MT>addMonitor(java.lang.Class<? extends Metadata> clazz, java.util.function.Consumer<MT> handler, int mask)Monitor<T>addValueMonitor(java.util.function.Consumer<? super T> handler, int mask)voidclose()Channel<T>connect()java.util.concurrent.CompletableFuture<Channel<T>>connectAsync()voidconnectionCompleted(int sid, short typeCode, int elementCount)Called when channel created succeeded on the server.protected TCPTransportconnectionRequiredCheck()voidcreateChannel(TCPTransport transport, int sid, short typeCode, int elementCount)Create a channel, i.e.voidcreateChannelFailed()voiddisconnect(boolean reconnect)booleangenerateSearchRequestMessage(Transport transport, java.nio.ByteBuffer buffer)Send search message.Tget()<MT extends Metadata<T>>
MTget(java.lang.Class<? extends Metadata> clazz)AccessRightsgetAccessRights()java.util.concurrent.CompletableFuture<T>getAsync()<MT extends Metadata<T>>
java.util.concurrent.CompletableFuture<MT>getAsync(java.lang.Class<? extends Metadata> clazz)intgetCID()intgetConnectionLossId()ConnectionStategetConnectionState()java.lang.StringgetName()intgetNativeElementCount()intgetPriority()java.util.Map<java.lang.String,java.lang.Object>getProperties()intgetSID()java.lang.ObjectgetTimerId()TCPTransportgetTransport()TypeSupports.TypeSupport<T>getTypeSupport()voidinitiateSearch()Initiate search (connect) procedure.voidput(T value)java.util.concurrent.CompletableFuture<Status>putAsync(T value)voidputNoWait(T value)voidregisterResponseRequest(ResponseRequest responseRequest)Register a response request.voidresubscribeSubscriptions(Transport transport)voidsetAccessRights(int rightsCode)voidsetAccessRights(AccessRights rights)voidsetConnectionState(ConnectionState state)voidsetTimerId(java.lang.Object timerId)voidtransportClosed()Notification of forcefully closed transport.voidunregisterResponseRequest(ResponseRequest responseRequest)Unregister a response request.-
Methods inherited from interface org.epics.ca.Channel
addMonitor, addValueMonitor
-
-
-
-
Field Detail
-
context
protected final ContextImpl context
-
name
protected final java.lang.String name
-
channelType
protected final java.lang.Class<T> channelType
-
priority
protected final int priority
-
cid
protected final int cid
-
INVALID_SID
protected final int INVALID_SID
- See Also:
- Constant Field Values
-
sid
protected int sid
-
transport
protected TCPTransport transport
-
properties
protected final java.util.Map<java.lang.String,java.lang.Object> properties
-
connectionState
protected final java.util.concurrent.atomic.AtomicReference<ConnectionState> connectionState
-
accessRights
protected final java.util.concurrent.atomic.AtomicReference<AccessRights> accessRights
-
responseRequests
protected final IntHashMap<ResponseRequest> responseRequests
-
typeSupport
protected final TypeSupports.TypeSupport<T> typeSupport
-
connectIssueed
protected final java.util.concurrent.atomic.AtomicBoolean connectIssueed
-
connectFuture
protected final java.util.concurrent.atomic.AtomicReference<java.util.concurrent.CompletableFuture<Channel<T>>> connectFuture
-
allowCreation
protected boolean allowCreation
-
nativeElementCount
protected volatile int nativeElementCount
-
connectionListeners
protected final java.util.Map<org.epics.ca.impl.ChannelImpl.ConnectionListener,java.util.function.BiConsumer<Channel<T>,java.lang.Boolean>> connectionListeners
-
accessRightsListeners
protected final java.util.Map<org.epics.ca.impl.ChannelImpl.AccessRightsListener,java.util.function.BiConsumer<Channel<T>,AccessRights>> accessRightsListeners
-
timerIdRef
protected final java.util.concurrent.atomic.AtomicReference<java.lang.Object> timerIdRef
-
accessRightsEventSource
protected final org.epics.ca.impl.ChannelImpl.AccessRightsStatefullEventSource accessRightsEventSource
-
connectionStateEventSource
protected final org.epics.ca.impl.ChannelImpl.ConnectionStateStatefullEventSource connectionStateEventSource
-
-
Constructor Detail
-
ChannelImpl
public ChannelImpl(ContextImpl context, java.lang.String name, java.lang.Class<T> channelType, int priority)
-
-
Method Detail
-
close
public void close()
-
getConnectionState
public ConnectionState getConnectionState()
- Specified by:
getConnectionStatein interfaceChannel<T>
-
getConnectionLossId
public int getConnectionLossId()
-
getAccessRights
public AccessRights getAccessRights()
- Specified by:
getAccessRightsin interfaceChannel<T>
-
getCID
public int getCID()
-
getSID
public int getSID()
-
connectAsync
public java.util.concurrent.CompletableFuture<Channel<T>> connectAsync()
- Specified by:
connectAsyncin interfaceChannel<T>
-
addConnectionListener
public Listener addConnectionListener(java.util.function.BiConsumer<Channel<T>,java.lang.Boolean> handler)
- Specified by:
addConnectionListenerin interfaceChannel<T>
-
addAccessRightListener
public Listener addAccessRightListener(java.util.function.BiConsumer<Channel<T>,AccessRights> handler)
- Specified by:
addAccessRightListenerin interfaceChannel<T>
-
getAsync
public java.util.concurrent.CompletableFuture<T> getAsync()
-
getAsync
public <MT extends Metadata<T>> java.util.concurrent.CompletableFuture<MT> getAsync(java.lang.Class<? extends Metadata> clazz)
-
addValueMonitor
public Monitor<T> addValueMonitor(java.util.function.Consumer<? super T> handler, int mask)
- Specified by:
addValueMonitorin interfaceChannel<T>
-
addMonitor
public <MT extends Metadata<T>> Monitor<MT> addMonitor(java.lang.Class<? extends Metadata> clazz, java.util.function.Consumer<MT> handler, int mask)
- Specified by:
addMonitorin interfaceChannel<T>
-
getProperties
public java.util.Map<java.lang.String,java.lang.Object> getProperties()
- Specified by:
getPropertiesin interfaceChannel<T>
-
setTimerId
public void setTimerId(java.lang.Object timerId)
-
getTimerId
public java.lang.Object getTimerId()
-
initiateSearch
public void initiateSearch()
Initiate search (connect) procedure.
-
createChannel
public void createChannel(TCPTransport transport, int sid, short typeCode, int elementCount)
Create a channel, i.e. submit create channel request to the server. This method is called after search is complete.sid,typeCode,elementCountmight not be valid, this depends on protocol revision.- Parameters:
transport- the transport.sid- the CA server ID.typeCode- the CA DBR typecode.elementCount- the number of elements to be associated with each CA get/put/monitor operation.
-
setAccessRights
public void setAccessRights(int rightsCode)
-
setAccessRights
public void setAccessRights(AccessRights rights)
-
setConnectionState
public void setConnectionState(ConnectionState state)
-
connectionRequiredCheck
protected TCPTransport connectionRequiredCheck()
-
resubscribeSubscriptions
public void resubscribeSubscriptions(Transport transport)
-
connectionCompleted
public void connectionCompleted(int sid, short typeCode, int elementCount) throws java.lang.IllegalStateExceptionCalled when channel created succeeded on the server.sidmight not be valid, this depends on protocol revision.- Parameters:
sid- the CA server ID.typeCode- the CA DBR typecode.elementCount- the number of elements to be associated with each CA get/put/monitor operation.- Throws:
java.lang.IllegalStateException- if the channel was in an unexpected stated.
-
createChannelFailed
public void createChannelFailed()
-
generateSearchRequestMessage
public boolean generateSearchRequestMessage(Transport transport, java.nio.ByteBuffer buffer)
Send search message.- Parameters:
transport- the transport.buffer- the buffer to send.- Returns:
- success status.
-
getTransport
public TCPTransport getTransport()
-
getPriority
public int getPriority()
-
getNativeElementCount
public int getNativeElementCount()
-
transportClosed
public void transportClosed()
Description copied from interface:TransportClientNotification of forcefully closed transport.- Specified by:
transportClosedin interfaceTransportClient
-
disconnect
public void disconnect(boolean reconnect)
-
registerResponseRequest
public void registerResponseRequest(ResponseRequest responseRequest)
Register a response request.- Parameters:
responseRequest- response request to register.
-
unregisterResponseRequest
public void unregisterResponseRequest(ResponseRequest responseRequest)
Unregister a response request.- Parameters:
responseRequest- response request to unregister.
-
getTypeSupport
public TypeSupports.TypeSupport<T> getTypeSupport()
-
-