1
0
mirror of https://github.com/haiwen/ccnet-server.git synced 2025-06-13 23:54:40 +00:00
ccnet-server/net/common/peer-mgr.h
2016-08-19 13:54:34 +08:00

130 lines
4.5 KiB
C

/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
#ifndef CCNET_PEER_MGR_H
#define CCNET_PEER_MGR_H
#include <glib.h>
#include <glib-object.h>
#include "peer.h"
#define CCNET_TYPE_PEER_MANAGER (ccnet_peer_manager_get_type ())
#define CCNET_PEER_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CCNET_TYPE_PEER_MANAGER, CcnetPeerManager))
#define CCNET_IS_PEER_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CCNET_TYPE_PEER_MANAGER))
#define CCNET_PEER_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CCNET_TYPE_PEER_MANAGER, CcnetPeerManagerClass))
#define CCNET_IS_PEER_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CCNET_TYPE_PEER_MANAGER))
#define CCNET_PEER_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CCNET_TYPE_PEER_MANAGER, CcnetPeerManagerClass))
typedef struct _CcnetPeerManager CcnetPeerManager;
typedef struct _CcnetPeerManagerClass CcnetPeerManagerClass;
typedef struct CcnetPeerManagerPriv CcnetPeerManagerPriv;
struct _CcnetPeerManager
{
GObject parent_instance;
CcnetSession *session;
char *peerdb_path;
GHashTable *peer_hash;
GList *local_peers;
guint32 connected_peer;
CcnetPeerManagerPriv *priv;
};
struct _CcnetPeerManagerClass
{
GObjectClass parent_class;
};
GType ccnet_peer_manager_get_type (void);
CcnetPeerManager* ccnet_peer_manager_new (CcnetSession *);
int
ccnet_peer_manager_prepare (CcnetPeerManager *manager);
void ccnet_peer_manager_free (CcnetPeerManager *manager);
void ccnet_peer_manager_start (CcnetPeerManager *manager);
void ccnet_peer_manager_on_exit (CcnetPeerManager *manager);
void ccnet_peer_manager_add_peer (CcnetPeerManager *manager, CcnetPeer *peer);
void ccnet_peer_manager_remove_peer (CcnetPeerManager *manager, CcnetPeer *peer);
CcnetPeer* ccnet_peer_manager_get_peer (CcnetPeerManager *manager,
const char *peer_id);
CcnetPeer* ccnet_peer_manager_get_peer_by_name (CcnetPeerManager *manager,
const char *name);
GList* ccnet_peer_manager_get_peer_list (CcnetPeerManager *manager);
GList* ccnet_peer_manager_get_peers_with_role (CcnetPeerManager *manager,
const char *role);
void ccnet_peer_manager_add_role (CcnetPeerManager *manager,
CcnetPeer *peer,
const char *role);
void ccnet_peer_manager_remove_role (CcnetPeerManager *manager,
CcnetPeer *peer,
const char *role);
void ccnet_peer_manager_add_local_peer (CcnetPeerManager *manager,
CcnetPeer *peer);
void ccnet_peer_manager_remove_local_peer (CcnetPeerManager *manager,
CcnetPeer *peer);
struct _CcnetMessage;
void ccnet_peer_manager_receive_message (CcnetPeerManager *manager,
struct _CcnetMessage *msg);
void
ccnet_peer_manager_notify_peer_role (CcnetPeerManager *manager,
CcnetPeer *peer);
void
ccnet_peer_manager_set_peer_public_addr (CcnetPeerManager *manager,
CcnetPeer *peer,
const char *addr,
int port);
#ifdef CCNET_SERVER
void
ccnet_peer_manager_send_bind_status (CcnetPeerManager *manager,
const char *peer_id,
const char *result);
#endif /* CCNET_SERVER */
/* function of resolving peer */
CcnetPeer *
ccnet_peer_manager_add_resolve_peer (CcnetPeerManager *manager,
const char *ip_or_domain,
uint16_t port);
GList *
ccnet_peer_manager_get_resolve_peers (CcnetPeerManager *manager);
void
ccnet_peer_manager_redirect_peer (CcnetPeerManager *manager,
CcnetPeer *peer,
CcnetPeer *to);
void
ccnet_peer_manager_send_ready_message (CcnetPeerManager *manager, CcnetPeer *peer);
void
ccnet_peer_manager_on_peer_session_key_sent (CcnetPeerManager *manager,
CcnetPeer *peer);
void
ccnet_peer_manager_on_peer_session_key_received (CcnetPeerManager *manager,
CcnetPeer *peer);
#endif