void connect_done(ClientConnection* connection); //void auth_done(ClientConnection* connection); void project_list_retrieved(ProjectList& projects); void project_added(Project* p); void project_removed(const Project* p); void project_updated(Project* p); ClientConnection* c = NULL; int main() { Main svc; svc.connect_async("localhost", sigc::ptr_fun(&connect_done)); sleep(10); return 0; } void connect_done(ClientConnection* connection) { c = connection; connection->get_projects_async(sigc::ptr_fun(&project_list_retrieved)); } void project_list_retrieved(ProjectList& projects) { for (ProjectList::const_iterator it = projects.begin(); it != projects.end(); ++it) { Project* p = *it; cout << p->master_url() << " " << p->name() << endl; } projects.project_added_signal.connect(sigc::ptr_fun(&project_added)); projects.project_updated_signal.connect(sigc::ptr_fun(&project_updated)); projects.project_removed_signal.connect(sigc::ptr_fun(&project_removed)); projects.periodic_update(5); } void project_added(const Project* p) { cout << formatter("New project on list: %1 (%2)").arg(p->name()).arg(p->master_url()); cout << endl; } void project_removed(const Project* p) { cout << formatter("Project %1 detached").arg(p->name()) << endl; } void project_updated(Project* p) { cout << formatter("Project %1 changed some status").arg(p->name()) << endl; }