orca-robotics


INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

REPOSITORY
Interfaces
Components
Libraries
Utilities
Software Map

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard
Wiki
login/pass: orca/orca

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

icegridsession.h

00001 /*
00002  * Orca-Robotics Project: Components for robotics 
00003  *               http://orca-robotics.sf.net/
00004  * Copyright (c) 2004-2008 Alex Brooks, Alex Makarenko
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 ORCAICEGRID_ICEGRID_SESSION_H
00012 #define ORCAICEGRID_ICEGRID_SESSION_H
00013 
00014 #include <IceGrid/Registry.h>
00015 #include <gbxsickacfr/gbxiceutilacfr/safethread.h>
00016 #include <gbxsickacfr/gbxiceutilacfr/store.h>
00017 #include <orcaice/context.h>
00018 #include <IceUtil/Time.h>
00019 
00020 namespace orcaicegrid
00021 {
00022 
00024 class SessionNotConnectedException : public gbxsickacfr::gbxutilacfr::Exception
00025 {
00026 public:
00027     SessionNotConnectedException(const char *file, const char *line, const char *message)
00028             : Exception( file, line, message ) {};
00029     SessionNotConnectedException(const char *file, const char *line, const std::string &message)
00030             : Exception( file, line, message ) {};
00031 };
00032 
00038 class IceGridSession : public gbxsickacfr::gbxiceutilacfr::SafeThread
00039 {
00040 public:
00046     IceGridSession( const orcaice::Context& context,
00047         const IceGrid::RegistryObserverPrx&     reg =IceGrid::RegistryObserverPrx(), 
00048         const IceGrid::NodeObserverPrx&         node=IceGrid::NodeObserverPrx(), 
00049         const IceGrid::ApplicationObserverPrx&  app=IceGrid::ApplicationObserverPrx(), 
00050         const IceGrid::AdapterObserverPrx&      adpt=IceGrid::AdapterObserverPrx(), 
00051         const IceGrid::ObjectObserverPrx&       obj=IceGrid::ObjectObserverPrx() );
00052 
00053     ~IceGridSession() {};
00054 
00056     enum SessionState
00057     {
00059         Disconnected,
00061         Connecting,
00063         Connected,
00065         Disconnecting
00066     };
00067 
00069     SessionState getState();
00070 
00077     void setObservers( 
00078         const IceGrid::RegistryObserverPrx&     reg =IceGrid::RegistryObserverPrx(), 
00079         const IceGrid::NodeObserverPrx&         node=IceGrid::NodeObserverPrx(), 
00080         const IceGrid::ApplicationObserverPrx&  app=IceGrid::ApplicationObserverPrx(), 
00081         const IceGrid::AdapterObserverPrx&      adpt=IceGrid::AdapterObserverPrx(), 
00082         const IceGrid::ObjectObserverPrx&       obj=IceGrid::ObjectObserverPrx() );
00083 
00086     virtual bool connectedEvent() { return true; };
00087 
00090     virtual void disconnectedEvent() {};
00091 
00092     // from SafeThread
00093     virtual void walk();
00094 
00095     static std::string toString( SessionState state );
00096 
00097 protected:
00098     IceGrid::AdminSessionPrx session_;
00099 //     IceUtil::Mutex   sessionMutex_;
00100 
00101     bool tryCreateSession();
00102 
00103 private:
00104 
00105     gbxsickacfr::gbxiceutilacfr::Store<SessionState> stateStore_;
00106     int timeoutSec_;
00107     IceUtil::Time lastKeepaliveTime_;
00108 
00109     IceGrid::RegistryObserverPrx     registryObserverPrx_;
00110     IceGrid::NodeObserverPrx         nodeObserverPrx_;
00111     IceGrid::ApplicationObserverPrx  applicationObserverPrx_;
00112     IceGrid::AdapterObserverPrx      adapterObserverPrx_;
00113     IceGrid::ObjectObserverPrx       objectObserverPrx_;
00114 
00115     // this actually tries to set observers as defined by member variables
00116     // if the session is not Connected, does nothing
00117     void trySetObservers();
00118     IceUtil::Mutex observerMutex_;
00119 
00120     orcaice::Context context_;
00121 };
00122 
00123 } // namespace
00124 
00125 #endif
 

Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)


Generated for Orca Robotics by  doxygen 1.4.5