12#ifndef WSFXIO_SERVICE_HPP
13#define WSFXIO_SERVICE_HPP
15#include "wsf_export.h"
21#include "UtCallbackHolder.hpp"
78template<
typename T,
typename SERVICE_TYPE = WsfXIO_Service>
85 : SERVICE_TYPE(aInterfacePtr)
93 mRequests[subscriptionPtr->
GetId()] = aRequest;
94 return subscriptionPtr;
101 SERVICE_TYPE::SubscriptionCancelled(aSubscriptionPtr);
108 typename RequestMapT::iterator i = mRequests.find(aSubscriptionPtr->
GetId());
109 if (i != mRequests.end())
117 typename RequestMapT::const_iterator i = mRequests.find(aId);
118 if (i != mRequests.end())
150template<
typename SESSION_TYPE,
typename REQUEST_TYPE,
typename SERVICE_TYPE>
158 : SERVICE_TYPE(aInterfacePtr)
166 mRequests[subscriptionPtr->
GetId()] =
new SessionType(subscriptionPtr, aRequest);
167 return subscriptionPtr;
175 SERVICE_TYPE::SubscriptionCancelled(aSubscriptionPtr);
180 return SERVICE_TYPE::FindSubscription(aConnectionPtr, aSubscriptionId);
185 SERVICE_TYPE::AddRequiredPlatform(aPlatform, aSubscriptionPtr);
189 using RequestMapT = std::map<WsfXIO_SubscriptionId, SessionType*>;
193 typename RequestMapT::iterator i = mRequests.find(aSubscriptionPtr->
GetId());
194 if (mRequests.end() != i)
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
std::pair< int, int > WsfXIO_SubscriptionId
Definition WsfXIO_Subscription.hpp:26
Definition WsfXIO_Connection.hpp:37
Definition WsfXIO_Interface.hpp:54
Basic information required for subscription requests.
Definition WsfXIO_PacketRegistry.hpp:137
Definition WsfXIO_PacketRegistry.hpp:171
WsfXIO_Subscription & GetSubscription()
Definition WsfXIO_Service.hpp:139
WsfXIO_ServiceSession(WsfXIO_Subscription *aSubscriptionPtr)
Definition WsfXIO_Service.cpp:150
virtual void HandleResponse(WsfXIO_ResponsePkt &aPkt)
Called when a WsfXIO_ResponsePkt is received from a the request object.
Definition WsfXIO_Service.hpp:138
WsfXIO_Subscription * CreateSubscription(RequestType &aRequest)
Create a subscription from a request.
Definition WsfXIO_Service.hpp:90
const RequestMapT & GetRequests() const
Definition WsfXIO_Service.hpp:124
const T * FindRequest(WsfXIO_SubscriptionId aId) const
Definition WsfXIO_Service.hpp:115
std::map< WsfXIO_SubscriptionId, T > RequestMapT
Definition WsfXIO_Service.hpp:105
void SubscriptionCancelled(WsfXIO_Subscription *aSubscriptionPtr) override
Definition WsfXIO_Service.hpp:106
virtual void SubscriptionCancelledT(WsfXIO_Subscription *aSubscriptionPtr, RequestType &aRequest)
Definition WsfXIO_Service.hpp:99
WsfXIO_ServiceT(WsfXIO_Interface *aInterfacePtr)
Definition WsfXIO_Service.hpp:84
T RequestType
Definition WsfXIO_Service.hpp:82
Definition WsfXIO_Service.hpp:35
UtCallbackHolder mCallbacks
Definition WsfXIO_Service.hpp:67
WsfXIO_Service(WsfXIO_Interface *aInterfacePtr)
Definition WsfXIO_Service.cpp:21
void DenyRequest(WsfXIO_RequestDataPkt &aRequest)
Definition WsfXIO_Service.cpp:86
std::map< WsfXIO_SubscriptionId, WsfXIO_Subscription * > SubscriptionMap
Definition WsfXIO_Service.hpp:45
void AddSubscription(WsfXIO_Subscription *aSubscriptionPtr)
Definition WsfXIO_Service.cpp:37
WsfXIO_Interface * GetInterface() const
Definition WsfXIO_Service.hpp:42
const SubscriptionMap GetSubscriptions() const
Definition WsfXIO_Service.hpp:61
WsfXIO_Interface * mInterfacePtr
Definition WsfXIO_Service.hpp:68
void HandleDisconnect(WsfXIO_Connection *aConnection)
Definition WsfXIO_Service.cpp:95
WsfXIO_Subscription * FindSubscription(WsfXIO_Connection *aConnectionPtr, int aSubscriptionId)
Definition WsfXIO_Service.cpp:73
virtual void SubscriptionCancelled(WsfXIO_Subscription *aSubscriptionPtr)
Definition WsfXIO_Service.cpp:134
WsfXIO_Subscription * CreateSubscription(WsfXIO_RequestDataPkt &aRequest)
Definition WsfXIO_Service.cpp:127
void HandleCancellation(WsfXIO_SubscriptionCancelPkt &aPkt)
Definition WsfXIO_Service.cpp:114
virtual void RemovingSubscription(WsfXIO_Subscription *aSubscriptionPtr)
Definition WsfXIO_Service.hpp:65
bool RemoveSubscription(WsfXIO_Subscription *aSubscriptionPtr)
Definition WsfXIO_Service.cpp:43
std::map< WsfXIO_SubscriptionId, SessionType * > RequestMapT
Definition WsfXIO_Service.hpp:189
REQUEST_TYPE RequestType
Definition WsfXIO_Service.hpp:155
WsfXIO_SessionServiceT(WsfXIO_Interface *aInterfacePtr)
Definition WsfXIO_Service.hpp:157
SESSION_TYPE SessionType
Definition WsfXIO_Service.hpp:154
const RequestMapT & GetRequests() const
Definition WsfXIO_Service.hpp:201
virtual void SubscriptionCancelledT(WsfXIO_Subscription *aSubscriptionPtr, SessionType &aSession)
Definition WsfXIO_Service.hpp:172
void AddRequiredPlatform(WsfPlatform &aPlatform, WsfXIO_Subscription *aSubscriptionPtr)
Definition WsfXIO_Service.hpp:183
virtual void SubscriptionCancelled(WsfXIO_Subscription *aSubscriptionPtr)
Definition WsfXIO_Service.hpp:191
WsfXIO_Subscription * CreateSubscription(RequestType &aRequest)
Create a subscription from a request.
Definition WsfXIO_Service.hpp:163
WsfXIO_Subscription * FindSubscription(WsfXIO_Connection *aConnectionPtr, int aSubscriptionId)
Definition WsfXIO_Service.hpp:178
Definition WsfXIO_PacketRegistry.hpp:128
A WsfXIO_Subscription wraps information about a remote request for information.
Definition WsfXIO_Subscription.hpp:30
WsfXIO_SubscriptionId GetId() const
Returns a unique value identifying this subscription.
Definition WsfXIO_Subscription.hpp:40