static void *seekerThread(void *seekerThreadArgsVoidStar) { SeekerThreadArgs *seekerThreadArgs = static_cast<SeekerThreadArgs *>(seekerThreadArgsVoidStar); SeekerCmdLineParser *seekerParser = seekerThreadArgs->seekerParser; ACE_Thread_Mutex *startingSeeker = seekerThreadArgs->startingSeeker; delete seekerThreadArgs; SseArchive::setup(); SseArchive::SystemLog() << "Seeker started. " << SSE_VERSION << endl; Scheduler *scheduler = Scheduler::instance(); Site* site; try { site = new Site(seekerParser->getDxPort(), seekerParser->getDxArchiverPort(), seekerParser->getChannelizerPort(), seekerParser->getDxArchiver1Hostname(), seekerParser->getDxToArchiver1Port(), seekerParser->getDxArchiver2Hostname(), seekerParser->getDxToArchiver2Port(), seekerParser->getDxArchiver3Hostname(), seekerParser->getDxToArchiver3Port(), seekerParser->getIfcPort(), seekerParser->getTscopePort(), seekerParser->getTsigPort(), seekerParser->getComponentControlPort(), seekerParser->getExpectedComponentsFilename(), seekerParser->getNoUi()); delete seekerParser; paraGlobal.setSite(site); // attach the site to the Text UI paraGlobal.act_->setScheduler(scheduler); scheduler->setSite(site); addActivityTypesToScheduler(scheduler); addActStrategyTypesToScheduler(scheduler); } catch (NssAcceptHandlerException &exception) { scheduler->failed(); stringstream strm; strm << "Scheduler failed to start. " << exception.descrip(); SseMessage::log(MsgSender, NSS_NO_ACTIVITY_ID, SSE_MSG_SCHED_FAILED, SEVERITY_ERROR, strm.str(), __FILE__, __LINE__); cerr << exception.descrip() << "Warning: failed to start one or more component accept" << " handlers." << endl << "Make sure that another copy of this program" << " is not already running" << endl << "on this machine." << endl << "If new component port numbers were specified, " << "make sure they're valid." << endl; exit(1); } catch (SseException &exception) { scheduler->failed(); stringstream strm; strm << "Scheduler failed to start. " << exception.descrip(); SseMessage::log(MsgSender, NSS_NO_ACTIVITY_ID, SSE_MSG_SCHED_FAILED, SEVERITY_ERROR, strm.str(), __FILE__, __LINE__); cerr << strm.str(); exit(1); } catch (...) { cerr << "seeker main: caught unknown exception" << endl; SseMessage::log(MsgSender, NSS_NO_ACTIVITY_ID, SSE_MSG_EXCEPTION, SEVERITY_ERROR, "seeker main: caught unknown exception", __FILE__, __LINE__); exit(1); } startingSeeker->release(); // Prevent the ACE Reactor event loop from exiting prematurely // when a system call is interrupted (ie, errno == EINTR) // by enabling restart. ACE_Reactor::instance()->restart(1); //int status = ACE_Reactor::run_event_loop(); SseArchive::SystemLog() << "Seeker done" << endl; return 0; }