VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
resupplyReceiverController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfMsgTransport/events.h>
14 
21 
24 
25 #include <boost/signals2.hpp>
26 
29 
33 {
34 public:
35 
42  DtSimulationServices* simManager,
43  DtComponentDescriptor* compDesc = 0,
44  DtReaderWriterRegistry* parentRegistry = 0);
45 
47  virtual ~DtResupplyReceiverController() override;
48 
49  virtual const char* type() const override;
50 
53  virtual bool postAddComponentsInit() override;
54 
56  virtual bool init() override;
57 
63  static void setSupplyingCallback(DtSimMessage * msg, void * usr);
64 
68  virtual void processSetSupplying(DtSimMessage * msg);
69 
72  virtual void addSetDataCallbacks();
73 
76  void removeSetDataCallbacks();
77 
80  virtual void preFirstTickInit() override;
81 
84  virtual void tick() override;
85 
86  static DtSimComponent* creator(const DtString& name,
87  DtLocalObject* owner,
88  DtSimulationServices* simManager,
90  DtReaderWriterRegistry* parentRegistry);
91 
93  static void transferSuppliesTaskCallback(DtSimMessage* msg, void* usr);
94 
97 
98  static void supplyListRequestCallback(const DtVrfObjectMessage* msg, void* usr);
99  virtual void processSupplyListRequest(const DtVrfObjectMessage* msg);
101 
102 protected:
104  virtual DtResupplyReceiverControllerPSR* createPSR();
105 
107  virtual const DtResupplyReceiverControllerDescriptor* getDescriptor();
108 
110 
111  virtual void resupplyOfferEvent(const makVrfEvents::DtEvent&);
112  virtual void processResupplyOffer(const makVrfEvents::DtResupplyOfferEvent& resupplyOffer);
114 
116 
117  virtual void resupplyCancelEvent(const makVrfEvents::DtEvent&);
118  virtual void processResupplyCancel(const makVrfEvents::DtResupplyCancelEvent& resupplyCancel);
120 
122 
123  virtual makVrfEvents::DtServiceRequestEvent createServiceRequestInteraction();
124 
126  virtual void sendServiceRequestInteraction(const makVrfEvents::DtServiceRequestEvent& serviceRequest);
128  virtual makVrfEvents::DtResupplyReceivedEvent createResupplyReceivedInteraction();
129  virtual void sendResupplyReceivedInteraction(const makVrfEvents::DtResupplyReceivedEvent& resupplyReceived);
130 
131  virtual makVrfEvents::DtResupplyCancelEvent createResupplyCancelInteraction();
133  virtual void sendResupplyCancelInteraction(const makVrfEvents::DtResupplyCancelEvent& resupplyCancel);
135 
136 protected:
137  virtual void processTransferSuppliesTask(DtSimMessage* msg);
138  virtual void processTransferSuppliesTaskPSR();
139 
141  virtual void retrieveTransferSuppliesTaskParams(const DtTransferSuppliesTask* transferSuppliesTask,
142  DtEntityType & supplyType,
143  double & quantityRequestedTotal,
144  double & rate,
145  DtSimObjectReference & supplier);
146 
148  virtual void retrieveTransferSuppliesTaskParamsPSR(const DtTransferSuppliesTask* transferSuppliesTask,
149  std::map<DtEntityType, double> & supplies,
150  std::map<DtEntityType, double> & suppliesRate,
151  DtSimObjectReference & supplier);
152 
153  virtual bool verifyTransferSuppliesTaskParams(double amount, double rate);
154 
155  virtual void transferSupplies();
156  virtual void processReadyState();
157  virtual void processRequestingState();
158  virtual void processReceivingState();
159 
160  virtual void updateTaskedSupplies(const DtEntityType& supplyType,
161  double quantityRequestedTotal,
162  double rate,
163  DtSimObjectReference supplier);
164  virtual void updateTaskedSuppliesPSR(const std::map<DtEntityType, double>& supplies,
165  std::map<DtEntityType, double> & suppliesRate,
166  DtSimObjectReference supplier);
167  virtual void updateOfferedSupplies(const makVrfEvents::DtResupplyOfferEvent& resupplyOffer);
168  virtual void updateReceivedSupplies(DtTime interval);
169  virtual void removeReceivedSupplies();
170  virtual bool checkResourceAvailable(const DtEntityType& type, int bin = 0);
171  virtual double resourceAvailable(const DtEntityType& type, int bin = 0);
172  virtual void updateResource(DtEntityType type, double quantity, int bin = 0);
173  virtual void updatePSR();
174 
176  virtual double lookupMaxRate(const DtEntityType& type);
177 
178  virtual double calculateQuantityRequested(double quantityRequestedTotal);
179  virtual DtTime calculateReceivingStateTimeout(double quantityRequestedTotal,
180  double quantityReceivedTotal,
181  double quantityRequested,
182  double quantityOffered,
183  double rate);
184  virtual DtTime determineTimer2Period();
185 
186  virtual DtTime currentSimTime();
187 
188 protected:
192 
195 
198 
199 protected:
203  const DtTime theRequestingStateDefaultTimeout = 30.0;
204 
210  const double theReceivingStateTimeoutPercentage = 0.95;
211 
214  const double theTotalReceivedAmountCompletePercentage = 0.999;
215 
219  const int theNumTransferSessions = 10;
220 
221  boost::signals2::scoped_connection myResupplyOfferEventConnection;
222  boost::signals2::scoped_connection myResupplyCancelEventConnection;
223 };
#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
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:22
DtResupplyReceiverControllerPSR * myProcessState
Container for state data associated with this component. This state is saved and restored as part of ...
Definition: resupplyReceiverController.h:191
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
boost::signals2::scoped_connection myResupplyOfferEventConnection
Definition: resupplyReceiverController.h:221
DtResupplyReceiverControllerDescriptor is a DtComponentDescriptor that has additional information nee...
Definition: resupplyReceiverControllerDescriptor.h:20
Definition: readerWriterRegistry.h:39
This class implements a controller, which gives the unit the capability to receive supplies...
Definition: resupplyReceiverController.h:32
Definition: resupplyOfferEvent.h:14
DtResupplyReceiverStateData myReceiverStateData
Controller state transition class.
Definition: resupplyReceiverController.h:197
virtual bool init() override
Calls setRadio()
Definition: resupplyCancelEvent.h:13
boost::signals2::scoped_connection myResupplyCancelEventConnection
Definition: resupplyReceiverController.h:222
Definition: event.h:13
File: simMsg.h.
Definition: simMessage.h:35
Definition: resupplyReceiverStateData.h:131
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
The base class for all messages to/from a specific DtVrfObject. Various subclasses of this class will...
Definition: vrfObjectMessage.h:30
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
const DtResupplyReceiverControllerDescriptor * myResupplyReceiverDesc
Controller descriptor.
Definition: resupplyReceiverController.h:194
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
DtResupplyReceiverControllerPSR is a process state repository which holds state variables for the DtR...
Definition: resupplyReceiverControllerPSR.h:22
VR-Link includes.
Definition: transferSuppliesTask.h:21
Definition: serviceRequestEvent.h:14
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)