File: StopTestServer.cpp

package info (click to toggle)
keyman 18.0.246-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,316 kB
  • sloc: python: 52,784; cpp: 21,289; sh: 7,633; ansic: 4,823; xml: 3,617; perl: 959; makefile: 139; javascript: 138
file content (64 lines) | stat: -rw-r--r-- 1,332 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Call the Exit method on the km-dbus-test-server. Remember to source
// `/tmp/km-test-server.env` prior to running stop-test-server in order
// to run on our non-standard DBus.
#include "config.h"
#include <iostream>
#if DBUS_IMPLEMENTATION == SYSTEMD
#include <systemd/sd-bus.h>
#else
#include <basu/sd-bus.h>
#endif
#include "KmDbusTestServer.h"

using namespace std;

class StopTestServer
{
private:
  sd_bus_error* error = NULL;
  sd_bus_message* msg = NULL;
  sd_bus* bus = NULL;

public:
  StopTestServer();
  ~StopTestServer();

  int Run();
};

StopTestServer::StopTestServer()
{
}

StopTestServer::~StopTestServer()
{
  if (error) { sd_bus_error_free(error); }
  if (msg)   { sd_bus_message_unref(msg); }
  if (bus)   { sd_bus_unref(bus); }
}

int StopTestServer::Run()
{
  int result;

  result = sd_bus_open_user(&bus);
  if (result < 0) {
    std::cerr << "Can't get connection: " << strerror(-result) << std::endl;
    return 1;
  }

  result = sd_bus_call_method(bus, KEYMAN_TESTSVC_BUS_NAME,
    KEYMAN_TESTSVC_OBJECT_PATH, KEYMAN_TESTSVC_INTERFACE_NAME,
    "Exit", error, &msg, "");
  if (result < 0) {
    std::cerr << "Failed to issue method call: " << strerror(-result) << std::endl;
    return 1;
  }
  return 0;
}

int
main(int argc, char* argv[]) {
  StopTestServer stopServer;
  return stopServer.Run();
}