VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
predicateCallbackManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
12 #include "tbb/spin_rw_mutex.h"
13 
15 class DtVrfCallbackQueue;
16 
21 {
22 private:
24 
29 
30 public:
31  DtPredicateCallbackManager(const DtSimulationServices* simManager, const DtString& tracyMarker = "");
32  virtual ~DtPredicateCallbackManager();
33 
37 
41  void addSimObjectPredicateCallback(DtSimObjectReference,
43  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
44  void* userData = 0);
45  void removeSimObjectPredicateCallback(const DtSimObject*,
47  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
48  void* userData = 0);
49 
54  void invokeSimObjectPredicateCallbacks(DtVrfCallbackQueue* queue = nullptr);
55 
58  virtual void clearPredicateCallbacks();
60 
61  virtual void removeAllPredicatesFor(const DtSimObject*);
62 
63 protected:
65  typedef std::list< std::pair<DtSimObjectReference, boost::shared_ptr<DtVrfObjectPredicateCallbackInfo> > > PredicateList;
67  {
69  boost::signals2::connection removalConnection;
70  };
71 
72  typedef std::map<DtUUID, PredicateInfo> PredicateCallbackList;
74 
75  tbb::spin_rw_mutex myPredicateCallbackManagerMutex;
77 };
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
PredicateList list
Definition: predicateCallbackManager.h:68
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
std::map< DtUUID, PredicateInfo > PredicateCallbackList
Definition: predicateCallbackManager.h:72
tbb::spin_rw_mutex myPredicateCallbackManagerMutex
Definition: predicateCallbackManager.h:75
Definition: predicateCallbackManager.h:66
Contains the DtVrfObjectPredicate class declaration.
Definition: vrfObjectPredicate.h:20
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
std::list< std::pair< DtSimObjectReference, boost::shared_ptr< DtVrfObjectPredicateCallbackInfo > > > PredicateList
Definition: predicateCallbackManager.h:65
The predicate callback manager allows for registration of callbacks by sim object for predicates...
Definition: predicateCallbackManager.h:20
boost::signals2::connection removalConnection
Definition: predicateCallbackManager.h:69
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:94
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:88
const DtSimulationServices * mySimulationServices
Definition: predicateCallbackManager.h:64
PredicateCallbackList myPredicateCallbackList
Definition: predicateCallbackManager.h:73
DtString myTracyMarker
Definition: predicateCallbackManager.h:76
void(* DtVrfObjectPredicateCallbackFunction)(DtSimObjectReference obj, DtVrfObjectPredicateEvaluator *predicateEval, void *userData)
Definition: simComponent.h:53

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)