# PvaClientChannelPut

s

pvaClientPut is a synchronous wrapper for the pvAccess::ChannelPut API, which is a callback based API. Thus it is easier to use than pvAccess::ChannelPut itself.

NOTE: Except for union fields pvaClientPut takes care of modifying the bitSet associated with the data sent to the server.

An instance of PvaClientPut is created via a call to one of the followimg:

    class PvaClientChannel
    ...
    {
    ...
        PvaClientPutPtr put(std::string const & request = "field(value,alarm,timeStamp)");
        PvaClientPutPtr createPut(std::string const & request = "");
        PvaClientPutPtr createPut(epics::pvData::PVStructurePtr const &  pvRequest);
    ...
    };
    An instance of PvaClientPut/b> connects to a single channel.
    PvaClientPut has both synchronous methods, which block, and non blocking methods.

    PvaClientPut 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.
    get                 Calls issueGet and then waitGet.
    issueGet            issues a request to the server to get the latest data.
    waitGet             waits until the server send a message that the get is complete.
    put                 Calls issuePut and then waitPut.
    issuePut            issues a put request to the server.
    waitPut             waits until the server send a message that the put is complete.
    getData             get the data.

    Note that issueConnect, issueGet  and issuePut do not block but all other methods
    do block.