int main(int argc,const char**argv) { using namespace Sirikata; OptionSet::getOptions("")->parse(argc,argv); PluginManager plugins; plugins.load( DynamicLibrary::filename("tcpsst") ); plugins.load( DynamicLibrary::filename("prox") ); Network::IOService*io=Network::IOServiceFactory::makeIOService(); Proximity::ProximitySystemFactory::getSingleton().getDefaultConstructor()(io,"",&Sirikata::Proximity::ProximitySystem::defaultNoAddressProximityCallback); io->run(); return 0; }
void setUp() { if (!_initialized) { _initialized = 1; _pmgr.load(_plugin); } // Storage is tied to the main event loop, which requires quite a bit of setup ObjectHostID oh_id(1); _trace = new Trace::Trace("dummy.trace"); _ios = new Network::IOService("StorageTest"); _mainStrand = _ios->createStrand("StorageTest"); _work = new Network::IOWork(*_ios, "StorageTest"); Time start_time = Timer::now(); // Just for stats in ObjectHostContext. Duration duration = Duration::zero(); // Indicates to run forever. _sstConnMgr = new ODPSST::ConnectionManager(); _ohSSTConnMgr = new OHDPSST::ConnectionManager(); _ctx = new ObjectHostContext("test", oh_id, _sstConnMgr, _ohSSTConnMgr, _ios, _mainStrand, _trace, start_time, duration); _storage = OH::StorageFactory::getSingleton().getConstructor(_type)(_ctx, _args); for(int i = 0; i < 2; i++) _storage->leaseBucket(_buckets[i]); _ctx->add(_ctx); _ctx->add(_storage); // Run the context, but we need to make sure it only lives in other // threads, otherwise we'd block up this one. We include 4 threads to // exercise support for multiple threads. _ctx->run(4, Context::AllNew); }
int main(int argc,const char**argv) { using namespace Sirikata; OptionSet::getOptions("")->parse(argc,argv); Network::IOService*io=Network::IOServiceFactory::makeIOService(); //FIXME //Network::IOServiceFactory::runService(io); PluginManager plugins; const char* pluginNames[] = { "mono", NULL}; for(const char** plugin_name = pluginNames; *plugin_name != NULL; plugin_name++) plugins.load( DynamicLibrary::filename(*plugin_name) ); return 0; }
int main ( int argc,const char**argv ) { int myargc = argc+2; const char **myargv = new const char*[myargc]; memcpy(myargv, argv, argc*sizeof(const char*)); myargv[argc] = "--moduleloglevel"; myargv[argc+1] = "transfer=fatal,ogre=fatal,task=fatal,resource=fatal"; using namespace Sirikata; PluginManager plugins; const char* pluginNames[] = { "tcpsst", "monoscript", "sqlite", "ogregraphics", "bulletphysics", "colladamodels", NULL}; for(const char** plugin_name = pluginNames; *plugin_name != NULL; plugin_name++) plugins.load( DynamicLibrary::filename(*plugin_name) ); OptionSet::getOptions ( "" )->parse ( myargc,myargv ); #ifdef __GNUC__ #ifndef __APPLE__ if (floatExcept->as<bool>()) { feenableexcept(FE_DIVBYZERO|FE_INVALID|FE_OVERFLOW|FE_UNDERFLOW); } #endif #endif OptionMapPtr transferOptions (new OptionMap); { std::string contents(cdnConfigFile->as<String>()); std::string::size_type pos(0); parseConfig(contents, transferOptions, transferOptions, pos); std::cout << *transferOptions; } initializeProtocols(); Network::IOService *ioServ = Network::IOServiceFactory::makeIOService(); Task::WorkQueue *workQueue = new Task::LockFreeWorkQueue; Task::GenEventManager *eventManager = new Task::GenEventManager(workQueue); SpaceID mainSpace(UUID("12345678-1111-1111-1111-DEFA01759ACE",UUID::HumanReadable())); SpaceIDMap *spaceMap = new SpaceIDMap; spaceMap->insert(mainSpace, Network::Address(host->as<String>(),"5943")); String localDbFile=dbFile->as<String>(); if (localDbFile.length()&&localDbFile[0]!='/'&&localDbFile[0]!='\\') { FILE * fp=fopen(localDbFile.c_str(),"rb"); for (int i=0;i<4&&fp==NULL;++i) { localDbFile="../"+localDbFile; fp=fopen(localDbFile.c_str(),"rb"); } if (fp) fclose(fp); else localDbFile=dbFile->as<String>(); } Persistence::ReadWriteHandler *database=Persistence::ReadWriteHandlerFactory::getSingleton() .getConstructor("sqlite")(String("--databasefile ")+localDbFile); ObjectHost *oh = new ObjectHost(spaceMap, workQueue, ioServ); oh->registerService(Services::PERSISTENCE, database); { UUIDLister lister(oh, mainSpace); lister.goWait(ioServ, workQueue); } ProxyManager *provider = oh->getProxyManager(mainSpace); if (!provider) { SILOG(cppoh,error,String("Unable to load database in ") + String(dbFile->as<String>())); std::cout << "Press enter to continue" << std::endl; std::cerr << "Press enter to continue" << std::endl; fgetc(stdin); return 1; } TransferManager *tm; try { tm = initializeTransferManager((*transferOptions)["cdn"], eventManager); } catch (OptionDoesNotExist &err) { SILOG(input,fatal,"Fatal Error: Failed to load CDN config: " << err.what()); std::cout << "Press enter to continue" << std::endl; std::cerr << "Press enter to continue" << std::endl; fgetc(stdin); return 1; } OptionSet::getOptions("")->parse(myargc,myargv); String graphicsCommandArguments; { std::ostringstream os; os << "--transfermanager=" << tm << " "; os << "--eventmanager=" << eventManager << " "; os << "--workqueue=" << workQueue << " "; graphicsCommandArguments = os.str(); } if (!provider) { SILOG(cppoh,error,"Failed to get TopLevelSpaceConnection for main space "<<mainSpace); } bool continue_simulation = true; typedef std::vector<TimeSteppedSimulation*> SimList; SimList sims; struct SimulationRequest { const char* name; bool required; }; const uint32 nSimRequests = 2; SimulationRequest simRequests[nSimRequests] = { {"ogregraphics", true}, {"bulletphysics", false} }; for(uint32 ir = 0; ir < nSimRequests && continue_simulation; ir++) { String simName = simRequests[ir].name; SILOG(cppoh,info,String("Initializing ") + simName); TimeSteppedSimulation *sim = SimulationFactory::getSingleton() .getConstructor ( simName ) ( provider,graphicsCommandArguments ); if (!sim) { if (simRequests[ir].required) { SILOG(cppoh,error,String("Unable to load ") + simName + String(" plugin. The PATH environment variable is ignored, so make sure you have copied the DLLs from dependencies/ogre/bin/ into the current directory. Sorry about this!")); std::cout << "Press enter to continue" << std::endl; std::cerr << "Press enter to continue" << std::endl; fgetc(stdin); continue_simulation = false; } else { SILOG(cppoh,info,String("Couldn't load ") + simName + String(" plugin.")); } } else { SILOG(cppoh,info,String("Successfully initialized ") + simName); sims.push_back(sim); sim->forwardMessagesTo(oh); } } while ( continue_simulation ) { for(SimList::iterator it = sims.begin(); it != sims.end(); it++) { continue_simulation = continue_simulation && (*it)->tick(); } oh->tick(); Network::IOServiceFactory::pollService(ioServ); } for(SimList::iterator it = sims.begin(); it != sims.end(); it++) { (*it)->endForwardingMessagesTo(oh); } delete oh; // delete after OH in case objects want to do last-minute state flushes delete database; destroyTransferManager(tm); delete eventManager; delete workQueue; for(SimList::reverse_iterator it = sims.rbegin(); it != sims.rend(); it++) { delete *it; } sims.clear(); plugins.gc(); SimulationFactory::destroy(); Network::IOServiceFactory::destroyIOService(ioServ); delete spaceMap; delete []myargv; return 0; }