epics-base / pvaClientCPP

pvaClientCPP is an EPICS V4 C++ module
http://epics-pvdata.sourceforge.net/index.html
Other
2 stars 8 forks source link

PvaClientMultiChannel support for both pva and ca channels #72

Closed rtsoliday closed 9 months ago

rtsoliday commented 3 years ago

I believe that currently PvaClientMultiChannel requires that all the channels either be pva or ca. I would like to request the ability to pass an array of provider names so that it can better support a mixed environment.

mrkraimer commented 3 years ago

I have created a new branch multichannelmultiprovider. I will make changes there.

mrkraimer commented 3 years ago

I just pushed changes on branch multichannelmultiprovider. Note the new semantics:

/** @brief Create a PvaClientMultiChannel.
 * @param pvaClient The interface to pvaClient.
 * @param channelNames The names of the channel..
 * @param providerName The name of the provider.
 * This is also used for the provider for all channels
 * with providerNames.size less than channelNames.size()
 * @param maxNotConnected The maximum number of channels that can be disconnected.
 * @param providerNames The providerName for each Channells
 * @return The interface to the PvaClientMultiChannel
 */
static PvaClientMultiChannelPtr create(
     PvaClientPtr const &pvaClient,
     epics::pvData::shared_vector<const std::string> const & channelNames,
     std::string const & providerName = "pva",
     size_t maxNotConnected=0,
     epics::pvData::shared_vector<const std::string> const & providerNames
         = epics::pvData::shared_vector<const std::string>()
 );

I have done a simple test but still want to do more testing.

Bob,

Can you try it?

rtsoliday commented 3 years ago

It is working for me. Thanks.

anjohnson commented 9 months ago

This support was merged with PR #73.