pvaClientPutGet is a synchronous wrapper for the pvAccess::ChannelPutGet API, which is a callback based API. Thus it is easier to use than pvAccess::ChannelPut itself.
NOTE: Except for union fields pvaClientPutGet takes care of modifying the bitSet associated with the data sent to the server.
An instance of PvaClientPutGet is created via a call to one of the followimg:
class PvaClientChannel ... { ... PvaClientPutGetPtr createPutGet(std::string const & request); PvaClientPutGetPtr createPutGet(epics::pvData::PVStructurePtr const & pvRequest); ... };An instance of PvaClientPutGet connects to a single channel. PvaClientPutGet has both synchronous methods, which block, and non blocking methods.
PvaClientPutGet has methods:
connect calls issueConnect and then waitConnect. issueConnect issues a request to the server to create the server side of ChannelPut. waitConnect blocks until server responds that it has created the ChannelPut. putGet call issuePutGet and then waitPutGet. issuePutGet issue a putGet and return immediately. waitPutGet wait until putGet completes. getGet calls issueGetGet and then waitGetGet. issueGetGet issues a request to the server to get the latest data for the get data. waitGetGet waits until the server send a message that the getGet is complete. getPut calls issueGetPut and then waitGetPut. issueGetPut issues a request to the server to get the latest data for the put data. waitGetPut waits until the server send a message that the getPut is complete. getPutData get the put portion of the data. getGetData get the get portion of the data.issueConnect, issuePutGet, issueGetGet and issueGetPut do not block. All other methods can block.