⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-names.c

📁 dbus源码
💻 C
📖 第 1 页 / 共 2 页
字号:
              dbus_message_get_args (msg, &error, DBUS_TYPE_STRING, &n, DBUS_TYPE_STRING, &ln, DBUS_TYPE_STRING, &an, DBUS_TYPE_INVALID);              if (dbus_error_is_set (&error))                {                  fprintf (stderr, "Error getting args: %s\n", error.message);                  dbus_error_free (&error);                  dbus_message_unref (msg);                  return FALSE;                }              if (strcmp (n, bus_name) == 0)                {                  if ((lost_name == NULL && strcmp (ln, "") == 0)                        || strcmp (lost_name, ln) == 0)                    {                      if ((acquired_name == NULL && strcmp (an, "") == 0)                            || strcmp (acquired_name, an) == 0)                        {                          dbus_message_unref (msg);                           break;                        }                      else                        {                          fprintf (stderr, "Error: name %s was expected to be acquired but we got %s instead\n", acquired_name, an);                          dbus_message_unref (msg);                          return FALSE;                        }                    }                  else                    {                      fprintf (stderr, "Error: name %s was expected to be lost but we got %s instead\n", lost_name, ln);                      dbus_message_unref (msg);                      return FALSE;                    }                }            }          dbus_message_unref (msg);        }    }  if (tries == NUM_TRIES_TIL_FAIL)    {      fprintf (stderr, "Did not recive the expected NameOwnerChanged signal!!!\n");      return FALSE;    }    return TRUE;}static dbus_bool_t check_signals (DBusConnection *monitor,               int iteration,               DBusConnection *conn[NUM_CONN]){  DBusConnection *lost_conn = NULL;  DBusConnection *acquired_conn = NULL;  const char *lost_name;  const char *acquired_name;    if (iteration == 0)    {      int i;      i = test_data[iteration].expected_queue[0];      if (i >= 0)        acquired_conn = conn[i];    }  else    {      int i;      i = test_data[iteration - 1].expected_queue[0];      if (i >= 0)        lost_conn = conn[i];      i = test_data[iteration].expected_queue[0];      if (i >= 0)        acquired_conn = conn[i];      if (acquired_conn == lost_conn)        acquired_conn = lost_conn = NULL;    }    lost_name = lost_conn == NULL? NULL :                          dbus_bus_get_unique_name (lost_conn);    acquired_name = acquired_conn == NULL? NULL :                         dbus_bus_get_unique_name (acquired_conn);    if (lost_name != NULL)      if (!match_acquired_or_lost_signal (lost_conn,                                         "NameLost",                                         TEST_NAME))        return FALSE;    if (acquired_name != NULL)      if (!match_acquired_or_lost_signal (acquired_conn,                                         "NameAcquired",                                         TEST_NAME))        return FALSE;    if (acquired_name != NULL || lost_name != NULL)      if (!match_name_owner_changed_signal (monitor,                                            TEST_NAME,                                            lost_name,                                            acquired_name))        return FALSE;        return TRUE;}intmain (int argc, char *argv[]){  DBusConnection *conn[NUM_CONN];  DBusConnection *monitor;  DBusError error;  int i;  int test_data_len;  test_data_len = sizeof (test_data) / sizeof (CommandAndResult);    dbus_error_init (&error);  conn[0] = dbus_bus_get_private (DBUS_BUS_SESSION, &error);  if (dbus_error_is_set (&error))    {      fprintf (stderr, "*** Failed to open connection 0 to session bus: %s\n",               error.message);      dbus_error_free (&error);      return 1;    }    if (!match_acquired_or_lost_signal (conn[0],                                "NameAcquired",                                dbus_bus_get_unique_name (conn[0])))    return 1;    conn[1] = dbus_bus_get_private (DBUS_BUS_SESSION, &error);  if (dbus_error_is_set (&error))    {      fprintf (stderr, "*** Failed to open connection 1 to session bus: %s\n",               error.message);      dbus_error_free (&error);      return 1;    }  if (!match_acquired_or_lost_signal (conn[1],                                "NameAcquired",                                dbus_bus_get_unique_name (conn[1])))    return 1;  conn[2] = dbus_bus_get_private (DBUS_BUS_SESSION, &error);  if (dbus_error_is_set (&error))    {      fprintf (stderr, "*** Failed to open connection 2 to session bus: %s\n",               error.message);      dbus_error_free (&error);      return 1;    }  if (!match_acquired_or_lost_signal (conn[2],                                "NameAcquired",                                dbus_bus_get_unique_name (conn[2])))    return 1;  conn[3] = dbus_bus_get_private (DBUS_BUS_SESSION, &error);  if (dbus_error_is_set (&error))    {      fprintf (stderr, "*** Failed to open connection 3 to session bus: %s\n",               error.message);      dbus_error_free (&error);      return 1;    }  if (!match_acquired_or_lost_signal (conn[3],                                "NameAcquired",                                dbus_bus_get_unique_name (conn[3])))    return 1;  monitor = dbus_bus_get (DBUS_BUS_SESSION, &error);  if (dbus_error_is_set (&error))    {      fprintf (stderr, "*** Failed to open monitoring connection to session bus: %s\n",               error.message);      dbus_error_free (&error);      return 1;    }  if (!match_acquired_or_lost_signal (monitor,                                "NameAcquired",                                dbus_bus_get_unique_name (monitor)))    return 1;  dbus_bus_add_match (monitor, "", &error);  if (dbus_error_is_set (&error))    {      fprintf (stderr, "*** Failed to set filter on monitoring connection: %s\n",               error.message);      dbus_error_free (&error);      return 1;    }  for (i = 0; i < NUM_CONN; i++)     dbus_connection_set_exit_on_disconnect (conn[i], FALSE);  for (i = 0; i < test_data_len; i++)    {      dbus_uint32_t result;      result = 0;      if (test_data[i].command == ADD_CONNECTION)        {          result = dbus_bus_request_name (conn[test_data[i].connection_number],                                           TEST_NAME,                                           test_data[i].flags,                                          &error);          if (dbus_error_is_set (&error))            {              fprintf (stderr, "Error on addition in iteration %i: %s\n", i, error.message);              dbus_error_free (&error);              return 1;            }        }       else if (test_data[i].command == REMOVE_CONNECTION)        {          result = dbus_bus_release_name (conn[test_data[i].connection_number],                                           TEST_NAME,                                           &error);            if (dbus_error_is_set (&error))            {              fprintf (stderr, "*** Failed to remove connection %i in iteration %i: %s\n",                       test_data[i].connection_number,                       i,                       error.message);              dbus_error_free (&error);              return 1;            }        }      else        {          fprintf (stderr, "Command #%i not a valid command!\n", test_data[i].command);          return 1;        }      if (result != test_data[i].expected_result)        {          fprintf (stderr, "Results recived (%i) are not the expected results (%i) in iteration %i\n",                   result,                   test_data[i].expected_result,                   i);          return 1;        }      if (!check_connection (monitor, i, conn))        {          fprintf (stderr, "Failed at iteration %i\n", i);          return 1;        }      if (!check_signals (monitor, i, conn))        {          fprintf (stderr, "Failed at iteration %i\n", i);          return 1;        }    }    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -