本文整理汇总了C++中osc::ReceivedMessage::ArgumentsBegin方法的典型用法代码示例。如果您正苦于以下问题:C++ ReceivedMessage::ArgumentsBegin方法的具体用法?C++ ReceivedMessage::ArgumentsBegin怎么用?C++ ReceivedMessage::ArgumentsBegin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osc::ReceivedMessage
的用法示例。
在下文中一共展示了ReceivedMessage::ArgumentsBegin方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: currentString
void
ReceiveOSCThread::ProcessMessage(const osc::ReceivedMessage&m, const IpEndpointName& remoteEndPoint)
{
std::ostringstream oss;
if ((m.AddressPattern())[0] == '/') {
m_minuitMethods->receiveNetworkMessage(m.AddressPattern());
} else {
std::string currentString(m.AddressPattern());
if (currentString.find(":namespace") != currentString.npos) {
osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
if (arg->IsChar()) {
oss << arg->AsChar();
} else if (arg->IsInt32()) {
oss << arg->AsInt32();
} else if (arg->IsString()) {
oss << arg->AsString();
}
m_minuitMethods->minuitParseNamespaceRequest(oss.str(), m);
} else if (currentString.find(":get") != currentString.npos) {
osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
if (arg->IsChar()) {
oss << arg->AsChar();
} else if (arg->IsInt32()) {
oss << arg->AsInt32();
} else if (arg->IsString()) {
oss << arg->AsString();
}
m_minuitMethods->minuitParseGetRequest(oss.str(), m);
} else if (currentString.find("?namespace") != currentString.npos ||
currentString.find("?get") != currentString.npos) {
osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
if (arg->IsChar()) {
oss << arg->AsChar();
} else if (arg->IsInt32()) {
oss << arg->AsInt32();
} else if (arg->IsString()) {
oss << arg->AsString();
}
m_minuitMethods->receiveNetworkRequest(oss.str(), currentString);
}
}
};
示例2: ProcessMessage
void oscReceiver::ProcessMessage(const osc::ReceivedMessage &_m, const IpEndpointName &remoteEndpoint)
{
boost::mutex::scoped_lock lock(listenerMutex);
if (retrievalMode == SIGNAL_PARSER_ONLY_AFTER_RELEASE)
{
if (currentMessage != 0) return;
}
osc::ReceivedMessage::const_iterator arg = _m.ArgumentsBegin();
currentMessage = new oscMessage(_m.AddressPattern(), oscMessage::NO_BUFFER);
// set source IP
char sourceString[ IpEndpointName::ADDRESS_STRING_LENGTH ];
remoteEndpoint.AddressAsString( sourceString );
currentMessage->sourceIP = sourceString;
while ( arg != _m.ArgumentsEnd() )
{
if ( arg->IsBool() ) { currentMessage->AppendBoolean (arg->AsBool());}
else if ( arg->IsInt32() ) { currentMessage->AppendInteger (arg->AsInt32());}
else if ( arg->IsFloat() ) { currentMessage->AppendFloat (arg->AsFloat());}
else if ( arg->IsString() ) { currentMessage->AppendString (arg->AsString());}
else { std::cout << "Unrecognized osc argument type\n"; }
arg++;
}
signalNewOscMessageReceived(currentMessage);
}
示例3: ProcessMessage
void OscListener::ProcessMessage( const ::osc::ReceivedMessage &m, const IpEndpointName& remoteEndpoint ) {
Message* message = new Message();
message->setAddress(m.AddressPattern());
char endpoint_host[IpEndpointName::ADDRESS_STRING_LENGTH];
remoteEndpoint.AddressAsString(endpoint_host);
message->setRemoteEndpoint(endpoint_host, remoteEndpoint.port);
for (::osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin(); arg != m.ArgumentsEnd(); ++arg){
if (arg->IsInt32())
message->addIntArg( arg->AsInt32Unchecked());
else if (arg->IsFloat())
message->addFloatArg(arg->AsFloatUnchecked());
else if (arg->IsString())
message->addStringArg(arg->AsStringUnchecked());
else {
assert(false && "message argument type unknown");
}
}
lock_guard<mutex> lock(mMutex);
if( mMessageReceivedCbs.empty() ){
mMessages.push_back( message );
}else{
mMessageReceivedCbs.call( message );
delete message;
}
}
示例4: ProcessMessage
void Receiver::ProcessMessage( const osc::ReceivedMessage &m, const osc::IpEndpointName& remoteEndpoint ) {
// convert the m to a Message, return at the end to other main thread
Message message;
// set the address
message.setAddress( m.AddressPattern() );
// set the sender ip/host
char endpoint_host[ osc::IpEndpointName::ADDRESS_STRING_LENGTH ];
remoteEndpoint.AddressAsString( endpoint_host );
message.setRemoteEndpoint( endpoint_host, remoteEndpoint.port );
// transfer the arguments
for ( osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
arg != m.ArgumentsEnd();
++arg )
{
if ( arg->IsInt32() ) {
message.addIntArg( arg->AsInt32Unchecked() );
} else if ( arg->IsFloat() ) {
message.addFloatArg( arg->AsFloatUnchecked() );
} else if ( arg->IsString() ) {
message.addStringArg( arg->AsStringUnchecked() );
} else {
assert( false && "message argument is not int, float, or string" );
}
}
// at this point we are running inside the thread created by start()
// since we are returning a copy no shared memory management
for(unsigned int i=0; i<_oscHandlers.size(); ++i) {
_oscHandlers[i]->oscReceive( message );
}
}
示例5: ProcessMessage
void BitalinoPacketListener::ProcessMessage( const osc::ReceivedMessage& m ) {
try{
if( std::strcmp( m.AddressPattern(), "/wek/inputs" ) == 0 ){
osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
float emg = (arg++)->AsFloat();
float emgFilt = (arg++)->AsFloat();
float eda = (arg++)->AsFloat();
this->emgBuffer[this->curEmgBuffIdx++] = emgFilt;
if (this->curEmgBuffIdx >= BUFFER_SIZE) {
this->curEmgBuffIdx = 0;
}
this->emgStd = minMax(this->emgBuffer, BUFFER_SIZE);
float ecg = (arg++)->AsFloat();
this->accelMean =(arg++)->AsFloat();
this->lux = (arg++)->AsFloat();
//std::cout << "emg: " << emg << " emgfilt: " << emgFilt << " eda: " << eda << " ecg: " << ecg << " accel: " << accel << " lux: " << lux << '\n';
}
}catch( osc::Exception& e ){
// any parsing errors such as unexpected argument types, or
// missing arguments get thrown as exceptions.
std::cout << "error while parsing message: "
<< m.AddressPattern() << ": " << e.what() << "\n";
}
}
示例6: ProcessMessage
//------------------------------------------------------------------------
void OSCListener::ProcessMessage( const osc::ReceivedMessage& m, const IpEndpointName& src )
{
string address(m.AddressPattern());
if (address == kGreensoundsAddr) {
ReceivedMessageArgumentIterator i = m.ArgumentsBegin();
while (i != m.ArgumentsEnd()) {
if (i->IsString()) {
string msg(i->AsStringUnchecked());
if (msg == "hello") {
char buff[120];
src.AddressAsString(buff);
fSensors->connect(buff);
}
else if (msg == "version") {
fSensors->send (kGreensoundsAddr, "version", kVersion);
}
}
else if (i->IsInt32()) {
}
else if (i->IsFloat()) {
}
i++;
}
}
}
示例7: ProcessMessage
void OscListener::ProcessMessage(const osc::ReceivedMessage& message, const IpEndpointName& endpoint)
{
char addressBuffer[256];
endpoint.AddressAsString(addressBuffer);
QList<QVariant> arguments;
for (osc::ReceivedMessage::const_iterator iterator = message.ArgumentsBegin(); iterator != message.ArgumentsEnd(); ++iterator)
{
const osc::ReceivedMessageArgument& argument = *iterator;
if (argument.IsBool())
arguments.push_back(argument.AsBool());
else if (argument.IsInt32())
arguments.push_back(QVariant::fromValue<qint32>(argument.AsInt32()));
else if (argument.IsInt64())
arguments.push_back(QVariant::fromValue<qint64>(argument.AsInt64()));
else if (argument.IsFloat())
arguments.push_back(argument.AsFloat());
else if (argument.IsDouble())
arguments.push_back(argument.AsDouble());
else if (argument.IsString())
arguments.push_back(argument.AsString());
}
QString eventPath = QString("%1%2").arg(addressBuffer).arg(message.AddressPattern());
QMutexLocker locker(&eventsMutex);
this->events[eventPath] = arguments;
}
示例8: ProcessMessage
//get OSC message
void OscInput::ProcessMessage( const osc::ReceivedMessage& m, const IpEndpointName& remoteEndpoint )
{
try
{
if( strcmp( m.AddressPattern(), "/alpha" ) == 0 )
{
osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
int recievedPad = (arg++)->AsInt32();
int recievedValue = (arg++)->AsInt32();
if( arg != m.ArgumentsEnd() )
throw osc::ExcessArgumentException();
recievedPad = Layouts::padArrangementLayout[recievedPad];
//call callback function
oscCallBack(recievedPad, recievedValue);
}
}
catch( osc::Exception& e )
{
// any parsing errors such as unexpected argument types, or
// missing arguments get thrown as exceptions.
std::cout << "error while parsing message: "
<< m.AddressPattern() << ": " << e.what() << "\n";
}
}
示例9: ProcessMessage
void ofxOscReceiver::ProcessMessage( const osc::ReceivedMessage &m, const osc::IpEndpointName& remoteEndpoint )
{
// convert the message to an ofxOscMessage
ofxOscMessage msg;
// set the address
msg.setAddress( m.AddressPattern() );
// set the sender ip/host
char endpoint_host[ osc::IpEndpointName::ADDRESS_STRING_LENGTH ];
remoteEndpoint.AddressAsString( endpoint_host );
msg.setRemoteEndpoint( endpoint_host, remoteEndpoint.port );
// transfer the arguments
for ( osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
arg != m.ArgumentsEnd();
++arg )
{
if ( arg->IsInt32() )
msg.addIntArg( arg->AsInt32Unchecked() );
else if ( arg->IsInt64() )
msg.addInt64Arg( arg->AsInt64Unchecked() );
else if ( arg->IsFloat() )
msg.addFloatArg( arg->AsFloatUnchecked() );
else if ( arg->IsDouble() )
msg.addDoubleArg( arg->AsDoubleUnchecked() );
else if ( arg->IsString() )
msg.addStringArg( arg->AsStringUnchecked() );
else if ( arg->IsSymbol() )
msg.addSymbolArg( arg->AsSymbolUnchecked() );
else if ( arg->IsChar() )
msg.addCharArg( arg->AsCharUnchecked() );
else if ( arg->IsMidiMessage() )
msg.addMidiMessageArg( arg->AsMidiMessageUnchecked() );
else if ( arg->IsBool())
msg.addBoolArg( arg->AsBoolUnchecked() );
else if ( arg->IsInfinitum() )
msg.addTriggerArg();
else if ( arg->IsTimeTag() )
msg.addTimetagArg( arg->AsTimeTagUnchecked() );
else if ( arg->IsRgbaColor() )
msg.addRgbaColorArg( arg->AsRgbaColorUnchecked() );
else if ( arg->IsBlob() ){
const char * dataPtr;
osc::osc_bundle_element_size_t len = 0;
arg->AsBlobUnchecked((const void*&)dataPtr, len);
ofBuffer buffer(dataPtr, len);
msg.addBlobArg( buffer );
}
else
{
ofLogError("ofxOscReceiver") << "ProcessMessage: argument in message " << m.AddressPattern() << " is not an int, float, or string";
}
}
// send msg to main thread
messagesChannel.send( std::move(msg) );
}
示例10: ProcessMessage
void ExamplePacketListener::ProcessMessage( const osc::ReceivedMessage& m, const IpEndpointName& remoteEndpoint )
{
try{
// example of parsing single messages. osc::OsckPacketListener
// handles the bundle traversal.
OSCData *d = new OSCData; //new OSCData;
d->header = oscNothing;
osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
if( strcmp( m.AddressPattern(), "/obs") == 0 ) // this is a packet of feature data: /obs len x x x x
{
d = new OSCData;
int len = (arg++)->AsInt32();
for (int i = 0; i < len; i++)
d->data.push_back((arg++)->AsFloat()); // the observed state
d->header = oscUpdate;
} else if( strcmp( m.AddressPattern(), "/spo") == 0 ) // set the RL's willingness to jump to new categories
{
d = new OSCData;
d->data.push_back((arg++)->AsFloat()); // the observed state
d->header = oscSponteneity;
} else if( strcmp( m.AddressPattern(), "/reset") == 0 ) // start over!
{
d = new OSCData;
d->header = oscReset;
} else if( strcmp( m.AddressPattern(), "/analyze") == 0 ) // toggle between purely analyzing and predicting states
{
d = new OSCData;
d->header = oscAnalyze;
} else if( strcmp( m.AddressPattern(), "/learnRate") == 0 ) // toggle between purely analyzing and predicting states
{
d = new OSCData;
d->header = oscLearnRates;
for (int i = 0; i < 4; i++)
d->data.push_back((arg++)->AsFloat()); // the observed state
} else if( strcmp( m.AddressPattern(), "/rewardWeight") == 0 ) // toggle between purely analyzing and predicting states
{
d = new OSCData;
d->header = oscRewardWeights;
for (int i = 0; i < 4; i++)
d->data.push_back((arg++)->AsFloat()); // the observed state
}
if (d->header != oscNothing)
{
pthread_mutex_lock(MusiVerse::oscmutex); //wait for the lock
MusiVerse::rxCommands.push_back(d);
pthread_mutex_unlock(MusiVerse::oscmutex);
} else
delete d;
}catch( osc::Exception& e )
{
// any parsing errors such as unexpected argument types, or
// missing arguments get thrown as exceptions.
std::cout << "error while parsing message: "
<< m.AddressPattern() << ": " << e.what() << "\n";
}
}
示例11: ProcessMessage
void ofxOscReceiver::ProcessMessage( const osc::ReceivedMessage &m, const IpEndpointName& remoteEndpoint )
{
// convert the message to an ofxOscMessage
ofxOscMessage* ofMessage = new ofxOscMessage();
// set the address
ofMessage->setAddress( m.AddressPattern() );
// set the sender ip/host
char endpoint_host[ IpEndpointName::ADDRESS_STRING_LENGTH ];
remoteEndpoint.AddressAsString( endpoint_host );
ofMessage->setRemoteEndpoint( endpoint_host, remoteEndpoint.port );
// transfer the arguments
for ( osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
arg != m.ArgumentsEnd();
++arg )
{
if ( arg->IsInt32() )
ofMessage->addIntArg( arg->AsInt32Unchecked() );
else if ( arg->IsFloat() )
ofMessage->addFloatArg( arg->AsFloatUnchecked() );
else if ( arg->IsString() )
ofMessage->addStringArg( arg->AsStringUnchecked() );
else if ( arg->IsBlob() )
{
osc::Blob blob;
arg->AsBlobUnchecked( blob.data, blob.size );
ofMessage->addBlobArg( blob );
}
else
{
assert( false && "message argument is not int, float, string, or blob" );
}
}
// now add to the queue
// at this point we are running inside the thread created by startThread,
// so anyone who calls hasWaitingMessages() or getNextMessage() is coming
// from a different thread
// so we have to practise shared memory management
// grab a lock on the queue
grabMutex();
// add incoming message on to the queue
messages.push_back( ofMessage );
// release the lock
releaseMutex();
}
示例12: parseMinuitGetAnswer
void MinuitGetAnswer::parseMinuitGetAnswer(const osc::ReceivedMessage&m)
{
osc::ReceivedMessage::const_iterator arg = m.ArgumentsBegin();
std::ostringstream ossWithAddress;
std::ostringstream ossWithoutAddress;
std::ostringstream floatCorrection;
// get the address
ossWithAddress << arg->AsString();
++arg;
while(arg != m.ArgumentsEnd()) {
if (arg->IsChar()) {
ossWithAddress << arg->AsChar();
ossWithoutAddress << arg->AsChar();
} else if (arg->IsInt32()) {
ossWithAddress << arg->AsInt32();
ossWithoutAddress << arg->AsInt32();
} else if (arg->IsString()) {
ossWithAddress << arg->AsString();
ossWithoutAddress << arg->AsString();
}else if (arg->IsFloat()) {
floatCorrection.str("");
floatCorrection << arg->AsFloat();
std::string floatWithPoint = floatCorrection.str();
if(floatWithPoint.find(".") == floatWithPoint.npos) {
floatWithPoint = floatWithPoint + ".";
}
ossWithAddress << floatWithPoint;
ossWithoutAddress << floatWithPoint;
}
++arg;
if(arg != m.ArgumentsEnd()){
ossWithAddress << " ";
ossWithoutAddress << " ";
}
}
m_getStringWithAddress = ossWithAddress.str();
m_getStringWithoutAddress = ossWithoutAddress.str();
m_state = ANSWER_RECEIVED;
}
示例13: process_message
void process_message( MarSystem * root_system, const osc::ReceivedMessage& message )
{
const char * path = message.AddressPattern();
if (path[0] == '/') ++path;
// FIXME: Constructing std::string is not real-time-safe.
MarControlPtr control = find_control(root_system, path);
if (control.isInvalid())
{
MRSWARN("OSC receiver: no control for path: " << path);
return;
}
try
{
osc::ReceivedMessage::const_iterator it = message.ArgumentsBegin();
if (it == message.ArgumentsEnd())
throw std::runtime_error("OSC receiver: Message has no arguments.");
char tag = it->TypeTag();
switch(tag)
{
case osc::TRUE_TYPE_TAG:
case osc::FALSE_TYPE_TAG:
control->setValue(it->AsBoolUnchecked());
break;
case osc::INT32_TYPE_TAG:
control->setValue(it->AsInt32Unchecked());
break;
case osc::FLOAT_TYPE_TAG:
control->setValue((mrs_real) it->AsFloatUnchecked());
break;
case osc::DOUBLE_TYPE_TAG:
control->setValue((mrs_real) it->AsDoubleUnchecked());
break;
case osc::STRING_TYPE_TAG:
control->setValue(it->AsStringUnchecked());
break;
default:
throw std::runtime_error("OSC receiver: Unsupported message argument type.");
}
}
catch ( std::exception & e )
{
MRSWARN("OSC receiver: error while parsing message: " << e.what());
}
}
示例14: processXFadeMessage
void OscReceiver::processXFadeMessage(const std::string addr, const osc::ReceivedMessage& m){
boost::regex position_re("^(/relative){0,1}/{0,1}$");
//boost::regex leftmixer_re("^/mixer/left/{0,1}$");
//boost::regex rightmixer_re("^/mixer/right/{0,1}$");
boost::regex mixers_re("^/mixers/{0,1}$");
boost::regex enable_re("^/enable/{0,1}$");
boost::cmatch matches;
osc::ReceivedMessage::const_iterator arg_it = m.ArgumentsBegin();
if(boost::regex_match(addr.c_str(), matches, position_re)){
if(arg_it == m.ArgumentsEnd())
throw osc::MissingArgumentException();
float arg = floatFromOscNumber(*arg_it);
if(strcmp("", matches[1].str().c_str()) == 0)
mModel->crossFade()->setPosition(arg);
else
mModel->crossFade()->setPosition(mModel->crossFade()->position() + arg);
} else if(boost::regex_match(addr.c_str(), mixers_re)){
if(arg_it == m.ArgumentsEnd())
throw osc::MissingArgumentException();
int left = intFromOsc(*arg_it);
arg_it++;
if(arg_it == m.ArgumentsEnd())
throw osc::MissingArgumentException();
int right = intFromOsc(*arg_it);
mModel->crossFade()->setMixers(left, right);
/*
} else if(boost::regex_match(addr.c_str(), leftmixer_re)){
if(arg_it == m.ArgumentsEnd())
throw osc::MissingArgumentException();
int arg = intFromOsc(*arg_it);
mModel->crossFade()->setLeftMixer(arg);
} else if(boost::regex_match(addr.c_str(), rightmixer_re)){
if(arg_it == m.ArgumentsEnd())
throw osc::MissingArgumentException();
int arg = intFromOsc(*arg_it);
mModel->crossFade()->setRightMixer(arg);
*/
} else if(boost::regex_match(addr.c_str(), enable_re)){
if(arg_it == m.ArgumentsEnd())
mModel->crossFade()->enable();
else
mModel->crossFade()->enable(boolFromBoolOrInt(*arg_it));
}
}
示例15: SendMessage
static void SendMessage(TCircularQueue<std::pair<FName, TArray<FOscDataElemStruct>>> & _pendingMessages, const osc::ReceivedMessage & message)
{
const FName address(message.AddressPattern());
TArray<FOscDataElemStruct> data;
const auto argBegin = message.ArgumentsBegin();
const auto argEnd = message.ArgumentsEnd();
for(auto it = argBegin; it != argEnd; ++it)
{
FOscDataElemStruct elem;
if(it->IsFloat())
{
elem.SetFloat(it->AsFloatUnchecked());
}
else if(it->IsDouble())
{
elem.SetFloat(it->AsDoubleUnchecked());
}
else if(it->IsInt32())
{
elem.SetInt(it->AsInt32Unchecked());
}
else if(it->IsInt64())
{
elem.SetInt(it->AsInt64Unchecked());
}
else if(it->IsBool())
{
elem.SetBool(it->AsBoolUnchecked());
}
else if(it->IsString())
{
elem.SetString(FName(it->AsStringUnchecked()));
}
data.Add(elem);
}
// save it in pending messages
_pendingMessages.Enqueue(std::make_pair(address, data));
}