VR-Forces 4.10 Class Documentation
 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) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vl/serviceRequestInteraction.h>
14 
15 #include <vrfMsgTransport/events.h>
16 
19 
22 
25 
29 {
30 public:
31 
38  DtVrfObject* owner,
39  DtSimManager* simManager,
40  DtComponentDescriptor* compDesc = 0,
41  DtReaderWriterRegistry* parentRegistry = 0);
42 
45 
46  virtual const char* type() const;
47 
50  virtual bool postAddComponentsInit();
51 
53  virtual bool init();
54 
60  static void setSupplyingCallback(DtSimMessage * msg, void * usr);
61 
65  virtual void processSetSupplying(DtSimMessage * msg);
66 
69  virtual void addSetDataCallbacks();
70 
73  void removeSetDataCallbacks();
74 
77  virtual void preFirstTickInit();
78 
81  virtual void tick();
82 
83  static DtSimComponent* creator(const DtString& name,
84  DtVrfObject* owner,
85  DtSimManager* simManager,
87  DtReaderWriterRegistry* parentRegistry);
88 
90  static void transferSuppliesTaskCallback(DtSimMessage* msg, void* usr);
91 
94 
95  static void supplyListRequestCallback(const DtVrfObjectMessage* msg, void* usr);
96  virtual void processSupplyListRequest(const DtVrfObjectMessage* msg);
98 
99 protected:
101  virtual DtResupplyReceiverControllerPSR* createPSR();
102 
104  virtual const DtResupplyReceiverControllerDescriptor* getDescriptor();
105 
107 
108  virtual void resupplyOfferEvent(const DtEvent&);
109  virtual void processResupplyOffer(const DtResupplyOfferInteraction& resupplyOffer);
111 
113 
114  virtual void resupplyCancelEvent(const DtEvent&);
115  virtual void processResupplyCancel(const DtResupplyCancelInteraction& resupplyCancel);
117 
119 
120  virtual std::shared_ptr<DtServiceRequestInteraction> createServiceRequestInteraction();
122  virtual void sendServiceRequestInteraction(DtServiceRequestInteraction& serviceRequest);
123  virtual std::shared_ptr<DtResupplyRecInteraction> createResupplyReceivedInteraction();
125  virtual void sendResupplyReceivedInteraction(DtResupplyRecInteraction& resupplyReceived);
126  virtual std::shared_ptr<DtResupplyCancelInteraction> createResupplyCancelInteraction();
128  virtual void sendResupplyCancelInteraction(DtResupplyCancelInteraction& resupplyCancel);
130 
131 protected:
132  virtual void processTransferSuppliesTask(DtSimMessage* msg);
133  virtual void processTransferSuppliesTaskPSR();
134 
136  virtual void retrieveTransferSuppliesTaskParams(const DtTransferSuppliesTask* transferSuppliesTask,
137  DtEntityType & supplyType,
138  double & quantityRequestedTotal,
139  double & rate,
140  DtSharedVrfObjectReference & supplier);
141 
143  virtual void retrieveTransferSuppliesTaskParamsPSR(const DtTransferSuppliesTask* transferSuppliesTask,
144  std::map<DtString, double> & supplies,
145  std::map<DtString, double> & suppliesRate,
146  DtSharedVrfObjectReference & supplier);
147 
148  virtual bool verifyTransferSuppliesTaskParams(double amount, double rate);
149 
150  virtual void transferSupplies();
151  virtual void processReadyState();
152  virtual void processRequestingState();
153  virtual void processReceivingState();
154 
155  virtual void updateTaskedSupplies(const DtEntityType& supplyType,
156  double quantityRequestedTotal,
157  double rate,
158  const DtSharedVrfObjectReference& supplier);
159  virtual void updateTaskedSuppliesPSR(const std::map<DtString, double>& supplies,
160  std::map<DtString, double> & suppliesRate,
161  const DtSharedVrfObjectReference& supplier);
162  virtual void updateOfferedSupplies(const DtResupplyOfferInteraction& resupplyOffer);
163  virtual void updateReceivedSupplies(DtTime interval);
164  virtual void removeReceivedSupplies();
165  virtual bool checkResourceAvailable(DtEntityType type);
166  virtual double resourceAvailable(DtEntityType type);
167  virtual void updateResource(DtEntityType type, double quantity);
168  virtual void updatePSR();
169 
170  virtual const DtString lookUpSupplyType(const DtEntityType& type) const;
171  virtual const DtEntityType lookupSupplyName(const DtString& name) const;
172 
174  virtual double lookupMaxRate(const DtEntityType& type);
175 
176  virtual double calculateQuantityRequested(double quantityRequestedTotal);
177  virtual DtTime calculateReceivingStateTimeout(double quantityRequestedTotal,
178  double quantityReceivedTotal,
179  double quantityRequested,
180  double quantityOffered,
181  double rate);
182  virtual DtTime determineTimer2Period();
183 
184  virtual DtTime currentSimTime();
185 
186 protected:
190 
193 
196 
197 protected:
201  const DtTime theRequestingStateDefaultTimeout = 30.0;
202 
208  const double theReceivingStateTimeoutPercentage = 0.95;
209 
212  const double theTotalReceivedAmountCompletePercentage = 0.999;
213 
217  const int theNumTransferSessions = 10;
218 };
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
virtual bool postAddComponentsInit()
Called after all components have been created, initialized and added to the component manager...
Definition: simComponent.h:146
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
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:20
DtResupplyReceiverControllerPSR * myProcessState
Container for state data associated with this component.
Definition: resupplyReceiverController.h:189
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
DtResupplyReceiverControllerDescriptor is a DtComponentDescriptor that has additional information nee...
Definition: resupplyReceiverControllerDescriptor.h:20
Definition: readerWriterRegistry.h:39
virtual const char * type() const =0
Returns a string identifies the class type of component.
virtual bool init()
Calls setRadio()
This class implements a controller, which gives the unit the capability to receive supplies...
Definition: resupplyReceiverController.h:28
DtSharedVrfObjectReference class will allocate an empty DtVrfObjectReference if one is not assigned s...
Definition: vrfObjectReference.h:102
Definition: events.h:49
DtResupplyReceiverStateData myReceiverStateData
Controller state transition class.
Definition: resupplyReceiverController.h:195
File: simMsg.h.
Definition: simMessage.h:35
Definition: resupplyReceiverStateData.h:132
virtual void tick()
This gives the thread of control to the component.
The base class for all messages to/from a specific DtVrfObject.
Definition: vrfObjectMessage.h:30
const DtResupplyReceiverControllerDescriptor * myResupplyReceiverDesc
Controller descriptor.
Definition: resupplyReceiverController.h:192
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
DtResupplyReceiverControllerPSR is a process state repository which holds state variables for the DtR...
Definition: resupplyReceiverControllerPSR.h:22
VR-Link includes.
Definition: transferSuppliesTask.h:21
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)