ret = rpc_port_stub_add_disconnected_event_cb(stub_handle_,
[](const char* sender, const char* instance, void *data) {
- RpcPortConnection* p = static_cast<RpcPortConnection*>(data);
+ auto* p = static_cast<RpcPortConnection*>(data);
p->touch_stub_disconnected_event_cb_ = true;
- p->Finish();
- }, this);
+ g_timeout_add(1, [](void* data) -> gboolean {
+ auto* p = static_cast<RpcPortConnection*>(data);
+ p->Finish();
+ return G_SOURCE_REMOVE;
+ }, p);
+ },
+ this);
ASSERT_EQ(ret, 0);
ret = rpc_port_stub_add_privilege(stub_handle_,
void ProxySetup() {
int ret = rpc_port_proxy_add_connected_event_cb(proxy_handle_,
- [](const char *ep, const char *port_name, rpc_port_h port, void *data) {
+ [](const char* ep, const char* port_name, rpc_port_h port, void* data) {
RpcPortConnection* p = static_cast<RpcPortConnection*>(data);
p->proxy_port_ = port;
rpc_port_proxy_get_port(p->proxy_handle_, RPC_PORT_PORT_CALLBACK,
ASSERT_EQ(ret, 0);
ret = rpc_port_proxy_add_disconnected_event_cb(proxy_handle_,
- [](const char *ep, const char *port_name, void *data) {
- RpcPortConnection* p = static_cast<RpcPortConnection*>(data);
+ [](const char* ep, const char* port_name, void* data) {
+ auto* p = static_cast<RpcPortConnection*>(data);
p->touch_proxy_disconnected_event_cb_ = true;
- p->Finish();
- }, this);
+ g_timeout_add(1, [](void* data) -> gboolean {
+ auto* p = static_cast<RpcPortConnection*>(data);
+ p->Finish();
+ return G_SOURCE_REMOVE;
+ }, p);
+ },
+ this);
ASSERT_EQ(ret, 0);
ret = rpc_port_proxy_add_received_event_cb(proxy_handle_,
ASSERT_TRUE(touch_stub_disconnected_event_cb_);
}
+
+/*
+ * @testcase rpc_port_disconnect_P
+ * @description disconnect the port.
+ * And then, checks whether the disconnected event callback is invoked or not.
+ * @apicovered rpc_port_disconnect
+ */
+TEST_F(RpcPortConnection, rpc_port_disconnect_P) {
+ char res[] = "test";
+ if (proxy_port_ == nullptr)
+ RunMainLoop();
+
+ ASSERT_NE(proxy_port_, nullptr);
+ int ret = rpc_port_write(proxy_port_, res, sizeof(res));
+ ASSERT_EQ(ret, 0);
+
+ if (stub_port_ == nullptr)
+ RunMainLoop();
+
+ ret = rpc_port_disconnect(stub_port_);
+ EXPECT_EQ(ret, 0);
+
+ RunMainLoop();
+ ASSERT_TRUE(touch_stub_disconnected_event_cb_);
+ ASSERT_TRUE(touch_proxy_disconnected_event_cb_);
+}