int tnet_transport_stop(tnet_transport_t *transport)
{
    int ret;
    transport_context_t *context;

    if(!transport) {
        return -1;
    }

    context = transport->context;

    if((ret = tsk_runnable_stop(TSK_RUNNABLE(transport)))) {
        return ret;
    }

    if(context) {
        static char c = '\0';

        // signal
        tsk_safeobj_lock(context); // =>MUST
        if(tnet_transport_have_socket(transport, context->pipeR)) { // to avoid SIGPIPE=> check that there is at least one reader
            write(context->pipeW, &c, 1);
        }
        tsk_safeobj_unlock(context);
    }

    if(transport->mainThreadId[0]) {
        return tsk_thread_join(transport->mainThreadId);
    }
    else {
        /* already soppped */
        return 0;
    }
}
int tnet_transport_stop(tnet_transport_t *transport)
{	
	int ret;
	transport_context_t *context;
    
	if (!transport) {
		return -1;
	}
	
	context = transport->context;
	
	if ((ret = tsk_runnable_stop(TSK_RUNNABLE(transport)))) {
		return ret;
	}
	
	if(transport->mainThreadId[0]){
		if (context && context->cf_run_loop) {
			// Signal the run-loop
			CFRunLoopWakeUp(context->cf_run_loop);
		}
		return tsk_thread_join(transport->mainThreadId);
	}
	else { // already stopped
		return 0;
	}
}
Esempio n. 3
0
static tsk_object_t* tdav_runnable_video_dtor(tsk_object_t * self)
{ 
	tdav_runnable_video_t *runnable = self;
	if(runnable){
		tsk_runnable_stop(TSK_RUNNABLE(runnable));
	}

	return self;
}
Esempio n. 4
0
int tdav_runnable_video_stop(tdav_runnable_video_t* self)
{
	if(!self){
		TSK_DEBUG_ERROR("Invalid parameter");
		return -1;
	}

	return tsk_runnable_stop(TSK_RUNNABLE(self));
}
/*=== stop all threads */
int tnet_transport_stop(tnet_transport_t *transport)
{
    int ret;

    if ((ret = tsk_runnable_stop(TSK_RUNNABLE(transport)))) {
        return ret;
    }

    if (transport->mainThreadId[0]) {
        WSASetEvent(((transport_context_t*)(transport->context))->events[0]);
        return tsk_thread_join(transport->mainThreadId);
    }
    else {
        /* already stoppped */
        return 0;
    }
}