예제 #1
0
void PipeSubscriber<Message>::PushMessage(const Message& msg) {
    /**
     * Remember, only one thread is allowed to publish...
     */
    if ( forwardMessage ) {
        if (batching) {
            // Already locked...
            onNewMessage(msg);
        } else {
            Lock notifyLock(onNotifyMutex);
            // No need to re-check post-lock since it is not possible to
            // unset the onNewMessage callback
            onNewMessage(msg);
        }
    } else {
        if (batching)
        {
            if ( !messages.push(msg) ) {
                throw PushToFullQueueException {msg};
            }
        }
        else
        {
            if (notifyOnMessage)
            {
                Lock notifyLock(onNotifyMutex);

                if ( !messages.push(msg) ) {
                    throw PushToFullQueueException {msg};
                }

                if (notifyOnMessage)
                {
                    NotifyNextMessage();
                }
            }
            else
            {
                if ( !messages.push(msg) ) {
                    throw PushToFullQueueException {msg};
                }

                if (notifyOnMessage)
                {
                    Lock notifyLock(onNotifyMutex);
                    if (notifyOnMessage)
                    {
                        NotifyNextMessage();
                    }
                }
            }
        }
    }
}
예제 #2
0
//--------------------------------------------------------------
void testApp::keyPressed(int key){
	if(key == 'a' || key == 'A'){
		ofxOscMessage m;
		m.setAddress("/test");
		m.addIntArg(1);
		m.addFloatArg(3.5f);
		m.addStringArg("hello");
		m.addFloatArg(ofGetElapsedTimef());
		sender.sendMessage(m);
	}
	if(key == 'g' || key == 'G'){
		string message = "g|1";
		onNewMessage(message);
	}
	if(key == 'h' || key == 'H'){
		string message = "h|0";
		onNewMessage(message);
	}
	if(key == 'i' || key == 'I'){
		string message = "i|1";
		onNewMessage(message);
	}
    if(key == 'j' || key == 'J'){
		string message = "j|1";
		onNewMessage(message);
	}
    if(key == 'w' || key == 'W'){
		string message = "c|1";
		onNewMessage(message);
	}
    if(key == 's' || key == 'S'){
		string message = "c|0";
		onNewMessage(message);
	}
    if(key == 'e' || key == 'E'){
		string message = "d|1";
		onNewMessage(message);
	}
    if(key == 'd' || key == 'D'){
		string message = "d|0";
		onNewMessage(message);
	}
	if(key == 'r' || key == 'R'){
		string message = "l|1";
		onNewMessage(message);
	}
    if(key == 'f' || key == 'F'){
		string message = "l|0";
		onNewMessage(message);
	}
}
예제 #3
0
void JMessageSessionHandler::handleMessageSession(Jreen::MessageSession *session)
{
	Q_ASSERT(session);
	session->registerMessageFilter(new JMessageReceiptFilter(m_account,session));
	QObject::connect(session, SIGNAL(messageReceived(Jreen::Message)),
					 m_account->roster(), SLOT(onNewMessage(Jreen::Message)));
}
void ShapeBase::setMessage(const MarkerConstPtr& message)
{
  MarkerConstPtr old = message_;
  message_ = message;

  expiration_ = ros::Time(0);// + message->lifetime;

  onNewMessage(old, message);
}