summaryrefslogtreecommitdiff
path: root/tests/giomm_asyncresult_sourceobject/main.cc
blob: 12136fa87c77303e94b34495b9a85c601af4e964 (plain)
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
#include <giomm.h>
#include <iostream>

void on_read_async(const Glib::RefPtr<Gio::AsyncResult>& result)
{
  if(!result)
  {
    std::cerr << G_STRFUNC << ": result is empty." << std::endl;
    exit(EXIT_FAILURE);
  }

  if(!g_async_result_get_source_object(result->gobj()))
  {
    std::cerr << G_STRFUNC << ": g_async_result_get_source_object() failed." << std::endl;
    exit(EXIT_FAILURE);
  }
  
  if(!result->get_source_object_base())
  {
    std::cerr << G_STRFUNC << ": result->get_source_object_base() failed." << std::endl;
    exit(EXIT_FAILURE);
  }
 
  exit(EXIT_SUCCESS);
}

int main(int, char**)
{
  Glib::init();
  Gio::init();

  auto mainloop = Glib::MainLoop::create();

  auto file = Gio::File::create_for_path("/etc/passwd");
  file->read_async(&on_read_async);

  mainloop->run();
  return EXIT_SUCCESS;
}