189 printf(
"PVA links not initialized\n");
193 if (!precordname || precordname[0] ==
'\0' || !strcmp(precordname,
"*")) {
195 printf(
"PVA links in all records\n\n");
197 printf(
"PVA links in record named '%s'\n\n", precordname);
200 size_t nchans = 0, nlinks = 0, nconn = 0;
208 for(pvaGlobal_t::channels_t::const_iterator it(channels.begin()), end(channels.end());
211 std::tr1::shared_ptr<pvaLinkChannel> chan(it->second.lock());
219 for(pvaLinkChannel::links_t::const_iterator it2(chan->links.begin()), end2(chan->links.end());
234 if(chan->connected_latched)
238 nlinks += chan->links.size();
243 if(level>=2 || (!chan->connected_latched && level==1)) {
244 if(chan->key.first.size()<=28) {
245 printf(
"%28s ", chan->key.first.c_str());
247 printf(
"%s\t", chan->key.first.c_str());
250 printf(
"conn=%c %zu disconnects, %zu type changes",
251 chan->connected_latched?
'T':
'F',
252 chan->num_disconnect,
253 chan->num_type_change);
254 if(chan->op_put.valid()) {
259 printf(
", provider '%s'", chan->providerName.c_str());
265 for(pvaLinkChannel::links_t::const_iterator it2(chan->links.begin()), end2(chan->links.end());
275 const char *fldname =
"???";
279 if(rec.ent.pfield == (
void*)pval->
plink) {
280 fldname = rec.ent.pflddes->name;
288 case pvaLinkConfig::NPP:
printf(
" NPP");
break;
289 case pvaLinkConfig::Default:
printf(
" Def");
break;
290 case pvaLinkConfig::PP:
printf(
" PP");
break;
291 case pvaLinkConfig::CP:
printf(
" CP");
break;
292 case pvaLinkConfig::CPP:
printf(
" CPP");
break;
295 case pvaLinkConfig::NMS:
printf(
" NMS");
break;
296 case pvaLinkConfig::MS:
printf(
" MS");
break;
297 case pvaLinkConfig::MSI:
printf(
" MSI");
break;
300 printf(
" Q=%u pipe=%c defer=%c time=%c retry=%c morder=%d\n",
303 pval->
defer ?
'T' :
'F',
304 pval->
time ?
'T' :
'F',
305 pval->
retry ?
'T' :
'F',
313 printf(
" %zu/%zu channels connected used by %zu links\n",
314 nconn, nchans, nlinks);
316 }
catch(std::exception& e) {
317 fprintf(
stderr,
"Error: %s\n", e.what());
long dbFirstField(DBENTRY *pdbentry, int dctonly)
enum pvalink::pvaLinkConfig::pp_t pp
struct dbCommon * precord
int epicsStrGlobMatch(const char *str, const char *pattern)
enum pvalink::pvaLinkConfig::ms_t ms
long dbNextField(DBENTRY *pdbentry, int dctonly)
std::map< channels_key_t, std::tr1::weak_ptr< pvaLinkChannel > > channels_t