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 ChannelImpl
channel
Channel.protected static org.epics.pvdata.pv.Status
channelDestroyed
protected static org.epics.pvdata.pv.Status
channelNotConnected
protected ClientContextImpl
context
Context.protected boolean
destroyed
Destroyed flag.protected static org.epics.pvdata.pv.Status
destroyedStatus
protected static org.epics.pvdata.pv.Status
invalidBitSetLengthStatus
protected static org.epics.pvdata.pv.Status
invalidPutArrayStatus
protected static org.epics.pvdata.pv.Status
invalidPutStructureStatus
protected int
ioid
I/O ID given by the context when registered.protected boolean
lastRequest
Last request flag.protected ReentrantLock
lock
protected static int
NULL_REQUEST
protected static org.epics.pvdata.pv.Status
okStatus
protected static org.epics.pvdata.pv.Status
otherRequestPendingStatus
protected int
pendingRequest
protected static int
PURE_CANCEL_REQUEST
protected static int
PURE_DESTROY_REQUEST
protected static org.epics.pvdata.pv.PVDataCreate
pvDataCreate
protected org.epics.pvdata.pv.PVStructure
pvRequest
pvRequest structure.protected boolean
remotelyDestroyed
Remote instance destroyed.protected org.epics.pvdata.pv.Requester
requester
Response callback listener.protected static org.epics.pvdata.pv.StatusCreate
statusCreate
protected boolean
subscribed
Initialized 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 void
activate()
void
cancel()
Cancel response request.static org.epics.pvdata.misc.BitSet
createBitSetFor(org.epics.pvdata.pv.PVStructure pvStructure, org.epics.pvdata.misc.BitSet existingBitSet)
void
destroy()
protected void
destroy(boolean createRequestFailed)
Actual destroy implementation.Channel
getChannel()
int
getIOID()
Get I/O ID.int
getPendingRequest()
org.epics.pvdata.pv.Requester
getRequester()
Get request requester.void
lastRequest()
void
lock()
void
reportStatus(org.epics.pvdata.pv.Status status)
Report status to clients (e.g.void
response(Transport transport, byte version, ByteBuffer payloadBuffer)
Notification response.void
resubscribeSubscription(Transport transport)
Resubscribe (e.g.static org.epics.pvdata.pv.PVField
reuseOrCreatePVField(org.epics.pvdata.pv.Field field, org.epics.pvdata.pv.PVField existingPVField)
void
send(ByteBuffer buffer, TransportSendControl control)
Called by transport.boolean
startRequest(int qos)
void
stopRequest()
void
timeout()
Timeout notification.void
unlock()
void
updateSubscription()
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:ResponseRequest
Get request requester.- Specified by:
getRequester
in interfaceResponseRequest
- Returns:
- request requester.
-
getIOID
public int getIOID()
Description copied from interface:ResponseRequest
Get I/O ID.- Specified by:
getIOID
in interfaceResponseRequest
- Returns:
- ioid
-
response
public void response(Transport transport, byte version, ByteBuffer payloadBuffer)
Description copied from interface:DataResponse
Notification response.- Specified by:
response
in interfaceDataResponse
- Parameters:
transport
- transport to use.version
- protocol version.payloadBuffer
- the data.
-
cancel
public void cancel()
Description copied from interface:ResponseRequest
Cancel response request.- Specified by:
cancel
in 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:ResponseRequest
Timeout notification.- Specified by:
timeout
in interfaceResponseRequest
-
reportStatus
public void reportStatus(org.epics.pvdata.pv.Status status)
Description copied from interface:ResponseRequest
Report status to clients (e.g. disconnected).- Specified by:
reportStatus
in interfaceResponseRequest
- Parameters:
status
- to report.
-
send
public void send(ByteBuffer buffer, TransportSendControl control)
Description copied from interface:TransportSender
Called by transport. By this call transport gives callee ownership over the buffer. Calls onTransportSendControl
instance 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:
send
in 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:SubscriptionRequest
Resubscribe (e.g. when server was restarted)- Specified by:
resubscribeSubscription
in interfaceSubscriptionRequest
- Parameters:
transport
- new transport to be used.
-
updateSubscription
public void updateSubscription()
Description copied from interface:SubscriptionRequest
Update (e.g. after some time of unresponsiveness) - report current value.- Specified by:
updateSubscription
in interfaceSubscriptionRequest
-
lastRequest
public void lastRequest()
-
getChannel
public Channel getChannel()
-
-