コード例 #1
0
// This the viewer process (the parent process).
//
// This function is called when a message is received from a plugin.
// It parses the message and passes it on to LLPluginProcessParent::receiveMessage.
void LLPluginProcessParent::receiveMessageRaw(const std::string &message)
{
    LL_DEBUGS("PluginRaw") << "Received: " << message << LL_ENDL;

    LLPluginMessage parsed;
    if(parsed.parse(message) != -1)
    {
        if(parsed.hasValue("blocking_request"))
        {
            mBlocked = true;
        }
        if(parsed.hasValue("perseus"))
        {
            mBlocked = false;

            // reset the heartbeat timer, since there will have been no heartbeats while the plugin was blocked.
            mHeartbeat.setTimerExpirySec(mPluginLockupTimeout);
        }

        if(mPolledInput)
        {
            // This is being called on the polling thread -- only do minimal processing/queueing.
            receiveMessageEarly(parsed);
        }
        else
        {
            // This is not being called on the polling thread -- do full message processing at this time.
            receiveMessage(parsed);
        }
    }
}
コード例 #2
0
void LLPluginProcessParent::receiveMessageRaw(const std::string &message)
{
	LL_DEBUGS("Plugin") << "Received: " << message << LL_ENDL;
	
	LLPluginMessage parsed;
	if(LLSDParser::PARSE_FAILURE != parsed.parse(message))
	{
		if(parsed.hasValue("blocking_request"))
		{
			mBlocked = true;
		}

		if(mPolledInput)
		{
			// This is being called on the polling thread -- only do minimal processing/queueing.
			receiveMessageEarly(parsed);
		}
		else
		{
			// This is not being called on the polling thread -- do full message processing at this time.
			receiveMessage(parsed);
		}
	}
}