VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
resupplySupplierController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfMsgTransport/events.h>
14 
20 #include <boost/signals2.hpp>
21 
23 
24 namespace makVrfEvents
25 {
26  class DtServiceRequestEvent;
27  class DtResupplyReceivedEvent;
28  class DtEvent;
29 }
30 
34 {
35 public:
36 
43  DtSimulationServices* simManager,
44  DtComponentDescriptor* compDesc = 0,
45  DtReaderWriterRegistry* parentRegistry = 0);
46 
48  virtual ~DtResupplySupplierController() override;
49 
50  virtual const char* type() const override;
51 
54  virtual bool postAddComponentsInit() override;
55 
57  virtual bool init() override;
58 
64  static void setSupplyingCallback(DtSimMessage * msg, void * usr);
65 
69  virtual void processSetSupplying(DtSimMessage * msg);
70 
73  virtual void addSetDataCallbacks();
74 
77  void removeSetDataCallbacks();
78 
81  virtual void tick() override;
82 
83  static DtSimComponent* creator(const DtString& name,
84  DtLocalObject* owner,
85  DtSimulationServices* simManager,
87  DtReaderWriterRegistry* parentRegistry);
88 
89 protected:
90 
93 
96  orig);
97 
101 
103  virtual const DtResupplySupplierControllerDescriptor* getDescriptor();
104 
106 
107  virtual void serviceRequestEvent(const makVrfEvents::DtEvent&);
108  virtual void processServiceRequest(const makVrfEvents::DtServiceRequestEvent& serviceRequest);
109  virtual void resupplyReceivedEvent(const makVrfEvents::DtEvent&);
110  virtual void processResupplyReceived(const makVrfEvents::DtResupplyReceivedEvent& resupplyReceived);
111  virtual void resupplyCancelEvent(const makVrfEvents::DtEvent&);
112  virtual void processResupplyCancel(const makVrfEvents::DtResupplyCancelEvent& resupplyCancel);
114 
116 
117  virtual makVrfEvents::DtResupplyOfferEvent createResupplyOfferInteraction(const DtUUID& receiver);
119  virtual void sendResupplyOfferInteraction(const makVrfEvents::DtResupplyOfferEvent& resupplyOffer);
120 
121  virtual makVrfEvents::DtResupplyCancelEvent createResupplyCancelInteraction(const DtUUID& receiver);
122  virtual void sendResupplyCancelInteraction(const makVrfEvents::DtResupplyCancelEvent& resupplyCancel);
124 
125 protected:
126  void transferSupplies();
127  virtual void processReadyState(const DtUUID& receiver);
128  void processOfferingState(const DtUUID& receiver);
129 
130  virtual void updateRequestedSupplies(const makVrfEvents::DtServiceRequestEvent& serviceRequest);
131  virtual void updateOfferedSupplies(const DtUUID& receiver);
132  virtual void updateSentSupplies(const makVrfEvents::DtResupplyReceivedEvent& resupplyReceived);
133  virtual void removeSentSupplies(const DtUUID& receiver);
134  virtual bool checkSuppliesRequested(const DtUUID& receiver);
135  virtual bool checkResourcesAvailable(const DtUUID& receiver);
136  virtual bool checkResourceAvailable(const DtEntityType& type, int bin = 0);
137  virtual double resourceAvailable(const DtEntityType& type, int bin = 0);
138  virtual void updateResource(const DtEntityType& type, double quantity, int bin = 0);
139 
140  virtual DtTime currentSimTime();
141 
142 protected:
145 
147  std::map<DtUUID, DtResupplySupplierStateData> mySupplierStateData;
148 
149  boost::signals2::scoped_connection myServiceRequestEventConnection;
150  boost::signals2::scoped_connection myResupplyReceivedEventConnection;
151  boost::signals2::scoped_connection myResupplyCancelEventConnection;
152 
153 protected:
158  const DtTime theOfferingStateDefaultTimeout = 120.0;
159 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
virtual bool postAddComponentsInit() override
Calls enableTaskTypes()
virtual const char * type() const override=0
Returns a string identifies the class type of component. Type values are defined in compTypes...
Definition: resupplyReceivedEvent.h:14
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:22
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
Definition: readerWriterRegistry.h:39
boost::signals2::scoped_connection myServiceRequestEventConnection
Definition: resupplySupplierController.h:149
const DtResupplySupplierControllerDescriptor * myResupplySupplierDesc
Controller descriptor.
Definition: resupplySupplierController.h:144
Definition: resupplyOfferEvent.h:14
virtual bool init() override
Calls setRadio()
Definition: resupplyCancelEvent.h:13
Definition: event.h:13
File: simMsg.h.
Definition: simMessage.h:35
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
This class implements a controller, which gives the unit the capability to provide supplies...
Definition: resupplySupplierController.h:33
boost::signals2::scoped_connection myResupplyReceivedEventConnection
Definition: resupplySupplierController.h:150
Definition: serviceRequestEvent.h:14
DtResupplySupplierControllerDescriptor is a DtComponentDescriptor that has additional information nee...
Definition: resupplySupplierControllerDescriptor.h:20
boost::signals2::scoped_connection myResupplyCancelEventConnection
Definition: resupplySupplierController.h:151
std::map< DtUUID, DtResupplySupplierStateData > mySupplierStateData
Controller state transition class.
Definition: resupplySupplierController.h:147
A locally simulated VRF object.
Definition: localObject.h:98

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)