virtual void Event(const ReadEvent &event) = 0;
virtual void Event(const CloseEvent &event) = 0;
+ virtual void Start() = 0;
+ virtual void Stop() = 0;
+
GenericSocketService() : m_serviceManager(NULL) {}
virtual ~GenericSocketService(){}
protected:
T *service = NULL;
try {
service = new T();
- service->Create();
+ service->Start();
manager.RegisterSocketService(service);
service = NULL;
} catch (const CKM::Exception &exception) {
virtual ~ServiceThread()
{
- if (m_state != State::NoThread)
- Join();
+ assert((m_state == State::NoThread) && "Thread was not stopped before ServiceThread destruction!");
}
protected:
ServiceDescriptionVector GetServiceDescription() {
return ServiceDescriptionVector();
}
+
+ void Start() {}
+ void Stop() {}
+
void Event(const AcceptEvent &event) { (void)event; }
void Event(const WriteEvent &event) { (void)event; }
void Event(const ReadEvent &event) { (void)event; }
return ServiceDescriptionVector();
}
+ void Start() {}
+ void Stop() {}
+
void Event(const AcceptEvent &event) { (void)event; } // not supported
void Event(const WriteEvent &event) { (void)event; } // not supported
void Event(const CloseEvent &event) { (void)event; } // not supported
serviceMap.insert(m_socketDescriptionVector[i].service);
// Time to destroy all services.
- for(auto it = serviceMap.begin(); it != serviceMap.end(); ++it) {
- LogDebug("delete " << (void*)(*it));
- delete *it;
+ for (auto service : serviceMap) {
+ LogDebug("delete " << (void*)(service));
+ service->Stop();
+ delete service;
}
for (size_t i = 0; i < m_socketDescriptionVector.size(); ++i)
delete m_logic;
}
+void CKMService::Start() {
+ Create();
+}
+
+void CKMService::Stop() {
+ Join();
+}
+
GenericSocketService::ServiceDescriptionVector CKMService::GetServiceDescription()
{
return ServiceDescriptionVector {
CKMService(CKMService &&) = delete;
CKMService& operator=(const CKMService &) = delete;
CKMService& operator=(CKMService &&) = delete;
+
+ virtual void Start(void);
+ virtual void Stop(void);
+
virtual ~CKMService();
ServiceDescriptionVector GetServiceDescription();
delete m_logic;
}
+void OCSPService::Start() {
+ Create();
+}
+
+void OCSPService::Stop() {
+ Join();
+}
+
GenericSocketService::ServiceDescriptionVector OCSPService::GetServiceDescription()
{
return ServiceDescriptionVector {
OCSPService(OCSPService &&) = delete;
OCSPService& operator=(const OCSPService &) = delete;
OCSPService& operator=(OCSPService &&) = delete;
+
+ virtual void Start();
+ virtual void Stop();
+
virtual ~OCSPService();
ServiceDescriptionVector GetServiceDescription();