Example #1
0
struct raop_server_settings_t raop_server_get_settings(struct raop_server_t* rs) {
    
    return (struct raop_server_settings_t){
        settings_get_name(rs->settings),
        settings_get_password(rs->settings),
        settings_get_ignore_source_volume(rs->settings)
    };
    
}

void raop_server_set_settings(struct raop_server_t* rs, struct raop_server_settings_t settings) {
    
    const char* old_name = settings_get_name(rs->settings);
    char* old_name_c = (char*)malloc(strlen(old_name) + 1);
    strcpy(old_name_c, old_name);
    
    settings_set_name(rs->settings, settings.name);
    settings_set_password(rs->settings, settings.password);
    settings_set_ignore_source_volume(rs->settings, settings.ignore_source_volume);
    
    const char* new_name = settings_get_name(rs->settings);
    
    if (strcmp(old_name_c, new_name) != 0) {
        zeroconf_raop_ad_destroy(rs->zeroconf_ad);
        rs->zeroconf_ad = zeroconf_raop_ad_create(sockaddr_get_port(web_server_get_local_end_point(rs->server, sockaddr_type_inet_4)), new_name);
    }
    
    free(old_name_c);
    
}

void raop_server_stop(struct raop_server_t* rs) {
    
    mutex_lock(rs->mutex);
    
    if (rs->is_running) {
        
        rs->is_running = false;
        
        while (rs->sessions_count > 0) {
            mutex_unlock(rs->mutex);
            raop_session_destroy(rs->sessions[0]);
            mutex_lock(rs->mutex);
        }
        
        free(rs->sessions);
        
        rs->sessions = NULL;
        rs->sessions_count = 0;
        
        zeroconf_raop_ad_destroy(rs->zeroconf_ad);
        
        web_server_stop(rs->server);
        
    }
    
    mutex_unlock(rs->mutex);
    
}
Example #2
0
bool raop_server_start(struct raop_server_t* rs, uint16_t port) {
    
    if (!rs->is_running) {
        
        bool ret = web_server_start(rs->server, port);
        
        if (ret) {
            rs->is_running = true;
            rs->zeroconf_ad = zeroconf_raop_ad_create(port, settings_get_name(rs->settings));
            log_message(LOG_INFO, "Server started at port %d", port);
        } else
            log_message(LOG_INFO, "Unable to start server at port %d", port);
        
        return ret;
        
    }
    
    return false;
    
}