本文整理汇总了C++中object::Ptr::getArray方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::getArray方法的具体用法?C++ Ptr::getArray怎么用?C++ Ptr::getArray使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类object::Ptr
的用法示例。
在下文中一共展示了Ptr::getArray方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: makeStruct
Poco::DynamicStruct Object::makeStruct(const Object::Ptr& obj)
{
Poco::DynamicStruct ds;
ConstIterator it = obj->begin();
ConstIterator end = obj->end();
for (; it != end; ++it)
{
if (obj->isObject(it))
{
Object::Ptr pObj = obj->getObject(it->first);
DynamicStruct str = makeStruct(pObj);
ds.insert(it->first, str);
}
else if (obj->isArray(it))
{
Array::Ptr pArr = obj->getArray(it->first);
std::vector<Poco::Dynamic::Var> v = Poco::JSON::Array::makeArray(pArr);
ds.insert(it->first, v);
}
else
ds.insert(it->first, it->second);
}
return ds;
}
示例2: pocoUri
vector<shared_ptr<FDSBucket> > GalaxyFDSClient::listBuckets() {
string uri = formatUri(_pConfig->getBaseUri(), "", _emptySubResources);
URI pocoUri(uri);
shared_ptr<HTTPClientSession> pSession(_pSessionFacotry
->createClientSession(pocoUri));
pSession->setHost(pocoUri.getHost());
pSession->setPort(pocoUri.getPort());
HTTPRequest request(HTTPRequest::HTTP_GET, uri, HTTPMessage::HTTP_1_1);
prepareRequestHeaders(uri, HTTPRequest::HTTP_GET, "", _emptyStream,
*_pEmptyMetadata, request);
HTTPResponse response;
ostream& os = pSession->sendRequest(request);
istream& rs = pSession->receiveResponse(response);
if (response.getStatus() != HTTPResponse::HTTP_OK) {
stringstream msg;
msg << "List buckets failed, status=" << response.getStatus() << ", reason=";
StreamCopier::copyStream(rs, msg);
throw GalaxyFDSClientException(response.getStatus(), msg.str());
}
vector<shared_ptr<FDSBucket> > res;
Parser parser;
parser.parse(rs);
Var result = parser.result();
Object::Ptr pObject = result.extract<Object::Ptr>();
Object::Ptr pOwnerObject = pObject->getObject("owner");
stringstream ss;
pOwnerObject->stringify(ss);
shared_ptr<Owner> pOwner = Owner::deserialize(ss);
Array::Ptr pBucketsArray = pObject->getArray("buckets");
for (size_t i = 0; i < pBucketsArray->size(); i++) {
string bucketName = pBucketsArray->getObject(i)->getValue<string>("name");
shared_ptr<FDSBucket> pBucket(new FDSBucket(bucketName));
pBucket->setOwner(*pOwner);
res.push_back(pBucket);
}
return res;
}
示例3: doSearch
void doSearch( Utility::MTInput & input,
Utility::MTOutput & mtOutput,
Utility::MTOutput & mtConsoleOutput,
size_t startLine ) const
{
Poco::Net::HTTPClientSession session( m_uri.getHost(), m_uri.getPort() );
{
Utility::MTOutput::unique_lock lock( mtConsoleOutput.acquire());
mtConsoleOutput.os() << "Thread " << pthread_self() << " starting ";
mtConsoleOutput.flush();
}
std::string line;
while( size_t lineNum = input.getline( line ))
{
if( lineNum < startLine )
continue;
std::string path;
bool success = false;
size_t maxTries = 4;
while( !success && maxTries )
{
try
{
Utility::StrTuple term = Utility::delimitedText( line, '\t' );
if( term.size() < 4 )
break;
std::string artist = term[2];
std::string title = Utility::trim(term[3]);
path = make_request( artist + ' ' + title );
Poco::Net::HTTPRequest request( Poco::Net::HTTPRequest::HTTP_GET, path, Poco::Net::HTTPMessage::HTTP_1_1 );
Poco::Net::HTTPResponse response;
session.sendRequest(request);
std::istream& rs = session.receiveResponse(response);
using Poco::Dynamic::Var;
using namespace Poco::JSON;
Parser parser;
Var result = parser.parse(rs);
Object::Ptr obj = result.extract<Object::Ptr>();
int nResults = obj->getValue<int>("resultCount");
{
Utility::MTOutput::unique_lock lock( mtConsoleOutput.acquire());
mtConsoleOutput.os() << lineNum << ": " << path << ' ' << nResults
<< " results " << std::endl;
}
if( nResults )
{
Array::Ptr arr;
arr = obj->getArray( "results" );
if( !arr )
{
std::cerr << "Could not get results " << std::endl;
continue;
}
std::string releaseDate;
std::string genre;
std::string artistName; // on iTunes
std::string trackName; // on iTunes
bool found = false;
// if there is more than one see if there is an exact match. Otherwise use the first result
for( size_t i = 0; !found && i < nResults ; ++i )
{
Object::Ptr result = arr->getObject(i);
if( !result )
{
std::cerr << " Could not get result " << i << std::endl;
continue;
}
// get ArtistName and Title and see if they match ours
Var item = result->get( "artistName" );
if( item.isString() )
artistName = item.convert< std::string >();
item = result->get( "trackName" );
if( item.isString() )
trackName = item.convert< std::string >();
if( (artistName == artist && trackName == title) ) // we have an exact match so continue
found = true;
// if no exact matches are found we use the first one.
// We could use a better way to match the search eg case insensitive, removing featured acts etc.
if( found || i == 0 )
{
item = result->get( "releaseDate");
if( item.isString() )
{
std::string releaseDateStr = item.convert< std::string >();
releaseDate = releaseDateStr.substr( 0, releaseDateStr.find('T') );
}
item = result->get( "primaryGenreName" );
if( item.isString() )
genre = item.convert< std::string >();
//.........这里部分代码省略.........