MAK Legion API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
ownershipManager.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 
8 #include "legionNet/export.h"
9 
13 #include "legionDataStore/span.h"
14 
16 
17 #include <vector>
18 
19 namespace Legion
20 {
21  class Connection;
22 
24 
25 
63 
66  {
70  AcquireException // Received ownership acquire callback but had problems with private data or creating write repository, etc.
71  };
72 
85  const std::string exceptionDescription)> InitiateAcquisitionResultCallback;
86 
88  {
89 
90  public:
91 
92  virtual OwnershipManagerHandle handle() const;
93 
101 
102  virtual UInt64 requestAcquisition(Span<GlobalIdentifier> globalIds, Span<char> privateData,
103  TransactionIdentifier transactionId = 0);
105 
107  virtual void rejectDivestitureRequest(TransactionIdentifier transactionId, Span<GlobalIdentifier> globalIds,
108  Span<char> privateData);
109 
114  virtual void divest(TransactionIdentifier transactionId, Span<GlobalIdentifier> globalIds, Span<char> privateData);
115 
118 
119  virtual UInt64 requestInitiateAcquisition(ClientIdentifier acquiringClientId, Span<GlobalIdentifier> globalIds,
120  Span<char> privateData);
122 
125  virtual void initateAcquisitionRequestResponse(TransactionIdentifier transactionId, Span<GlobalIdentifier> globalIds,
126  InitiateAcquisitionResult result, std::string exceptionDescription="");
127 
130 
131  virtual UInt32 addDivestitureRequestCallback(DivestitureRequestCallback callback);
132  virtual bool removeDivestitureRequestCallback(UInt32 callbackHandle);
133  virtual UInt32 addRequestRejectedCallback(RequestRejectedCallback callback);
134  virtual bool removeRequestRejectedCallback(UInt32 callbackHandle);
135  virtual UInt32 addAcquiredCallback(AcquiredCallback callback);
136  virtual bool removeAcquiredCallback(UInt32 callbackHandle);
137  virtual UInt32 addInitiateAcquisitionRequestCallback(InitiateAcquisitionRequestCallback callback);
138  virtual bool removeInitiateAcquisitionRequestCallback(UInt32 callbackHandle);
139  virtual UInt32 addInitiateAcquisitionResultCallback(InitiateAcquisitionResultCallback callback);
140  virtual bool removeInitiateAcquisitionResultCallback(UInt32 callbackHandle);
142 
143  protected:
144 
146  OwnershipManager(OwnershipManagerHandle ownershipHandle, DatabaseHandle databaseHandle);
147 
149  virtual ~OwnershipManager();
150 
151  struct CallbackData;
152  virtual CallbackData* removeCallback(std::vector<CallbackData*>& callbackList, UInt32 callbackHandle);
153 
154 #define divestitureRequestCallbackParameters TransactionId transactionId, const GlobalId* globalIds, UInt32 idCount, \
155  const char* privateData, UInt32 dataSize
156 static void divestitureRequestCallback(void* usr, divestitureRequestCallbackParameters);
157 
158 #define requestRejectedCallbackParameters TransactionId transactionId, const GlobalId* globalIds, UInt32 idCount, \
159  const char* privateData, UInt32 dataSize
160 static void requestRejectedCallback(void* usr, requestRejectedCallbackParameters);
161 
162 #define acquiredCallbackParameters TransactionId transactionId, const GlobalId* globalIds, UInt32 idCount, \
163  const char* privateData, UInt32 dataSize
164 static void acquiredCallback(void* usr, acquiredCallbackParameters);
165 
166 #define initiateAcquisitionRequestCallbackParameters TransactionId transactionId, const GlobalId* globalIds, UInt32 idCount, \
167  const char* privateData, UInt32 dataSize
168 static void initiateAcquisitionRequestCallback(void* usr, initiateAcquisitionRequestCallbackParameters);
169 
170 #define initiateAcquisitionResultCallbackParameters TransactionId transactionId, const GlobalId* globalIds, UInt32 idCount, \
171  unsigned int result, const char* exceptionDescription
172 static void initiateAcquisitionResultCallback(void* usr, initiateAcquisitionResultCallbackParameters);
173 
174  protected:
175 
176  friend class Connection;
177 
180 
182  {
184  };
185 
187  {
188  std::function<void(divestitureRequestCallbackParameters)> convertAndExecute;
189  };
190  std::vector<CallbackData*> myDivestitureRequestCallbacks;
191 
193  {
194  std::function<void(requestRejectedCallbackParameters)> convertAndExecute;
195  };
196  std::vector<CallbackData*> myRequestRejectedCallbacks;
197 
199  {
200  std::function<void(acquiredCallbackParameters)> convertAndExecute;
201  };
202  std::vector<CallbackData*> myAcquiredCallbacks;
203 
205  {
206  std::function<void(initiateAcquisitionRequestCallbackParameters)> convertAndExecute;
207  };
208  std::vector<CallbackData*> myInitiateAcquisitionRequestCallbacks;
209 
211  {
212  std::function<void(initiateAcquisitionResultCallbackParameters)> convertAndExecute;
213  };
214  std::vector<CallbackData*> myInitiateAcquisitionResultCallbacks;
215 
216  };
217 
218 }
219 
#define initiateAcquisitionResultCallbackParameters
Definition: ownershipManager.h:170
std::function< void(acquiredCallbackParameters)> convertAndExecute
Definition: ownershipManager.h:200
std::vector< CallbackData * > myAcquiredCallbacks
Definition: ownershipManager.h:202
#define LEGIONNET_DLL
Definition: legionNet/export.h:15
UInt16 ClientIdentifier
Definition: dataTypes.h:52
#define initiateAcquisitionRequestCallbackParameters
Definition: ownershipManager.h:166
#define divestitureRequestCallbackParameters
Definition: ownershipManager.h:154
Definition: ownershipManager.h:69
UInt64 DatabaseHandle
Definition: simulationDatabase.h:32
Defines a template callback object to make binding member function pointers easier.
std::vector< CallbackData * > myDivestitureRequestCallbacks
Definition: ownershipManager.h:190
InitiateAcquisitionResult
Primary Ownership Acquisition (ClientA is acquiring and ClientD is divesting) ClientA calls : request...
Definition: ownershipManager.h:65
UInt32 handle
Definition: ownershipManager.h:183
Definition: ownershipManager.h:87
DatabaseHandle myDatabaseHandle
Definition: ownershipManager.h:179
A span represents a contiguous array of objects in memory.
Definition: span.h:21
std::function< void(initiateAcquisitionRequestCallbackParameters)> convertAndExecute
Definition: ownershipManager.h:206
Callback template for binding static or member functions for callback at later time The return type a...
Definition: callback.h:66
OwnershipManagerHandle myHandle
Definition: ownershipManager.h:178
unsigned int UInt32
Definition: dataTypes.h:44
Definition: ownershipManager.h:67
#define acquiredCallbackParameters
Definition: ownershipManager.h:162
std::function< void(requestRejectedCallbackParameters)> convertAndExecute
Definition: ownershipManager.h:194
std::function< void(divestitureRequestCallbackParameters)> convertAndExecute
Definition: ownershipManager.h:188
std::vector< CallbackData * > myInitiateAcquisitionRequestCallbacks
Definition: ownershipManager.h:208
Definition: ownershipManager.h:181
std::vector< CallbackData * > myInitiateAcquisitionResultCallbacks
Definition: ownershipManager.h:214
std::vector< CallbackData * > myRequestRejectedCallbacks
Definition: ownershipManager.h:196
UInt64 TransactionIdentifier
Definition: dataTypes.h:51
unsigned long long UInt64
Definition: dataTypes.h:46
Definition: ownershipManager.h:70
#define requestRejectedCallbackParameters
Definition: ownershipManager.h:158
std::function< void(initiateAcquisitionResultCallbackParameters)> convertAndExecute
Definition: ownershipManager.h:212
UInt64 OwnershipManagerHandle
Definition: ownershipManager.h:21
Definition: connection.h:24
Definition: ownershipManager.h:68
Definition: ownershipManager.h:198

Document ID: Generated on Mon Mar 8 15:11:30 EST 2021 from SVN revision 225633
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)