/**
	 * @brief Cancel all addresses.
	 *
	 * @fn zp_net_Engine::RemoveAllAddresses
	 */
	void zp_net_Engine::RemoveAllAddresses()
	{
		//m_mutex_listen.lock();
		foreach (QString id,m_map_netListenThreads.keys())
			emit stopListen(id);
		//m_mutex_listen.unlock();
	}
示例#2
0
void TestRecv(const TCHAR *addr, int port)
{
	HMODULE dllp = LoadLib();
	if (dllp == NULL)
		return;

	_tprintf(_T("listening %s:%d\n"), addr, port);
	startListenAddr(addr, port);
	_tprintf(_T("listen port - OK\n"));
	
	while (1)
	{
		TCHAR *data = pickMessage();
		if (data != 0)
	    {
			if(data[0] != 0)
				_tprintf(_T("%s\n"), data);
			delete[] data;
		}
	}

	_tprintf(_T("stopping listening\n"));
	stopListen();
	_tprintf(_T("stopping listening - OK\n"));

	FreeLibrary(dllp);
}
	/**
	 * @brief Remove a listening socket at special address and port.The socket will be deactivated as soon as possible
	 *
	 * @fn zp_net_Engine::RemoveListeningAddress
	 * @param id Listening-Address name specified by AddListeningAddress()
	 */
	void zp_net_Engine::RemoveListeningAddress(QString  id)
	{
		//m_mutex_listen.lock();
		if (m_map_netListenThreads.find(id)!=m_map_netListenThreads.end())
			emit stopListen(id);
		//m_mutex_listen.unlock();
	}
/*!
    \internal
*/
HbIndicatorPrivate::~HbIndicatorPrivate()
{
    TRACE_ENTRY
    stopListen();
    delete iBuffer;
    if (iAsyncListener) {
        iAsyncListener->Cancel();
        delete iAsyncListener;
    }
    TRACE_EXIT
}
void RabbitMQService::stop ()
{
  stopListen();
  GST_DEBUG ("stop service");

  if (pipeline) {
    pipeline.reset();
  }

  for (auto pid : childs) {
    GST_DEBUG ("Killing child %d", pid);
    kill (pid, SIGINT);
  }
}
示例#6
0
void netGameEnd()
{
	if(!isNetGame){
		if(isListening) stopListen();
		return;
	}
	wr1(C_END);
	undoRequest=0;
	for(int i=0; i<50; i++){
		Sleep(200);
		if(!isNetGame) return;
	}
	EnterCriticalSection(&netLock);
	if(netGameThread){
		wrLog("The other computer is not responding");
		netGameDone();
		TerminateThread(netGameThread, 1);
	}
	LeaveCriticalSection(&netLock);
}
示例#7
0
DWORD WINAPI listenNetGame(void *)
{
	sockaddr_in sa;
	SOCKET sock_c;
	int sl;
	bool b;

	wrLog(lng(866, "Waiting for the other player"));
	for(;;){
		sl= sizeof(sa);
		if((sock_c= accept(sock_l, (sockaddr *)&sa, &sl))==INVALID_SOCKET){
			wrLog(lng(867, "Finished listening for requests from the internet"));
			break;
		}
		EnterCriticalSection(&netLock);
		b=isNetGame;
		isNetGame=true;
		LeaveCriticalSection(&netLock);
		if(b){
			wr1(sock_c, C_BUSY);
			Sleep(1000);
			closesocket(sock_c);
		}
		else{
			sock=sock_c;
			netGameIP=sa;
			initWSA();
			DWORD id;
			ResumeThread(netGameThread=CreateThread(0, 0, netGameLoop, 0, CREATE_SUSPENDED, &id));
			stopListen();
			break;
		}
	}
	WSACleanup();
	isListening=false;
	return 0;
}
void
RabbitMQService::processMessage (RabbitMQMessage &message)
{
  int pid = fork();

  if (pid < 0) {
    throw RabbitMQException ("Proccess cannot be forked");
  } else if (pid == 0) {
    /* Child process */
    childs.clear();
    stopListen();
    getConnection()->noCloseOnRelease();

    pipeline = std::shared_ptr<RabbitMQPipeline> (new RabbitMQPipeline (confFile,
               address,
               port) );
    pipeline->startRequest (message);

  } else {
    /* Parent process */
    childs.push_back (pid);
    message.noRejectOnRelease();
  }
}
 ConnectionManager::~ConnectionManager() {
     
     stopListen();
     closesocket(this->socketDescriptor);
 }
示例#10
0
bool BoardFXO::KhompPvtFXO::doChannelAnswer(CommandRequest &cmd)
{
    DBG(FUNC, PVT_FMT(_target, "(FXO) c"));

    bool ret = true;

    try
    {
        ScopedPvtLock lock(this);

        // is this a collect call?
        bool has_recv_collect_call = _call->_collect_call;

        if(has_recv_collect_call)
            DBG(FUNC, PVT_FMT(target(), "receive a collect call"));

        if(call()->_flags.check(Kflags::DROP_COLLECT))
            DBG(FUNC, PVT_FMT(target(), "flag DROP_COLLECT == true"));

        // do we have to drop collect calls?
        bool has_drop_collect_call = call()->_flags.check(Kflags::DROP_COLLECT);

        // do we have to drop THIS call?
        bool do_drop_call = has_drop_collect_call && has_recv_collect_call;

        if(!do_drop_call)
        {
            command(KHOMP_LOG, CM_CONNECT);
        }

        if(has_drop_collect_call)
        {
            if(has_recv_collect_call)
            {
                usleep(75000);

                DBG(FUNC, PVT_FMT(target(), "disconnecting collect call doChannelAnswer FXO"));
                command(KHOMP_LOG,CM_DISCONNECT);

                // thou shalt not talk anymore!
                stopListen();
                stopStream();
            }
            else
            {
                DBG(FUNC, PVT_FMT(target(), "dropping collect call at doChannelAnswer FXO"));
                command(KHOMP_LOG, CM_DROP_COLLECT_CALL);
            }
        }

        ret = KhompPvt::doChannelAnswer(cmd);

    }
    catch (ScopedLockFailed & err)
    {
        LOG(ERROR, PVT_FMT(_target,"(FXO) r (unable to lock %s!)") % err._msg.c_str() );
        return false;
    }

    DBG(FUNC, PVT_FMT(_target, "(FXO) r"));

    return ret;
}