void QMessageTransceiverHandler :: HandleIncomingEvent(uint32 code, const MessageRef & next, const IPAddressAndPort & iap) { switch(code) { case MTT_EVENT_INCOMING_MESSAGE: emit MessageReceived(next); break; case MTT_EVENT_SESSION_ATTACHED: emit SessionAttached(); break; case MTT_EVENT_SESSION_CONNECTED: emit SessionConnected(iap); break; case MTT_EVENT_SESSION_DISCONNECTED: emit SessionDisconnected(); break; case MTT_EVENT_SESSION_DETACHED: emit SessionDetached(); break; case MTT_EVENT_OUTPUT_QUEUES_DRAINED: emit OutputQueueDrained(next); break; } emit InternalHandlerEvent(code, next); // these get emitted for any event }
CSession2* CConfigServer::NewSessionL( const TVersion& /*aVersion*/, const RMessage2& /*aMessage*/) const /** * The CConfigServer::NewSessionL method. Create a new If on this server. * * @internalComponent * * @param aVersion Not used. * @param aMessage Not used. * @return A new session to be used for the connection. */ { __FLOG_STATIC(KConfigLoggingTag1(), KConfigLoggingTag2(),_L("CConfigServer::NewSessionL Start")); CConfigSession* ses = CConfigSession::NewL(); SessionConnected(); __FLOG_STATIC(KConfigLoggingTag1(), KConfigLoggingTag2(),_L("CConfigServer::NewSessionL End")); return ses; }
void QMessageTransceiverThread :: HandleQueuedIncomingEvents() { uint32 code; MessageRef next; String sessionID; uint32 factoryID; bool seenIncomingMessage = false; IPAddressAndPort iap; // Check for any new messages from our internal thread while(GetNextEventFromInternalThread(code, &next, &sessionID, &factoryID, &iap) >= 0) { switch(code) { case MTT_EVENT_INCOMING_MESSAGE: default: if (seenIncomingMessage == false) { seenIncomingMessage = true; emit BeginMessageBatch(); } emit MessageReceived(next, sessionID); break; case MTT_EVENT_SESSION_ACCEPTED: emit SessionAccepted(sessionID, factoryID, iap); break; case MTT_EVENT_SESSION_ATTACHED: emit SessionAttached(sessionID); break; case MTT_EVENT_SESSION_CONNECTED: emit SessionConnected(sessionID, iap); break; case MTT_EVENT_SESSION_DISCONNECTED: emit SessionDisconnected(sessionID); break; case MTT_EVENT_SESSION_DETACHED: emit SessionDetached(sessionID); break; case MTT_EVENT_FACTORY_ATTACHED: emit FactoryAttached(factoryID); break; case MTT_EVENT_FACTORY_DETACHED: emit FactoryDetached(factoryID); break; case MTT_EVENT_OUTPUT_QUEUES_DRAINED: emit OutputQueuesDrained(next); break; case MTT_EVENT_SERVER_EXITED: emit ServerExited(); break; } emit InternalThreadEvent(code, next, sessionID, factoryID); // these get emitted for any event const char * id = _handlers.HasItems() ? strchr(sessionID()+1, '/') : NULL; if (id) { QMessageTransceiverHandler * handler; if (_handlers.Get(atoi(id+1), handler) == B_NO_ERROR) { // If it's not already in the list, prepend it to the list and tell it to emit its BeginMessageBatch() signal if ((code == MTT_EVENT_INCOMING_MESSAGE)&&(handler != _lastSeenHandler)&&(handler->_nextSeen == NULL)) { if (_firstSeenHandler == NULL) _firstSeenHandler = _lastSeenHandler = handler; else { _firstSeenHandler->_prevSeen = handler; handler->_nextSeen = _firstSeenHandler; _firstSeenHandler = handler; } handler->EmitBeginMessageBatch(); } handler->HandleIncomingEvent(code, next, iap); } } } FlushSeenHandlers(true); if (seenIncomingMessage) emit EndMessageBatch(); }