Find services using instance id 24/170724/1
authorJunghoon Park <jh9216.park@samsung.com>
Thu, 22 Feb 2018 00:36:07 +0000 (09:36 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Thu, 22 Feb 2018 00:36:07 +0000 (09:36 +0900)
- Require:
 https://review.tizen.org/gerrit/#/c/170718/

Change-Id: I5521a93a157b1417748ee40197254b81f55d24ca
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
idlc/cs_gen/cs_cb_stub_interop.h
idlc/cs_gen/cs_stub_gen.cc

index 3989132..c6f770e 100644 (file)
@@ -3,17 +3,17 @@ const char* cs_cb_stub_interop =
 R"__cs_cb(
         internal static partial class Stub
         {
-            //typedef void (*rpc_port_stub_connected_event_cb)(const char *sender, void* data);
+            //typedef void (*rpc_port_stub_connected_event_cb)(const char *sender, const char *instance, void* data);
             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-            internal delegate void ConnectedEventCallback(string sender, IntPtr data);
+            internal delegate void ConnectedEventCallback(string sender, string instance, IntPtr data);
 
-            //typedef void (* rpc_port_stub_disconnected_event_cb) (const char* sender, void* data);
+            //typedef void (* rpc_port_stub_disconnected_event_cb) (const char* sender, const char *instance, void* data);
             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-            internal delegate void DisconnectedEventCallback(string sender, IntPtr data);
+            internal delegate void DisconnectedEventCallback(string sender, string instance, IntPtr data);
 
-            //typedef void (* rpc_port_stub_received_event_cb) (const char* sender, rpc_port_h port, void* data);
+            //typedef void (* rpc_port_stub_received_event_cb) (const char* sender, const char *instance, rpc_port_h port, void* data);
             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-            internal delegate int ReceivedEventCallback(string sender, IntPtr port, IntPtr data);
+            internal delegate int ReceivedEventCallback(string sender, string instance, IntPtr port, IntPtr data);
 
             //int rpc_port_stub_create(rpc_port_stub_h* h, const char* port_name);
             [DllImport(Libraries.RpcPort, EntryPoint = "rpc_port_stub_create")]
index 1c7d2e7..4558f74 100644 (file)
@@ -106,6 +106,11 @@ void CsStubGen::GenServiceBase(std::ofstream& stream, const Interface& iface) {
             "        get; internal set;\n" \
             "    }\n" \
             "\n" \
+            "    public string Instance\n" \
+            "    {\n" \
+            "        get; internal set;\n" \
+            "    }\n" \
+            "\n" \
             "    protected ServiceBase()\n" \
             "    {\n" \
             "    }\n" \
@@ -132,7 +137,7 @@ void CsStubGen::GenDeclarations(std::ofstream& stream,
 
 void CsStubGen::GenReceivedEvent(std::ofstream& stream, const Interface& iface) {
   const char method_front[] =
-    "private int OnReceivedEvent(string sender, IntPtr port, IntPtr data)\n" \
+    "private int OnReceivedEvent(string sender, string instance, IntPtr port, IntPtr data)\n" \
     "{\n" \
     "    int ret = Interop.LibRPCPort.Parcel.CreateFromPort(out IntPtr p, port);\n" \
     "\n" \
@@ -145,7 +150,7 @@ void CsStubGen::GenReceivedEvent(std::ofstream& stream, const Interface& iface)
     "\n" \
     "    foreach (var i in  _services)\n" \
     "    {\n" \
-    "        if (i.Sender.Equals(sender))\n" \
+    "        if (i.Instance.Equals(instance))\n" \
     "        {\n" \
     "            b = i;\n" \
     "            break;\n" \
@@ -254,10 +259,11 @@ void CsStubGen::GenInvocation(std::ofstream& stream, const Declaration& decl) {
 
 void CsStubGen::GenConnectedEvent(std::ofstream& stream) {
   const char method[] =
-      "private void OnConnectedEvent(string sender, IntPtr data)\n" \
+      "private void OnConnectedEvent(string sender, string instance, IntPtr data)\n" \
       "{\n" \
       "    ServiceBase s = Activator.CreateInstance(_serviceType) as ServiceBase;\n" \
       "    s.Sender = sender;\n" \
+      "    s.Instance = instance;\n" \
       "    s.OnCreate();\n" \
       "    _services.Add(s);\n" \
       "}\n";
@@ -266,11 +272,11 @@ void CsStubGen::GenConnectedEvent(std::ofstream& stream) {
 
 void CsStubGen::GenDisconnectedEvent(std::ofstream& stream) {
   const char method[] =
-      "private void OnDisconnectedEvent(string sender, IntPtr data)\n" \
+      "private void OnDisconnectedEvent(string sender, string instance, IntPtr data)\n" \
       "{\n" \
       "    foreach (var i in _services)\n" \
       "    {\n" \
-      "        if (i.Sender.Equals(sender))\n" \
+      "        if (i.Instance.Equals(instance))\n" \
       "        {\n" \
       "            i.OnTerminate();\n" \
       "            _services.Remove(i);\n" \