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
struct settings_t* settings_create(const char* name, const char* password) {
    
    struct settings_t* s = (struct settings_t*)malloc(sizeof(struct settings_t));
    bzero(s, sizeof(struct settings_t));
    
    settings_set_name(s, name);
    settings_set_password(s, password);
    
    return s;
    
}