int main(int argc, char * argv[]) { bipc::managed_mapped_file segment(bipc::open_or_create, create_mmap_name().c_str(), SHM_SEG_SIZE); cached_adaptive_pool_t allocator_instance(segment.get_segment_manager()); UInt32Allocator uint32Allocator(segment.get_segment_manager()); UInt32CachedNodeAllocator uint32CachedNodeAllocator(segment.get_segment_manager()); void_allocator_t voidAllocator(segment.get_segment_manager()); allocator_instance.set_max_cached_nodes(3); //ShmUInt32Vector * myShmVector = segment.find_or_construct<ShmUInt32Vector>("MagicNumbers")(uint32Allocator); ShmUInt32CachedNodeVector * myShmVector = segment.find_or_construct<ShmUInt32CachedNodeVector>("MagicNumbers")(uint32CachedNodeAllocator); ShmStringUInt32CachedNodeMap * myShmMap = segment.find_or_construct<ShmStringUInt32CachedNodeMap>("MagicMap")(std::less<char_string>(), voidAllocator); std::cout << "==== I AM THE INSPECTOR ====" << std::endl; // http://www.boost.org/doc/libs/1_51_0/doc/html/interprocess/allocators_containers.html#interprocess.allocators_containers.containers_explained.containers_of_containers char_string keyObj(voidAllocator); keyObj = "count"; ShmStringUInt32CachedNodeMap::iterator itCount = myShmMap->find(keyObj); if(myShmMap->end() == itCount) { std::cout << "---- The Count DOES NOT EXIST! ----" << std::endl; } else { std::cout << "---- The Count = " << itCount->second << " ----" << std::endl; } // http://stackoverflow.com/questions/4153110/how-do-i-use-for-each-to-output-to-cout std::copy(myShmVector->begin(), myShmVector->end(), std::ostream_iterator<uint32_t>(std::cout, "\n")); return 0; }
BSONObj Helpers::toKeyFormat( const BSONObj& o ) { BSONObjBuilder keyObj( o.objsize() ); BSONForEach( e , o ) { keyObj.appendAs( e , "" ); }
ECode Media_Utils::ConvertMessageToMap( /* [in] */ android::sp<android::AMessage>& msg, /* [out] */ IObjectStringMap** mymap) { VALIDATE_NOT_NULL(mymap); *mymap = NULL; AutoPtr<IObjectStringMap> returnMap; CObjectStringMap::New( (IObjectStringMap**)&returnMap); for (Int32 i = 0; i < msg->countEntries(); i++) { android::AMessage::Type valueType; const char *key = msg->getEntryNameAt(i,&valueType); AutoPtr<IInterface> valueObj; switch (valueType){ case android::AMessage::kTypeInt32: { Int32 val; msg->findInt32(key, &val); AutoPtr<IInteger32> value; CInteger32::New(val, (IInteger32**)&value); valueObj = value->Probe(EIID_IInterface); break; } case android::AMessage::kTypeInt64: { Int64 val; msg->findInt64(key, &val); AutoPtr<IInteger64> value; CInteger64::New(val, (IInteger64**)&value); valueObj = value->Probe(EIID_IInterface); break; } case android::AMessage::kTypeFloat: { Float val; msg->findFloat(key, &val); AutoPtr<IFloat> value; CFloat::New(val, (IFloat**)&value); valueObj = value->Probe(EIID_IInterface); break; } case android::AMessage::kTypeString: { android::AString val; msg->findString(key, &val); AutoPtr<ICharSequence> value; CString::New(String(val.c_str()), (ICharSequence**)&value); valueObj = value->Probe(EIID_IInterface); break; } case android::AMessage::kTypeBuffer: { android::sp<android::ABuffer> val; msg->findBuffer(key, &val); Int32 size = val->size(); ArrayOf<Byte> bytes((Byte*)val->data(), size); AutoPtr<IByteBufferHelper> helper; CByteBufferHelper::AcquireSingleton((IByteBufferHelper**)&helper); AutoPtr<IByteBuffer> buffer; helper->Allocate(size, (IByteBuffer**)&buffer); buffer->PutBytes(bytes); valueObj = buffer->Probe(EIID_IInterface); break; } case android::AMessage::kTypeRect: { Int32 left, top, right, bottom; msg->findRect(key, &left, &top, &right, &bottom); AutoPtr<IInteger32> tmpInt; String strLeft; strLeft.AppendFormat("%s-left", key); CInteger32::New(left, (IInteger32**)&tmpInt); returnMap->Put(strLeft ,tmpInt->Probe(EIID_IInterface)); String strTop; strLeft.AppendFormat("%s-top", key); tmpInt = NULL; CInteger32::New(top, (IInteger32**)&tmpInt); returnMap->Put(strTop ,tmpInt->Probe(EIID_IInterface)); String strRight; strLeft.AppendFormat("%s-right", key); tmpInt = NULL; CInteger32::New(right, (IInteger32**)&tmpInt); returnMap->Put(strRight ,tmpInt->Probe(EIID_IInterface)); String strBottom; strLeft.AppendFormat("%s-bottom", key); tmpInt = NULL; CInteger32::New(bottom, (IInteger32**)&tmpInt); returnMap->Put(strBottom ,tmpInt->Probe(EIID_IInterface)); break; } default: break; }//end switch if (valueObj != NULL) { String keyObj(key); returnMap->Put(keyObj ,valueObj); } }//end for *mymap = returnMap; REFCOUNT_ADD(*mymap); return NOERROR; }