VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtDeCommunicator.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile: DtDeCommunicator.h,v $ $Revision: 1.39 $ $State: Exp $
00007 ******************************************************************************/
00008 
00012 
00013 #ifndef DtDeCommunicator_H_
00014 #define DtDeCommunicator_H_
00015 
00016 #include <vrvCore/vrvCore.h>
00017 #include <vrvUtil/DtVirtualBaseClass.h>
00018 #include <vrvCore/DtDeRecord.h>
00019 #include <boost/signal.hpp>
00020 #include <list>
00021 #include <string>
00022 
00023 namespace makVrv
00024 {
00025    class DtDe;
00026    class DtTcpServer;
00027    class DtMessageDispatcher;
00028    class DtDriverConfiguration;
00029    class DtIgCommunicatorSignaler;
00030 
00034    class DT_DLL_VRVCORE DtDeCommunicator
00035    {
00036    public:
00037 
00038       friend class DtDeCommunicatorCreator;
00039 
00040       typedef std::list<DtDeRecord> IgRecords;
00041 
00043       virtual ~DtDeCommunicator();
00044 
00046       virtual bool initialize();
00047 
00050       virtual void listenForMasterIg();
00051 
00053       virtual bool hasMasterIg() const;
00054 
00056       virtual void disconnectMasterIg(const std::string& masterName);
00057 
00061       bool connectToSlaveIg(const std::string& slaveAddr,int port, std::string& igNameOut);
00062 
00064       void disconnectSlaveIg(const std::string& name);
00065 
00067       virtual void tick();
00068 
00070       virtual const DtDriverConfiguration& configuration() const;
00071 
00073       virtual void addIgRecord(const DtDeRecord& record);
00074 
00076       virtual void removeIgRecord(const DtDeRecord& record);
00077 
00080       DtDeRecord& hostIgRecord();
00081 
00083       DtDeRecord* findRecordByIgName(const std::string& igName);
00084 
00086       DtDeRecord* findRecordByDisplayName(const std::string& displayName);
00087 
00089       bool masterIgOnly() const;
00090 
00092       const IgRecords& connectedIgs() const;
00093 
00096       virtual const std::string& name() const;
00097 
00100       static const char* className();    
00101 
00102    protected:
00103 
00105       DtDeCommunicator(DtDe& de, DtDriverConfiguration& config);     
00106       
00107    protected:
00108 
00109       static const char* myClassName;
00110 
00111       DtDe& myDe;
00112       DtDriverConfiguration& myConfiguration;      
00113       std::string myName;
00114       IgRecords myIgRecords;
00115       DtTcpServer* myTcpServer;
00116       DtIgCommunicatorSignaler& mySignaler;
00117    };
00118 
00121    class DT_DLL_VRVCORE DtIgCommunicatorSignaler : public DtVirtualBaseClass
00122    {
00123 
00124    public:
00125 
00127       static DtIgCommunicatorSignaler& instance(DtDe& de);
00128 
00130       virtual ~DtIgCommunicatorSignaler();
00131 
00133 
00134 
00136       boost::signal<void (const std::string&)> signal_masterIgConnected;
00137 
00139       boost::signal<void (const std::string&)> signal_masterIgLost;
00140 
00142       boost::signal<void (const DtDeRecord&)> signal_clientAdded;
00143 
00145       boost::signal<void (const std::string&)> signal_clientToByDeleted;
00146 
00148       boost::signal<void (const std::string&)> signal_clientModified;
00149 
00151 
00152    protected:
00153 
00154       DtIgCommunicatorSignaler();
00155 
00156    };
00157 
00158 
00161    class DT_DLL_VRVCORE DtDeCommunicatorCreator : public DtVirtualBaseClass
00162    {
00163    public:
00164 
00166       static DtDeCommunicatorCreator& instance(DtDe&);
00167 
00169       static void registerInstance(DtDe& de,DtDeCommunicatorCreator*);
00170 
00172       virtual DtDeCommunicator* create(DtDe& de, DtDriverConfiguration& config);
00173    };
00174 
00175 }
00176 
00177 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)