56 pvaClientPut.resize(nchannel);
57 shared_vector<epics::pvData::boolean> isConnected = pvaClientMultiChannel->getIsConnected();
58 for(
size_t i=0; i<nchannel; ++i)
61 pvaClientPut[i] = pvaClientChannelArray[i]->createPut();
62 pvaClientPut[i]->issueConnect();
65 for(
size_t i=0; i<nchannel; ++i)
68 Status status = pvaClientPut[i]->waitConnect();
69 if(status.isOK())
continue;
70 string message = string(
"channel ") +pvaClientChannelArray[i]->getChannelName()
71 +
" PvaChannelPut::waitConnect " + status.getMessage();
72 throw std::runtime_error(message);
75 for(
size_t i=0; i<nchannel; ++i)
78 pvaClientPut[i]->issueGet();
81 for(
size_t i=0; i<nchannel; ++i)
84 Status status = pvaClientPut[i]->waitGet();
85 if(status.isOK())
continue;
86 string message = string(
"channel ") +pvaClientChannelArray[i]->getChannelName()
87 +
" PvaChannelPut::waitGet " + status.getMessage();
88 throw std::runtime_error(message);
91 FieldCreatePtr fieldCreate = getFieldCreate();
92 PVDataCreatePtr pvDataCreate = getPVDataCreate();
93 for(
size_t i=0; i<nchannel; ++i)
96 value[i] = pvaClientPut[i]->getData()->getValue();
97 FieldBuilderPtr builder = fieldCreate->createFieldBuilder();
98 builder->add(
"value",value[i]->getField());
99 unionValue[i] = pvDataCreate->createPVUnion(builder->createUnion());
102 this->isConnected =
true;
108 shared_vector<epics::pvData::boolean> isConnected = pvaClientMultiChannel->getIsConnected();
109 for(
size_t i=0; i<nchannel; ++i)
112 if(!pvaClientPut[i]){
113 pvaClientPut[i] = pvaClientChannelArray[i]->createPut();
114 pvaClientPut[i]->connect();
115 pvaClientPut[i]->get();
116 value[i] = pvaClientPut[i]->getData()->getValue();
117 FieldCreatePtr fieldCreate = getFieldCreate();
118 PVDataCreatePtr pvDataCreate = getPVDataCreate();
119 FieldBuilderPtr builder = fieldCreate->createFieldBuilder();
120 builder->add(
"value",value[i]->getField());
121 unionValue[i] = pvDataCreate->createPVUnion(builder->createUnion());
131 shared_vector<epics::pvData::boolean> isConnected = pvaClientMultiChannel->getIsConnected();
132 for(
size_t i=0; i<nchannel; ++i)
135 if(!pvaClientPut[i]){
136 pvaClientPut[i] = pvaClientChannelArray[i]->createPut();
137 pvaClientPut[i]->connect();
138 pvaClientPut[i]->get();
139 value[i] = pvaClientPut[i]->getData()->getValue();
140 FieldCreatePtr fieldCreate = getFieldCreate();
141 PVDataCreatePtr pvDataCreate = getPVDataCreate();
142 FieldBuilderPtr builder = fieldCreate->createFieldBuilder();
143 builder->add(
"value",value[i]->getField());
144 unionValue[i] = pvDataCreate->createPVUnion(builder->createUnion());
146 value[i]->copy(*unionValue[i]->get());
147 pvaClientPut[i]->issuePut();
150 for(
size_t i=0; i<nchannel; ++i)
153 Status status = pvaClientPut[i]->waitPut();
154 if(status.isOK())
continue;
155 string message = string(
"channel ") +pvaClientChannelArray[i]->getChannelName()
156 +
" PvaChannelPut::waitPut " + status.getMessage();
157 throw std::runtime_error(message);