コード例 #1
0
IOReturn
SATSMARTUserClient::message ( UInt32 type, IOService * provider, void * arg )
{
    IOReturn status = kIOReturnSuccess;
    
    DEBUG_LOG("%s[%p]::%s type = %u, provider = %p\n", getClassName(), this, __FUNCTION__, (unsigned int)type, provider );
    
    switch ( type )
    {
            
        case kIOMessageServiceIsRequestingClose:
            break;
            
        case kIOMessageServiceIsTerminated:
            status = HandleTerminate ( provider );
            break;
            
        default:
            status = super::message ( type, provider, arg );
            break;
    }
    
    DEBUG_LOG("%s[%p]::%s result %d\n", getClassName(), this,  __FUNCTION__, status);
    return status;
    
}
コード例 #2
0
IOReturn
SATSMARTUserClient::clientClose ( void )
{
    DEBUG_LOG("%s[%p]::%s\n", getClassName(), this, __FUNCTION__);
    
    if ( fProvider != NULL )
        HandleTerminate ( fProvider );
    
    return super::clientClose ( );
}
コード例 #3
0
ファイル: metaserver.cpp プロジェクト: adityavs/metaserver
//=============================================================================
void Metaserver::Process()
{
  SAIN                      clientAddr;
  socklen_t                 clientAddrLen = sizeof(clientAddr);
  unsigned char             mesg[MAXLINE];
  int                       bytes;

  SignalManager::GetInstance().RegisterHandler(SIGALRM, mSigalrmHandler);
  alarm(REAP_INTERVAL);
  for( ; ; )
  {
    if(mSigintHandler->GetGracefulQuit())
      Interrupted();
    if(mSigalrmHandler->GetAlarm())
    {
      mSigalrmHandler->SetAlarm(0);
      Reaper();
    }

    if((bytes = recvfrom(mListenSocket, mesg, MAXLINE, 0, (SA *)&clientAddr, 
			 &clientAddrLen)) < 0)
      continue;

    NetMsg netmsg((const unsigned char *)mesg, bytes);

    switch(netmsg.GetType())
    {
      case NMT_SERVERKEEPALIVE:
      {
	HandleServerKeepalive((SA *)&clientAddr, clientAddrLen);
        break;
      }
      case NMT_CLIENTKEEPALIVE:
      {
	HandleClientKeepalive((SA *)&clientAddr, clientAddrLen);
        break;
      }
      case NMT_SERVERSHAKE:
      {
	ServerShakeMsg msg(mesg, bytes);
	
	HandleServerShake((SA *)&clientAddr, msg);
        break;
      }
      case NMT_CLIENTSHAKE:
      {
	ClientShakeMsg msg(mesg, bytes);

	HandleClientShake((SA *)&clientAddr, msg);
        break;
      }
      case NMT_TERMINATE:
      {
	TerminateMsg msg(mesg, bytes);

	if(msg.Good())
	{
	  HandleTerminate((SA *)&clientAddr);
	}
        break;
      }
      case NMT_LISTREQ:
      {
	ListRequestMsg msg(mesg, bytes);

	if(msg.Good())
        {
	  HandleListRequest((SA *)&clientAddr, clientAddrLen, msg);
	}
        break;
      }
      case NMT_NULL:
      case NMT_HANDSHAKE:
      case NMT_LISTRESP:
      case NMT_PROTO_ERANGE:
      default:
#ifdef DEBUG
	printf("Ignoring unknown message type: %d\n", netmsg.GetType());
#endif
	break;
    }
    mPacketCount++;
  }
}