INTRODUCTION Overview Download and Install Quick Start Documentation Publications NONFRAMEWORK CODE Driver Interfaces Drivers Libraries Utilities FRAMEWORK CODE Interfaces Components Libraries Utilities Full Software Listings DEVELOPER Tutorials Examples Dev Guide Dashboard PEOPLE Contributors Users Project Download Mailing lists
|
application.h00001 /* 00002 * Orca-Robotics Project: Components for robotics 00003 * http://orca-robotics.sf.net/ 00004 * Copyright (c) 2004-2009 Alex Brooks, Alexei Makarenko, Tobias Kaupp 00005 * 00006 * This copy of Orca is licensed to you under the terms described in 00007 * the LICENSE file included in this distribution. 00008 * 00009 */ 00010 00011 #ifndef ORCAICE_APPLICATION_H 00012 #define ORCAICE_APPLICATION_H 00013 00014 #include <Ice/Application.h> 00015 #include <IceUtil/Mutex.h> 00016 00017 namespace orcaice 00018 { 00019 00020 class Component; 00021 00038 class Application : public Ice::Application 00039 { 00040 public: 00041 00056 Application( orcaice::Component &component, Ice::SignalPolicy policy=Ice::HandleSignals ); 00057 00058 // 00059 // Reimplements one of the main functions from Ice::Application 00060 // 00061 virtual int orcaMain(int, char*[]); 00062 00063 // 00064 // Implements the run function from Ice::Application 00065 // Not part of OrcaIce public API. 00066 // 00067 virtual int run(int, char*[]); 00068 00069 // 00070 // Called by Ice::Application when a signal is received 00071 // 00072 virtual void interruptCallback( int signal ); 00073 00074 private: 00075 00076 // By Orca convention there is exactly one adapter per component and, therefore, per application 00077 // Keep the pointer to it here, so it does not get destroyed too soon. 00078 Ice::ObjectAdapterPtr adapter_; 00079 00080 // An application contains only one Component. 00081 orcaice::Component &component_; 00082 00083 // Application may stop for 2 reasons: a) an interrupt signal or b) communicator destruction. 00084 // Those two events may happen in different threads. No matter which event happens we need to 00085 // to know whether we already stopped the component or not. 00086 void stopComponent(); 00087 bool isComponentStopped_; 00088 IceUtil::Mutex mutex_; 00089 }; 00090 00091 } // namespace 00092 00093 #endif |
Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)