524 bool printInfo =
false;
533 while ((opt =
getopt(argc, argv,
":hVw:qdF:f:i")) != -1) {
540 fprintf(
stdout,
"pvAccess %u.%u.%u%s\n",
541 EPICS_PVA_MAJOR_VERSION,
542 EPICS_PVA_MINOR_VERSION,
543 EPICS_PVA_MAINTENANCE_VERSION,
544 (EPICS_PVA_DEVELOPMENT_FLAG)?
"-SNAPSHOT":
"");
545 fprintf(
stdout,
"pvData %u.%u.%u%s\n",
546 EPICS_PVD_MAJOR_VERSION,
547 EPICS_PVD_MINOR_VERSION,
548 EPICS_PVD_MAINTENANCE_VERSION,
549 (EPICS_PVD_DEVELOPMENT_FLAG)?
"-SNAPSHOT":
"");
550 fprintf(
stdout,
"Base %s\n", EPICS_VERSION_FULL);
556 fprintf(
stderr,
"'%s' is not a valid timeout value " 557 "- ignored. ('pvlist -h' for help.)\n",
optarg);
571 "Unrecognized option: '-%c'. ('pvlist -h' for help.)\n",
576 "Option '-%c' requires an argument. ('pvlist -h' for help.)\n",
587 bool noArgs = (
optind == argc);
589 bool byGUIDSearch =
false;
592 string serverAddress = argv[
i];
595 if (serverAddress.length() == 26 &&
596 serverAddress[0] ==
'0' &&
597 serverAddress[1] ==
'x')
606 if (noArgs || byGUIDSearch)
607 discoverServers(timeOut);
612 for (ServerMap::const_iterator iter = serverMap.begin();
613 iter != serverMap.end();
616 const ServerEntry&
entry = iter->second;
618 cout <<
"GUID 0x" << entry.guid <<
" version " << (int)entry.version <<
": " 619 << entry.protocol <<
"@[ ";
621 size_t count = entry.addresses.size();
622 for (
size_t i = 0;
i < count;
i++)
628 cout <<
" ]" << endl;
635 string serverAddress = argv[
i];
638 if (serverAddress.length() == 26 &&
639 serverAddress[0] ==
'0' &&
640 serverAddress[1] ==
'x')
642 bool resolved =
false;
643 for (ServerMap::const_iterator iter = serverMap.begin();
644 iter != serverMap.end();
647 const ServerEntry& entry = iter->second;
649 if (strncmp(entry.guid.c_str(), &(serverAddress[2]), 24) == 0)
662 fprintf(
stderr,
"Failed to resolve GUID '%s'!\n", serverAddress.c_str());
669 ->setId(
"epics:nt/NTURI:1.0")
672 ->addNestedStructure(
"query")
675 ->createStructure());
677 PVStructure::shared_pointer args(
getPVDataCreate()->createPVStructure(argstype));
679 args->getSubFieldT<
PVString>(
"scheme")->
put(
"pva");
680 args->getSubFieldT<
PVString>(
"path")->
put(
"server");
681 args->getSubFieldT<
PVString>(
"query.op")->
put(printInfo ?
"info" :
"channels");
684 std::cerr<<
"Query to "<<serverAddress<<
"\n"<<args<<
"\n";
687 PVStructure::shared_pointer ret;
691 ChannelProvider::shared_pointer(),
695 std::cerr<<
"Execute\n";
696 ret = rpc.request(args, timeOut,
true);
697 }
catch(std::exception& e) {
698 std::cerr<<
"Error: "<<e.what()<<
"\n";
703 PVStringArray::shared_pointer pvs(ret->getSubField<
PVStringArray>(
"value"));
709 std::ostream_iterator<std::string>(std::cout,
"\n"));
712 std::cout<<ret<<
"\n";
717 return allOK ? 0 : 1;
int getopt(int nargc, char *const *nargv, const char *ostr)
std::tr1::shared_ptr< detail::SharedPut > put
#define SET_LOG_LEVEL(level)
std::tr1::shared_ptr< const Structure > StructureConstPtr
#define epicsScanDouble(str, to)
PVStructure::shared_pointer createRequest(std::string const &request)
void copy(PVValueArray< T > &pvFrom, size_t fromOffset, size_t fromStride, PVValueArray< T > &pvTo, size_t toOffset, size_t toStride, size_t count)
Copy a subarray from one scalar array to another.
PVString is special case, since it implements SerializableArray.
template class for all extensions of PVArray.
FORCE_INLINE const FieldCreatePtr & getFieldCreate()
string inetAddressToString(const osiSockAddr &addr, bool displayPort, bool displayHex)
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()