Class BaseRequestImpl
- java.lang.Object
-
- org.epics.pvaccess.client.impl.remote.BaseRequestImpl
-
- All Implemented Interfaces:
Lockable,DataResponse,ResponseRequest,SubscriptionRequest,TransportSender
- Direct Known Subclasses:
ChannelArrayRequestImpl,ChannelGetRequestImpl,ChannelMonitorImpl,ChannelProcessRequestImpl,ChannelPutGetRequestImpl,ChannelPutRequestImpl,ChannelRPCRequestImpl
public abstract class BaseRequestImpl extends Object implements DataResponse, SubscriptionRequest, TransportSender
Base channel request.- Version:
- $Id$
- Author:
- Matej Sekoranja
-
-
Field Summary
Fields Modifier and Type Field Description protected ChannelImplchannelChannel.protected static org.epics.pvdata.pv.StatuschannelDestroyedprotected static org.epics.pvdata.pv.StatuschannelNotConnectedprotected ClientContextImplcontextContext.protected booleandestroyedDestroyed flag.protected static org.epics.pvdata.pv.StatusdestroyedStatusprotected static org.epics.pvdata.pv.StatusinvalidBitSetLengthStatusprotected static org.epics.pvdata.pv.StatusinvalidPutArrayStatusprotected static org.epics.pvdata.pv.StatusinvalidPutStructureStatusprotected intioidI/O ID given by the context when registered.protected booleanlastRequestLast request flag.protected ReentrantLocklockprotected static intNULL_REQUESTprotected static org.epics.pvdata.pv.StatusokStatusprotected static org.epics.pvdata.pv.StatusotherRequestPendingStatusprotected intpendingRequestprotected static intPURE_CANCEL_REQUESTprotected static intPURE_DESTROY_REQUESTprotected static org.epics.pvdata.pv.PVDataCreatepvDataCreateprotected org.epics.pvdata.pv.PVStructurepvRequestpvRequest structure.protected booleanremotelyDestroyedRemote instance destroyed.protected org.epics.pvdata.pv.RequesterrequesterResponse callback listener.protected static org.epics.pvdata.pv.StatusCreatestatusCreateprotected booleansubscribedInitialized flag.
-
Constructor Summary
Constructors Constructor Description BaseRequestImpl(ChannelImpl channel, org.epics.pvdata.pv.Requester requester, org.epics.pvdata.pv.PVStructure pvRequest, boolean allowNullPVRequest)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidactivate()voidcancel()Cancel response request.static org.epics.pvdata.misc.BitSetcreateBitSetFor(org.epics.pvdata.pv.PVStructure pvStructure, org.epics.pvdata.misc.BitSet existingBitSet)voiddestroy()protected voiddestroy(boolean createRequestFailed)Actual destroy implementation.ChannelgetChannel()intgetIOID()Get I/O ID.intgetPendingRequest()org.epics.pvdata.pv.RequestergetRequester()Get request requester.voidlastRequest()voidlock()voidreportStatus(org.epics.pvdata.pv.Status status)Report status to clients (e.g.voidresponse(Transport transport, byte version, ByteBuffer payloadBuffer)Notification response.voidresubscribeSubscription(Transport transport)Resubscribe (e.g.static org.epics.pvdata.pv.PVFieldreuseOrCreatePVField(org.epics.pvdata.pv.Field field, org.epics.pvdata.pv.PVField existingPVField)voidsend(ByteBuffer buffer, TransportSendControl control)Called by transport.booleanstartRequest(int qos)voidstopRequest()voidtimeout()Timeout notification.voidunlock()voidupdateSubscription()Update (e.g.
-
-
-
Field Detail
-
statusCreate
protected static final org.epics.pvdata.pv.StatusCreate statusCreate
-
okStatus
protected static final org.epics.pvdata.pv.Status okStatus
-
destroyedStatus
protected static final org.epics.pvdata.pv.Status destroyedStatus
-
channelNotConnected
protected static final org.epics.pvdata.pv.Status channelNotConnected
-
channelDestroyed
protected static final org.epics.pvdata.pv.Status channelDestroyed
-
otherRequestPendingStatus
protected static final org.epics.pvdata.pv.Status otherRequestPendingStatus
-
invalidPutStructureStatus
protected static final org.epics.pvdata.pv.Status invalidPutStructureStatus
-
invalidPutArrayStatus
protected static final org.epics.pvdata.pv.Status invalidPutArrayStatus
-
invalidBitSetLengthStatus
protected static final org.epics.pvdata.pv.Status invalidBitSetLengthStatus
-
pvDataCreate
protected static final org.epics.pvdata.pv.PVDataCreate pvDataCreate
-
channel
protected final ChannelImpl channel
Channel.
-
context
protected final ClientContextImpl context
Context.
-
ioid
protected final int ioid
I/O ID given by the context when registered.
-
requester
protected final org.epics.pvdata.pv.Requester requester
Response callback listener.
-
pvRequest
protected final org.epics.pvdata.pv.PVStructure pvRequest
pvRequest structure.
-
lastRequest
protected volatile boolean lastRequest
Last request flag.
-
destroyed
protected volatile boolean destroyed
Destroyed flag.
-
remotelyDestroyed
protected volatile boolean remotelyDestroyed
Remote instance destroyed.
-
subscribed
protected volatile boolean subscribed
Initialized flag.
-
pendingRequest
protected int pendingRequest
-
NULL_REQUEST
protected static final int NULL_REQUEST
- See Also:
- Constant Field Values
-
PURE_DESTROY_REQUEST
protected static final int PURE_DESTROY_REQUEST
- See Also:
- Constant Field Values
-
PURE_CANCEL_REQUEST
protected static final int PURE_CANCEL_REQUEST
- See Also:
- Constant Field Values
-
lock
protected final ReentrantLock lock
-
-
Constructor Detail
-
BaseRequestImpl
public BaseRequestImpl(ChannelImpl channel, org.epics.pvdata.pv.Requester requester, org.epics.pvdata.pv.PVStructure pvRequest, boolean allowNullPVRequest)
-
-
Method Detail
-
activate
protected void activate()
-
startRequest
public final boolean startRequest(int qos)
-
stopRequest
public final void stopRequest()
-
getPendingRequest
public final int getPendingRequest()
-
getRequester
public org.epics.pvdata.pv.Requester getRequester()
Description copied from interface:ResponseRequestGet request requester.- Specified by:
getRequesterin interfaceResponseRequest- Returns:
- request requester.
-
getIOID
public int getIOID()
Description copied from interface:ResponseRequestGet I/O ID.- Specified by:
getIOIDin interfaceResponseRequest- Returns:
- ioid
-
response
public void response(Transport transport, byte version, ByteBuffer payloadBuffer)
Description copied from interface:DataResponseNotification response.- Specified by:
responsein interfaceDataResponse- Parameters:
transport- transport to use.version- protocol version.payloadBuffer- the data.
-
cancel
public void cancel()
Description copied from interface:ResponseRequestCancel response request.- Specified by:
cancelin interfaceResponseRequest
-
destroy
protected void destroy(boolean createRequestFailed)
Actual destroy implementation.- Parameters:
createRequestFailed- set to true if create request failed.
-
destroy
public void destroy()
-
timeout
public void timeout()
Description copied from interface:ResponseRequestTimeout notification.- Specified by:
timeoutin interfaceResponseRequest
-
reportStatus
public void reportStatus(org.epics.pvdata.pv.Status status)
Description copied from interface:ResponseRequestReport status to clients (e.g. disconnected).- Specified by:
reportStatusin interfaceResponseRequest- Parameters:
status- to report.
-
send
public void send(ByteBuffer buffer, TransportSendControl control)
Description copied from interface:TransportSenderCalled by transport. By this call transport gives callee ownership over the buffer. Calls onTransportSendControlinstance must be made from calling thread. Moreover, ownership is valid only for the time of call of this method. NOTE: these limitations allow efficient implementation.- Specified by:
sendin interfaceTransportSender- Parameters:
buffer- buffer to send.control- transport send control instance.
-
createBitSetFor
public static final org.epics.pvdata.misc.BitSet createBitSetFor(org.epics.pvdata.pv.PVStructure pvStructure, org.epics.pvdata.misc.BitSet existingBitSet)
-
reuseOrCreatePVField
public static final org.epics.pvdata.pv.PVField reuseOrCreatePVField(org.epics.pvdata.pv.Field field, org.epics.pvdata.pv.PVField existingPVField)
-
resubscribeSubscription
public void resubscribeSubscription(Transport transport)
Description copied from interface:SubscriptionRequestResubscribe (e.g. when server was restarted)- Specified by:
resubscribeSubscriptionin interfaceSubscriptionRequest- Parameters:
transport- new transport to be used.
-
updateSubscription
public void updateSubscription()
Description copied from interface:SubscriptionRequestUpdate (e.g. after some time of unresponsiveness) - report current value.- Specified by:
updateSubscriptionin interfaceSubscriptionRequest
-
lastRequest
public void lastRequest()
-
getChannel
public Channel getChannel()
-
-