/usr/include/ccnet/ccnet-client.h is in libccnet-dev 6.0.2-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
#ifndef CCNET_CLIENT_SESSION_H
#define CCNET_CLIENT_SESSION_H
#define SESSION_ID_LENGTH 40
#include <glib.h>
#include <glib-object.h>
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
#include <event2/util.h>
#else
#include <evutil.h>
#endif
#include "ccnet-session-base.h"
#define CCNET_TYPE_CLIENT (ccnet_client_get_type ())
#define CCNET_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CCNET_TYPE_CLIENT, CcnetClient))
#define CCNET_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CCNET_TYPE_CLIENT))
#define CCNET_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CCNET_TYPE_CLIENT, CcnetClientClass))
#define CCNET_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CCNET_TYPE_CLIENT))
#define CCNET_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CCNET_TYPE_CLIENT, CcnetClientClass))
typedef struct _CcnetClient CcnetClient;
typedef struct _CcnetClientClass CcnetClientClass;
struct _CcnetPeer;
struct _CcnetUser;
struct _CcnetProcessor;
struct CcnetPacketIO;
#include <ccnet/message.h>
#include <ccnet/processor.h>
#define SESSION_CONFIG_FILENAME "ccnet.conf"
#define CCNET_USER_ID_START 1000
/**
* CcnetClientMode:
* @CCNET_CLIENT_SYNC: Synchronous mode
* @CCNET_CLIENT_ASYNC: Asynchronous mode
*
* #CcnetClient can run in synchronous or asynchronous mode. In
* synchronous mode, every function call to #CcnetClient is blocked
* until the ccnet daemon returns. In asynchronous mode, function
* calls are not blocked, and the user should use the processor
* mechanism to interact with the daemon.
*
**/
typedef enum {
CCNET_CLIENT_SYNC,
CCNET_CLIENT_ASYNC
} CcnetClientMode;
struct CcnetResponse {
char *code;
char *code_msg;
char *content;
int clen; /* content length */
};
typedef struct CcnetClientPriv CcnetClientPriv;
/**
* CcnetClient:
* @id: The ccnet ID in plain text, including the ending '\0'
* @id_sha1: The ccnet ID in binary.
* @id_quark: The ccnet ID in GQuark.
* @name: Ccnet name
* @mode: See #CcnetClientMode
*/
struct _CcnetClient
{
CcnetSessionBase base;
/*< public >*/
int mode;
char *central_config_dir;
char *config_dir;
char *config_file;
int daemon_port;
char *un_path;
int connected : 1;
struct _CcnetProcFactory *proc_factory;
struct _CcnetGroupManager *group_mgr;
/* For processor threads. */
struct _CcnetJobManager *job_mgr;
struct CcnetResponse response;
/*< private >*/
evutil_socket_t connfd;
uint32_t req_id; /* the current request id */
struct CcnetPacketIO *io;
GHashTable *processors;
GList *rpc_pool;
CcnetClientPriv *priv;
};
struct _CcnetClientClass
{
CcnetSessionBaseClass parent_class;
};
GType ccnet_client_get_type (void);
CcnetClient* ccnet_client_new (void);
int ccnet_client_load_confdir (CcnetClient *client, const char *central_config_dir, const char *confdir);
/*
void ccnet_client_add_alias (CcnetClient *client, const char *alias_str);
void ccnet_client_del_alias (CcnetClient *client, const char *alias_str);
gboolean ccnet_client_has_alias (CcnetClient *client, const char *alias_id);
*/
int ccnet_client_connect_daemon (CcnetClient *client, CcnetClientMode mode);
int ccnet_client_disconnect_daemon (CcnetClient *client);
uint32_t ccnet_client_get_request_id (CcnetClient *client);
/* async mode */
void ccnet_client_run_synchronizer (CcnetClient *client);
void ccnet_client_add_processor (CcnetClient *client,
CcnetProcessor *processor);
void ccnet_client_remove_processor (CcnetClient *client,
CcnetProcessor *processor);
CcnetProcessor *
ccnet_client_get_processor (CcnetClient *client, int id);
int ccnet_client_read_input (CcnetClient *client);
/* sync mode */
int ccnet_client_read_response (CcnetClient *client);
void ccnet_client_send_request (CcnetClient *client,
int req_id, const char *req);
void ccnet_client_send_update (CcnetClient *client, int req_id,
const char *code, const char *reason,
const char *content, int clen);
void ccnet_client_send_response (CcnetClient *client, int req_id,
const char *code, const char *reason,
const char *content, int clen);
const char *ccnet_client_send_cmd (CcnetClient *client,
const char *cmd, GError **error);
int ccnet_client_send_message (CcnetClient *client,
CcnetMessage *message);
/* For a sync client to receive a given type of message,
1. call ccnet_client_prepare_recv_message() with the message type you want to receive
2. call ccnet_client_receive_message() repeatly
*/
int
ccnet_client_prepare_recv_message (CcnetClient *client,
const char *app);
CcnetMessage *
ccnet_client_receive_message (CcnetClient *client);
uint32_t
ccnet_client_get_rpc_request_id (CcnetClient *client, const char *peer_id,
const char *service);
void
ccnet_client_clean_rpc_request (CcnetClient *client, uint32_t req_id);
/* void ccnet_client_send_event (CcnetClient *client, GObject *event); */
#endif
|