Exemple #1
0
struct dacp_client_t* dacp_client_create(endpoint_p endpoint, const char* identifier, const char* active_remote) {
    
    struct dacp_client_t* dc = (struct dacp_client_t*)object_create(sizeof(struct dacp_client_t), _dacp_client_destroy);
    
    dc->endpoint = endpoint_copy(endpoint);
    endpoint_set_port(dc->endpoint, 3689);
    
    dc->identifier = malloc(strlen(identifier) + 1);
    strcpy(dc->identifier, identifier);
    dc->active_remove = malloc(strlen(active_remote) + 1);
    strcpy(dc->active_remove, active_remote);
        
    dc->dacp_discover = zeroconf_dacp_discover_create();
    zeroconf_dacp_discover_set_callback(dc->dacp_discover, _dacp_client_zeroconf_resolved_callback, dc);
    
    dc->playback_state = dacp_client_playback_state_stopped;
    
    return dc;
    
}
Exemple #2
0
void
server_mc_read_cb(struct bufferevent *bev, void *ctx)
{
    struct server *s = (struct server *)ctx;
    struct evbuffer *in = bufferevent_get_input(bev);
    struct mc       *mc = v_mc_find_if(s->peers, (void *)find_bev, bev);
    size_t len;
    char *line;

    /* Do nothing: this peer seems to exists, but we didn't approve it yet*/
    if (mc == v_mc_end(s->peers))
        return ;

    while ((line = evbuffer_readln(in, &len, EVBUFFER_EOL_CRLF)) != NULL)
    {
        struct vector_cptr *splited;
        char *cmd_name;

        log_debug("[META] [%s]", line);
        splited = split(line);
        cmd_name = v_cptr_at(splited, 0);
        if (strncmp(cmd_name, "udp_port", strlen(cmd_name)) == 0)
        {
            char            *s_udp_port = v_cptr_at(splited, 1);
            unsigned short  port = atoi(s_udp_port);
            struct endpoint udp_remote_endpoint;

            endpoint_init(&udp_remote_endpoint,
                          mc->p.address,
                          mc->p.len);

            endpoint_set_port(&udp_remote_endpoint, port);

            udp_register_new_peer(s->udp,
                                  &udp_remote_endpoint,
                                  DTLS_DISABLE);
        }
        v_cptr_delete(splited);
        free(line);
    }
}