void wi_test_recursive_lock_creation(void) {
#ifdef WI_PTHREADS
    wi_recursive_lock_t     *lock;
    
    lock = wi_autorelease(wi_recursive_lock_init(wi_recursive_lock_alloc()));
    
    WI_TEST_ASSERT_NOT_NULL(lock, "");
#endif
}
Exemplo n.º 2
0
void wi_runtime_initialize(void) {
    char		*env;

    _wi_runtime_retain_count_lock = wi_recursive_lock_init(wi_recursive_lock_alloc());

    env = getenv("wi_zombie_enabled");

    if(env)
        wi_zombie_enabled = (strcmp(env, "0") != 0);
}
void wi_test_recursive_lock_runtime_functions(void) {
#ifdef WI_PTHREADS
    wi_recursive_lock_t     *lock;
    
    lock = wi_autorelease(wi_recursive_lock_init(wi_recursive_lock_alloc()));
    
    WI_TEST_ASSERT_EQUALS(wi_runtime_id(lock), wi_recursive_lock_runtime_id(), "");
    
    WI_TEST_ASSERT_NOT_EQUALS(wi_string_index_of_string(wi_description(lock), WI_STR("wi_recursive_lock_t"), 0), WI_NOT_FOUND, "");
#endif
}
Exemplo n.º 4
0
static wd_user_t * wd_user_init_with_socket(wd_user_t *user, wi_socket_t *socket) {
	wi_address_t	*address;

	user->id						= wd_user_next_id();
	user->socket					= wi_retain(socket);
	user->state						= WD_USER_CONNECTED;
	user->login_time				= wi_date_init(wi_date_alloc());
	user->idle_time					= wi_date_init(wi_date_alloc());
	
	address							= wi_socket_address(socket);
	user->ip						= wi_retain(wi_address_string(address));
	user->host						= wi_retain(wi_address_hostname(address));
	
	user->user_lock					= wi_recursive_lock_init(wi_recursive_lock_alloc());
	user->socket_lock				= wi_recursive_lock_init(wi_recursive_lock_alloc());
	
	user->subscribed_paths			= wi_set_init_with_capacity(wi_mutable_set_alloc(), 0, true);
	user->subscribed_virtualpaths	= wi_dictionary_init(wi_mutable_dictionary_alloc());
	
	return user;
}
Exemplo n.º 5
0
static wd_user_t * wd_user_init_with_socket(wd_user_t *user, wi_socket_t *socket) {
	wi_address_t	*address;

	user->uid				= wd_user_next_uid();
	user->socket			= wi_retain(socket);
	user->state				= WD_USER_CONNECTED;
	user->login_time		= wi_time_interval();
	user->idle_time			= user->login_time;
	
	address					= wi_socket_address(socket);
	user->ip				= wi_retain(wi_address_string(address));
	user->host				= wi_retain(wi_address_hostname(address));
	
	user->user_lock			= wi_recursive_lock_init(wi_recursive_lock_alloc());
	user->socket_lock		= wi_lock_init(wi_lock_alloc());
	
	user->transfers_queue	= wi_array_init(wi_array_alloc());

	return user;
}
Exemplo n.º 6
0
wi_sqlite3_database_t * wi_sqlite3_open_database_with_path(wi_string_t *path) {
	wi_sqlite3_database_t		*database;
	
	database			= wi_autorelease(wi_runtime_create_instance(_wi_sqlite3_database_runtime_id, sizeof(wi_sqlite3_database_t)));
	database->lock		= wi_recursive_lock_init(wi_recursive_lock_alloc());
	
	if(sqlite3_open(wi_string_cstring(path), &database->database) == SQLITE_OK) {
		sqlite3_busy_handler(database->database, _wi_sqlite3_busy_handler, NULL);
	} else {
		if(database->database) {
			wi_error_set_sqlite3_error(database->database);
			
			sqlite3_close(database->database);
			database->database = NULL;
		} else {
			wi_error_set_errno(ENOMEM);
		}
		
		database = NULL;
	}
	
	return database;
}
void wi_test_recursive_lock_locking(void) {
#ifdef WI_PTHREADS
    wi_recursive_lock_t     *lock;
    wi_boolean_t            result;
    
    lock = wi_autorelease(wi_recursive_lock_init(wi_recursive_lock_alloc()));
    
    wi_recursive_lock_lock(lock);
    wi_recursive_lock_lock(lock);
    wi_recursive_lock_unlock(lock);
    wi_recursive_lock_unlock(lock);
    
    result = wi_recursive_lock_try_lock(lock);
    
    WI_TEST_ASSERT_TRUE(result, "");
    
    result = wi_recursive_lock_try_lock(lock);
    
    WI_TEST_ASSERT_TRUE(result, "");
    
    wi_recursive_lock_unlock(lock);
    wi_recursive_lock_unlock(lock);
#endif
}
Exemplo n.º 8
0
void wi_log_initialize(void) {
	_wi_log_lock = wi_recursive_lock_init(wi_recursive_lock_alloc());
}
Exemplo n.º 9
0
static wd_chat_t * wd_chat_init(wd_chat_t *chat) {
	chat->users		= wi_array_init(wi_mutable_array_alloc());
	chat->lock		= wi_recursive_lock_init(wi_recursive_lock_alloc());
	
	return chat;
}