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

SourceForge.net Logo
Project
Download
Mailing lists

 

         

statusImpl.h

00001 /*
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_STATUS_IMPL_H
00012 #define ORCAICE_STATUS_IMPL_H
00013 
00014 #include <memory>
00015 #include <hydroiceutil/localstatus.h>
00016 #include <gbxsickacfr/gbxiceutilacfr/store.h>
00017 #include <gbxsickacfr/gbxiceutilacfr/timer.h>
00018 
00019 #include <orca/status.h>
00020 #include <orcaice/topichandler.h>
00021 #include <orcaice/context.h>
00022 
00023 // class gbxiceutilacfr::Thread;
00024 
00025 namespace orcaice
00026 {
00027 namespace detail
00028 {
00029 
00030 class ComponentStatusAggregator;
00031 
00032 class StatusImpl : public hydroiceutil::LocalStatus, public IceUtil::Shared
00033 {
00034 friend class StatusI;
00035 
00036 public:
00037     StatusImpl( const orcaice::Context& context );
00038     ~StatusImpl();
00039 
00040     void updateContext( const orcaice::Context& context ) { context_ = context; };
00041     void initInterface();
00042 //     void initInterface( gbxutilacfr::Stoppable* activity, const std::string& subsysName="", int retryInterval=2 );
00043 
00044 private:
00045 
00046     // from LocalStatus
00047     virtual void publishEvent( const hydroiceutil::LocalComponentStatus& componentStatus );
00048 
00049     // remote call implementations, mimic (but do not inherit) the orca interface
00050     ::orca::StatusData internalGetData();
00051     IceStorm::TopicPrx  internalSubscribe(const ::orca::StatusConsumerPrx&);
00052 
00053     gbxiceutilacfr::Store<orca::StatusData> dataStore_;
00054     // we don't need to protect it if we only read from it.
00055     // todo: make a special read-only class.
00056     gbxiceutilacfr::Timer upTimer_;
00057 
00058     std::auto_ptr<ComponentStatusAggregator> aggregator_;
00059 
00060     typedef TopicHandler<orca::StatusConsumerPrx,orca::StatusData> StatusTopicHandler;
00061     std::auto_ptr<StatusTopicHandler> topicHandler_;
00062     void initTopicHandler();
00063 
00064     // Hang onto this so we can remove from the adapter and control when things get deleted
00065     Ice::ObjectPtr          ptr_;
00066     const std::string       interfaceName_;
00067     orcaice::Context        context_;
00068 };
00069 
00070 typedef IceUtil::Handle<StatusImpl> StatusImplPtr;
00071 
00072 } // namespace
00073 } // namespace
00074 
00075 #endif
 

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


Generated for Orca Robotics by  doxygen 1.4.5