bool SeafileRpcClient::getCommitDiff(const QString& repo_id, const QString& commit_id, const QString& previous_commit_id, CommitDetails *details) { QMutexLocker locker(&threaded_rpc_mutex_); GError *error = NULL; GList *objlist = searpc_client_call__objlist( seafile_threaded_rpc_client_, "seafile_diff", SEAFILE_TYPE_DIFF_ENTRY, &error, 4, "string", toCStr(repo_id), "string", toCStr(commit_id), "string", toCStr(previous_commit_id), "int", 1); if (error) { qWarning("failed to get changes in commit %.7s of repo %.7s", toCStr(commit_id), toCStr(repo_id)); g_error_free(error); return false; } *details = CommitDetails::fromObjList(objlist); g_list_foreach (objlist, (GFunc)g_object_unref, NULL); g_list_free (objlist); return true; }
int SeafileRpcClient::getCloneTasks(std::vector<CloneTask> *tasks) { GError *error = NULL; GList *objlist = searpc_client_call__objlist( seafile_rpc_client_, "seafile_get_clone_tasks", SEAFILE_TYPE_CLONE_TASK, &error, 0); if (error) { g_error_free(error); return -1; } for (GList *ptr = objlist; ptr; ptr = ptr->next) { CloneTask task = CloneTask::fromGObject((GObject *)ptr->data); if (task.state == "fetch") { getTransferDetail(&task); } else if (task.state == "checkout") { getCheckOutDetail(&task); } else if (task.state == "error") { if (task.error_str == "fetch") { getTransferDetail(&task); } } task.translateStateInfo(); tasks->push_back(task); } g_list_foreach (objlist, (GFunc)g_object_unref, NULL); g_list_free (objlist); return 0; }
GList * ccnet_get_group_members (SearpcClient *client, int group_id) { return searpc_client_call__objlist ( client, "get_group_members", CCNET_TYPE_GROUP_USER, NULL, 1, "int", group_id); }
GList * seafile_get_repo_list (SearpcClient *client, int offset, int limit, GError **error) { return searpc_client_call__objlist ( client, "seafile_get_repo_list", SEAFILE_TYPE_REPO, error, 2, "int", offset, "int", limit); }
GList * ccnet_get_groups_by_user (SearpcClient *client, const char *user) { if (!user) return NULL; return searpc_client_call__objlist ( client, "get_groups", CCNET_TYPE_GROUP, NULL, 1, "string", user); }
GList * ccnet_get_peers_by_role (SearpcClient *client, const char *role) { if (!role) return NULL; return searpc_client_call__objlist ( client, "get_peers_by_role", CCNET_TYPE_PEER, NULL, 1, "string", role); }
void test_searpc__objlist_call (void) { GList *result, *ptr; GError *error = NULL; result = searpc_client_call__objlist (client, "get_maman_bar_list", MAMAN_TYPE_BAR, &error, 2, "string", "kitty", "int", 10); cl_assert (error == NULL); for (ptr = result; ptr; ptr = ptr->next) g_object_unref (ptr->data); g_list_free (result); result = searpc_client_call__objlist (client, "get_maman_bar_list", MAMAN_TYPE_BAR, &error, 2, "string", "kitty", "int", 0); cl_assert (error == NULL); for (ptr = result; ptr; ptr = ptr->next) g_object_unref (ptr->data); g_list_free (result); }
void rpc_glist_test(int sockfd, struct sockaddr_in *servaddr, SearpcClient *rpc_client, GError *error) { int count = 4, len = 11; char str[16] = "A rpc test."; GList *ans=searpc_client_call__objlist(rpc_client, "searpc_objlisttest", TEST_OBJECT_TYPE, &error, 3, "int", count, "int", len, "string", str); json_t *object=json_object(); searpc_set_objlist_to_ret_object (object,ans); if (error != NULL) { fprintf(stderr, "error: %s\n", error->message); exit(-1); } else printf("%s\n", json_dumps (object, JSON_INDENT(2))); json_t *array = json_object_get (object, "ret"); if (json_array_size(array) != count) { printf("Glisttest fail.\n"); return; } int i; for (i = 0; i != count; ++i) { json_t *member = json_array_get(array, i); if (json_integer_value (json_object_get (member, "len"))!=len) { printf("Glisttest fail.\n"); return; } if (strcmp (json_string_value (json_object_get (member, "str")), str)) { printf("Glisttest fail.\n"); return; } if ((json_is_false (json_object_get (member, "equal"))) == (strlen(str)==len)) { printf("Glisttest fail.\n"); return; } } json_decref(object); printf("Glisttest succeed.\n"); close(sockfd); }
int SeafileRpcClient::getServers(GList** servers) { GError *error = NULL; GList *objlist = searpc_client_call__objlist( ccnet_rpc_client_, "get_peers_by_role", CCNET_TYPE_PEER, &error, 1, "string", "MyRelay"); if (error) { return -1; } *servers = objlist; return 0; }
int SeafileRpcClient::getCloneTasksCount(int *count) { GError *error = NULL; GList *objlist = searpc_client_call__objlist( seafile_rpc_client_, "seafile_get_clone_tasks", SEAFILE_TYPE_CLONE_TASK, &error, 0); if (error) { return -1; } if (count) { *count = g_list_length(objlist); } g_list_foreach (objlist, (GFunc)g_object_unref, NULL); g_list_free (objlist); return 0; }
static GList *get_users_from_ccnet (SearpcClient *client, const char *source) { return searpc_client_call__objlist (client, "get_emailusers", CCNET_TYPE_EMAIL_USER, NULL, 3, "string", source, "int", -1, "int", -1); }