예제 #1
0
UtlBoolean TestRegistrar::handleMessage(OsMsg& rMsg)
{
    int msgType = rMsg.getMsgType();
    int msgSubType = rMsg.getMsgSubType();
    UtlBoolean messageProcessed = FALSE;

    switch(msgType)
    {
        case OsMsg::PHONE_APP:
        {
            const SipMessage& message = *((SipMessageEvent&)rMsg).getMessage();
            UtlString method;

            if (!message.isResponse())
            {
                message.getRequestMethod(&method);

                if (SIP_REGISTER_METHOD == method)
                {
                    messageProcessed = handleRegisterRequest(message);
                }
            }
            break;
        }

    }
    return messageProcessed;
}
void ResultProcessor::messageThreadLoop(void)
{
    HAL_TRACE_CALL(CAMERA_DEBUG_LOG_LEVEL1);

    mThreadRunning = true;
    while (mThreadRunning) {
        status_t status = NO_ERROR;
        Message msg;
        mMessageQueue.receive(&msg);
        PERFORMANCE_HAL_ATRACE_PARAM1("msg", msg.id);
        Camera3Request* request = msg.request;
        switch (msg.id) {
        case MESSAGE_ID_EXIT:
            status = handleMessageExit();
            break;
       case MESSAGE_ID_SHUTTER_DONE:
           status = handleShutterDone(msg);
           break;
       case MESSAGE_ID_METADATA_DONE:
           status = handleMetadataDone(msg);
           break;
       case MESSAGE_ID_BUFFER_DONE:
           status = handleBufferDone(msg);
           break;
       case MESSAGE_ID_REGISTER_REQUEST:
           status = handleRegisterRequest(msg);
           break;
        default:
           status = BAD_VALUE;
           break;
        }
        mMessageQueue.reply(msg.id, status);
    }
}