VR-Forces 4.0.4 Class Documentation

DtExampleEventSignaler.h

/******************************************************************************
** Copyright (c) 2012 MAK Technologies, Inc.
** All rights reserved.
******************************************************************************/
/******************************************************************************
** $RCSfile: DtExampleEventSignaler.h,v $ $Revision: 1.4 $ $State: Exp $
******************************************************************************/

//\file DtExampleEventSignaler.h
//\brief Contains DtExampleEventSignaler class.
//An event signaler is a class that is used to signal boost style signals from
//the gui thread to the networking thread

#pragma once

#include <vrfGuiCore/vrfGuiCore.h>
#include <vrvUtil/event_signal.h>
#include <vrvUtil/DtVirtualBaseClass.h>
#include <vrvUtil/signalslib.h>

namespace makVrv
{
   class DtDe;
   class DtSharedSettingsManager;
}

class DtExampleEventSignaler : public makVrv::DtVirtualBaseClass
{
public:

   //Get an instance of the simulation settings automatically from the
   //settings manager. this will return a different signaler depending
   //on what thread this function is called from.
   static DtExampleEventSignaler& instance(const makVrv::DtSharedSettingsManager&);

   //Get an instance of the simulation settings from the event queue 
   //interface. This will return the same signaler independent of the thread.
   static DtExampleEventSignaler& instance(makVrv::DtEventQueueInterface&);

   //Find an instance of the signaler, for an interface, if one does not
   //exist it will not be created.
   //\retval NULL if the instance does not exist.
   static DtExampleEventSignaler* findInstance(
      makVrv::DtEventQueueInterface*);

   //DTOR
   virtual ~DtExampleEventSignaler();

   //@name Signals

   //\brief Signal to send a pdu from the network thread
   makVrv::event_signal<void ()> signal_sendPdu;

protected:
   DtExampleEventSignaler(makVrv::DtEventQueueInterface& eqi);

private:
   DtExampleEventSignaler(const DtExampleEventSignaler&);
   DtExampleEventSignaler& operator=(const DtExampleEventSignaler&);
};

DtExampleEventSignaler.cxx

/******************************************************************************
** Copyright (c) 2012 MAK Technologies, Inc.
** All rights reserved.
******************************************************************************/
/******************************************************************************
** $RCSfile: DtExampleEventSignaler.cxx,v $ $Revision: 1.10 $ $State: Exp $
******************************************************************************/

//\file DtExampleEventSignaler.cxx
//\brief Contains DtExampleEventSignaler class.

#include "DtExampleEventSignaler.h"
#include <vrvCore/DtSharedSettingsManager.h>

#include <vlutil/vlExceptions.h>

using namespace makVrv;

DtExampleEventSignaler& DtExampleEventSignaler::instance( DtEventQueueInterface& eqi)
{
   DtExampleEventSignaler* sig = 
      dynamic_cast<DtExampleEventSignaler*>(
         eqi.findInstance("DtExampleEventSignaler"));
   if(!sig)
   {
      sig = new DtExampleEventSignaler(eqi);
      eqi.registerInstance("DtExampleEventSignaler",sig);
   }
   return *sig;
}

DtExampleEventSignaler& DtExampleEventSignaler::instance( const DtSharedSettingsManager& manager)
{
   DtEventQueueInterface* eqi = manager.findThisThreadEventQueue();
   if(eqi)
   {
      return DtExampleEventSignaler::instance(*eqi);
   }      
   else
   {
      DtTHROW_NEW(DtCorruptedState, "Unable to access Event Queue from manager for DtExampleEventSignaler.");
   }
}

DtExampleEventSignaler* DtExampleEventSignaler::findInstance( DtEventQueueInterface* eqi )
{
   return dynamic_cast<DtExampleEventSignaler*>(
            eqi->findInstance("DtExampleEventSignaler"));
}

DtExampleEventSignaler::~DtExampleEventSignaler()
{
}

DtExampleEventSignaler::DtExampleEventSignaler(DtEventQueueInterface& eqi)
: DtVirtualBaseClass()
, signal_sendPdu(&DtExampleEventSignaler::signal_sendPdu,eqi)
{
}


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)