Пример #1
0
ClientMessageBus* ClientProtocolThread::initialize()
{
        start();
        qxt_d().waiter.wait(&_mutex);
        _protocol->moveToThread(_bus->thread());
		//Connect all the signals and slots that make the communication work....

		//disconnect signal
	connect(_protocol, SIGNAL(disconnected()), _bus, SIGNAL(disconnected()), Qt::DirectConnection);

		//server calls callback on client
	connect(_protocol, SIGNAL(sendCallback(Message)), _bus, SIGNAL(sendCallback(Message)), Qt::DirectConnection);

		//server sends return to client
	connect(_protocol, SIGNAL(returnReceived(Message)), &_bus->qxt_d(), SLOT(returnReceived(Message)), Qt::DirectConnection);

		//server sends event to client
	connect(_protocol, SIGNAL(sendEvent(Message)), _bus, SIGNAL(sendEvent(Message)), Qt::DirectConnection);

		//client sends return to server
	connect(_bus, SIGNAL(callbackReturn(Message)), _protocol, SLOT(callbackReturn(Message)), Qt::DirectConnection);

		//client calls function on server (thread boundary)
	connect(_bus, SIGNAL(sendFunction(Message)), _protocol, SLOT(sendFunction(Message)), Qt::QueuedConnection);

	qxt_d().waiter.wakeAll();
	_mutex.unlock();
	_initMutex.unlock();
	return _bus;
}
void LinksetsResponder::handleTerrainLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL)
{
	mTerrainMessagingState = kReceivedError;
	if (mObjectMessagingState != kWaiting)
	{
		sendCallback();
	}
}
void LinksetsResponder::handleObjectLinksetsError(U32 pStatus, const std::string &pReason, const std::string &pURL)
{
	llwarns << "error with request to URL '" << pURL << "' because " << pReason << " (statusCode:" << pStatus << ")" << llendl;
	mObjectMessagingState = kReceivedError;
	if (mTerrainMessagingState != kWaiting)
	{
		sendCallback();
	}
}
void LinksetsResponder::handleTerrainLinksetsResult(const LLSD &pContent)
{
	mTerrainLinksetPtr = LLPathfindingObjectPtr(new LLPathfindingLinkset(pContent));

	mTerrainMessagingState = kReceivedGood;
	if (mObjectMessagingState != kWaiting)
	{
		sendCallback();
	}
}
Пример #5
0
void
handleStunRespSucsessfull(struct hiutResult* result,
                          int                ttl,
                          struct sockaddr*   srcAddr,
                          struct sockaddr*   rflxAddr,
                          int                rtt,
                          int                retransmits)
{
  /* char addr[SOCKADDR_MAX_STRLEN]; */
  (void) rflxAddr;
  if (ttl == MAX_TTL)
  {
    /* Part of far end alive test */
    result->remoteAlive = true;
    result->currentTTL  = 1;

    stunlib_createId(&result->currStunMsgId);

    StunClient_startSTUNTrace( (STUN_CLIENT_DATA*)result->stunCtx,
                               result,
                               (struct sockaddr*)&result->remoteAddr,
                               (struct sockaddr*)&result->localAddr,
                               false,
                               result->username,
                               result->password,
                               result->currentTTL,
                               result->currStunMsgId,
                               result->sockfd,
                               result->sendFunc,
                               StunStatusCallBack,
                               NULL );
    return;
  }

  bool done = result->num_traces < result->max_recuring ? false : true;
  if ( sockaddr_sameAddr( (struct sockaddr*)&result->remoteAddr,srcAddr ) )
  {
    if (result->path_max_ttl >= ttl)
    {
      result->path_max_ttl = ttl;
      sendCallback(result,
                   srcAddr,
                   ttl,
                   rtt,
                   retransmits,
                   true,
                   done);

      resartIfNotDone(result);
      return;
    }
  }
}
Пример #6
0
// Called for each message this module (program) receives.
int messageHandler(char * caller, char * message_name, long msg_id, char * arguments)
{
//	printf("World module handler: %ul %s  from: %s v3 \n\n", msg_id, arguments, caller);
	
	//sleep(5);

	//char * msg = " asd       asdasd asd as dasd "; 
	char msg[4028];
	sprintf(msg, "message: %s %lu \n", arguments, msg_id);
	//strcat(msg, arguments);

	sendCallback(caller, msg_id, msg); 
	
	return 1;
}
Пример #7
0
void
handleStunRespIcmp(struct hiutResult* result,
                   int                ICMPtype,
                   int                ttl,
                   struct sockaddr*   srcAddr,
                   int                rtt,
                   int                retransmits)
{
  if ( (ttl == MAX_TTL) &&
       isDstUnreachable(ICMPtype, srcAddr->sa_family) )
  {
    /* Part of far end alive test */
    result->remoteAlive = true;
    result->currentTTL  = 1;

    stunlib_createId(&result->currStunMsgId);

    StunClient_startSTUNTrace( (STUN_CLIENT_DATA*)result->stunCtx,
                               result,
                               (struct sockaddr*)&result->remoteAddr,
                               (struct sockaddr*)&result->localAddr,
                               false,
                               result->username,
                               result->password,
                               result->currentTTL,
                               result->currStunMsgId,
                               result->sockfd,
                               result->sendFunc,
                               StunStatusCallBack,
                               NULL );
    return;
  }
  if ( isTimeExceeded(ICMPtype, srcAddr->sa_family) )
  {
    if (result->currentTTL < result->user_max_ttl - 1)
    {
      result->currentTTL++;
      while (result->pathElement[result->currentTTL].inactive &&
             result->currentTTL < result->path_max_ttl)
      {
        result->currentTTL++;
      }
      if (result->currentTTL <= result->path_max_ttl)
      {
        sendCallback(result,
                     srcAddr,
                     ttl,
                     rtt,
                     retransmits,
                     false,
                     false);

        stunlib_createId(&result->currStunMsgId);

        StunClient_startSTUNTrace( (STUN_CLIENT_DATA*)result->stunCtx,
                                   result,
                                   (struct sockaddr*)&result->remoteAddr,
                                   (struct sockaddr*)&result->localAddr,
                                   false,
                                   result->username,
                                   result->password,
                                   result->currentTTL,
                                   result->currStunMsgId,
                                   result->sockfd,
                                   result->sendFunc,
                                   StunStatusCallBack,
                                   NULL );
        return;
      }
    }
    bool done = result->num_traces < result->max_recuring ? false : true;
    sendCallback(result,
                 srcAddr,
                 ttl,
                 rtt,
                 retransmits,
                 true,
                 done);
    resartIfNotDone(result);

  }
  else if ( isDstUnreachable(ICMPtype,srcAddr->sa_family) )
  {
    bool done = result->num_traces < result->max_recuring ? false : true;

    if (result->path_max_ttl >= ttl)
    {
      result->path_max_ttl = ttl;

      sendCallback(result,
                   srcAddr,
                   ttl,
                   rtt,
                   retransmits,
                   true,
                   done);

      resartIfNotDone(result);
    }
  }
}
Пример #8
0
void
handleStunNoAnswer(struct hiutResult* result)
{
  result->pathElement[result->currentTTL].inactive = true;
  if (result->currentTTL == MAX_TTL)
  {
    /* Part of far end alive test */
    result->remoteAlive = false;
    result->currentTTL  = 1;

    stunlib_createId(&result->currStunMsgId);

    StunClient_startSTUNTrace( (STUN_CLIENT_DATA*)result->stunCtx,
                               result,
                               (struct sockaddr*)&result->remoteAddr,
                               (struct sockaddr*)&result->localAddr,
                               false,
                               result->username,
                               result->password,
                               result->currentTTL,
                               result->currStunMsgId,
                               result->sockfd,
                               result->sendFunc,
                               StunStatusCallBack,
                               NULL );
    return;
  }
  /* Hov many no answer in a row? */
  if ( (numConcecutiveInactiveNodes(result) >= MAX_CONCECUTIVE_INACTIVE) &&
       !result->remoteAlive )
  {
    bool done = result->num_traces < result->max_recuring ? false : true;
    result->path_max_ttl = result->currentTTL - MAX_CONCECUTIVE_INACTIVE;
    sendCallback(result,
                 NULL,
                 result->currentTTL,
                 0,
                 0,
                 true,
                 done);
    resartIfNotDone(result);
    return;
  }

  sendCallback(result,
               NULL,
               result->currentTTL,
               0,
               0,
               false,
               false);

  if (result->currentTTL < result->user_max_ttl)
  {
    while (result->pathElement[result->currentTTL].inactive &&
           result->currentTTL < result->path_max_ttl)
    {
      result->currentTTL++;
    }
    stunlib_createId(&result->currStunMsgId);

    StunClient_startSTUNTrace( (STUN_CLIENT_DATA*)result->stunCtx,
                               result,
                               (struct sockaddr*)&result->remoteAddr,
                               (struct sockaddr*)&result->localAddr,
                               false,
                               result->username,
                               result->password,
                               result->currentTTL,
                               result->currStunMsgId,
                               result->sockfd,
                               result->sendFunc,
                               StunStatusCallBack,
                               NULL );
  }
}
Пример #9
0
 void CheckBox::setChecked(bool newVal) {
     checked = newVal;
     invalidate();
     sendCallback(STATECHANGED);
 }