Fix serious bug that causes crash on CKM exit.
[platform/core/security/key-manager.git] / src / manager / main / generic-socket-manager.h
index bf0dc6a..c9d5eda 100644 (file)
 #include <vector>
 #include <string>
 
-#include <dpl/exception.h>
+#include <sys/types.h>
 
+#include <dpl/exception.h>
 #include <generic-event.h>
+#include <dpl/raw-buffer.h>
+#include <ckm/ckm-type.h>
 
 extern "C" {
 struct msghdr;
 } // extern "C"
 
-namespace CentralKeyManager {
+namespace CKM {
 
 typedef int InterfaceID;
 
+struct Credentials {
+    Credentials() : clientUid(0) {}
+    Credentials(uid_t socketUid, const Label & socketLabel)
+        : clientUid(socketUid), smackLabel(socketLabel) {}
+    uid_t clientUid;
+    Label smackLabel;
+};
+
 struct ConnectionID {
     int sock;                                 // This is decriptor used for connection
     int counter;                              // Unique handler per socket
@@ -49,12 +60,9 @@ struct ConnectionID {
     }
 };
 
-typedef std::vector<unsigned char> RawBuffer;
-
 struct GenericSocketManager;
 
 struct GenericSocketService {
-    typedef std::string SmackLabel;
     typedef std::string ServiceHandlerPath;
     struct ServiceDescription {
         ServiceDescription(const char *path,
@@ -67,7 +75,7 @@ struct GenericSocketService {
           , useSendMsg(useSendMsg)
         {}
 
-        SmackLabel smackLabel;                 // Smack label for socket
+        Label smackLabel;                      // Smack label for socket
         InterfaceID interfaceID;               // All data from serviceHandlerPath will be marked with this interfaceHandler
         ServiceHandlerPath serviceHandlerPath; // Path to file
         bool useSendMsg;
@@ -78,6 +86,7 @@ struct GenericSocketService {
     struct AcceptEvent : public GenericEvent {
         ConnectionID connectionID;
         InterfaceID interfaceID;
+        Credentials credentials;
     };
 
     struct WriteEvent : public GenericEvent {
@@ -105,6 +114,9 @@ struct GenericSocketService {
     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:
@@ -119,6 +131,6 @@ struct GenericSocketManager {
     virtual ~GenericSocketManager(){}
 };
 
-} // namespace CentralKeyManager
+} // namespace CKM
 
 #endif // _CENT_KEY_MNG_GENERIC_SERVICE_MANAGER_