void SthenoCore::createServiceInstance(UUIDPtr& sid, UUIDPtr& iid, ServiceAbstractPtr& sPtr) throw (RuntimeException&, ServiceException&) { if (!isValid()) { throw RuntimeException(RuntimeException::INVALID_RUNTIME); } LocalServicePtr servicePtr; if (m_serviceMap.find(sid, servicePtr) == -1) { printf("INFO: createServiceInstance() - SID=%s not found service!\n", sid->toString().c_str()); LocalService* ls = new LocalService(sid); servicePtr.reset(ls); if (m_serviceMap.bind(sid, servicePtr) != 0) { throw ServiceException("Error on binding service"); } } printf("INFO: createServiceInstance() - SID=%s found service!\n", sid->toString().c_str()); ServiceAbstract* i = m_serviceFactory.getInstance(sid); i->setIID(iid); ServiceAbstractPtr iPtr(i); servicePtr->addServiceInstance(iPtr); sPtr = iPtr; }
void PeerInfo::deserialize(InputStream& inputStream) throw (SerializationException&) { inputStream.read_ulong(m_type); UUID* peerID = new UUID(inputStream); m_uuidPtr.reset(peerID); UUID* fID = new UUID(inputStream); m_fidPtr.reset(fID); Boolean flag = false; inputStream.read_boolean(flag); if (flag) { SAPInfo* e = new SAPInfo(inputStream); m_meshSAP.reset(e); } else { m_meshSAP.reset(0); } inputStream.read_boolean(flag); if (flag) { SAPInfo* e = new SAPInfo(inputStream); m_discoverySAP.reset(e); } else { m_discoverySAP.reset(0); } inputStream.read_boolean(flag); if (flag) { SAPInfo* e = new SAPInfo(inputStream); m_ftSAP.reset(e); } else { m_ftSAP.reset(0); } //services m_serviceMap.unbind_all(); int count = 0; inputStream.read_long(count); for (int i = 0; i < count; i++) { ServiceInfo* pi = new ServiceInfo(inputStream); ServiceInfoPtr iPtr(pi); m_serviceMap.bind(pi->getSid(), iPtr); } }
//-***************************************************************************** const AbcA::PropertyHeader & CprData::getPropertyHeader( AbcA::CompoundPropertyReaderPtr iParent, size_t i ) { // fixed length and resize called in ctor, so multithread safe. if ( i > m_propertyHeaders.size() ) { ABCA_THROW( "Out of range index in " << "CprData::getPropertyHeader: " << i ); } Alembic::Util::scoped_lock l( m_subPropertyMutexes[i] ); // read the property header stuff if we haven't yet if ( m_propertyHeaders[i].header == NULL ) { uint32_t tsid = 0; PropertyHeaderPtr iPtr( new AbcA::PropertyHeader() ); ReadPropertyHeader( m_group, m_propertyHeaders[i].name, *iPtr, m_propertyHeaders[i].isScalarLike, m_propertyHeaders[i].numSamples, m_propertyHeaders[i].firstChangedIndex, m_propertyHeaders[i].lastChangedIndex, tsid ); if ( iPtr->isSimple() ) { AbcA::TimeSamplingPtr tsPtr = iParent->getObject()->getArchive()->getTimeSampling( tsid ); iPtr->setTimeSampling(tsPtr); } m_propertyHeaders[i].header = iPtr; // don't need name anymore (it's in the header) m_propertyHeaders[i].name = ""; } return *(m_propertyHeaders[i].header); }