Example #1
0
static int reconnect_pulse (void *vmanager)
{
    CcnetConnManager *manager = vmanager;
    /* int conn = 0; */
    GList  *ptr;

#ifndef CCNET_SERVER
    GList *peers = ccnet_peer_manager_get_peers_with_role (
        manager->session->peer_mgr, "MyRelay");
    for (ptr = peers; ptr; ptr = ptr->next) {
        CcnetPeer *peer = ptr->data;
        if (peer->redirected) {
            if (peer->num_fails > 2)
                ccnet_peer_unset_redirect (peer);
        }
        reconnect_peer (manager, peer);
        g_object_unref (peer);
    }
    g_list_free (peers);
#endif

    for (ptr = manager->conn_list; ptr; ptr = ptr->next) {
        CcnetPeer *peer = ptr->data;
        if (peer->redirected) {
            if (peer->num_fails > 2)
                ccnet_peer_unset_redirect (peer);
        }
        reconnect_peer (manager, peer);
    }

    /*
    peers = ccnet_peer_manager_get_peers_with_role (
        manager->session->peer_mgr, "MyPeer");
    for (ptr = peers; ptr; ptr = ptr->next) {
        CcnetPeer *peer = ptr->data;

        if (peer->is_self)
            continue;

        if (!peer->is_relay && !ccnet_peer_is_mypeer(peer))
            continue;

        if (ccnet_conn_manager_connect_peer (manager, peer) == FALSE)
            continue;

        if (++conn >= MAX_RECONNECTIONS_PER_PULSE)
            break;
    }
    g_list_free (peers);
    */

    /* TODO: teer down connections */
    
    return TRUE;
}
Example #2
0
GList *
ccnet_rpc_get_peers_by_role(const char *role, GError **error)
{
    CcnetPeerManager *peer_mgr = session->peer_mgr;
    return ccnet_peer_manager_get_peers_with_role (peer_mgr, role);
}