bool OscController::sendMessage(const char *path, const char *types, ...) { if(path == NULL || types == NULL || transmitAddress_ == NULL) return false; va_list ap; bool ret = false; char *totalPath = (char *)malloc((strlen(path) + globalPrefix_.length())*sizeof(char)); strcpy(totalPath, globalPrefix_.c_str()); strcat(totalPath, path); lo_message msg = lo_message_new(); va_start(ap, types); ret = (lo_message_add_varargs(msg, types, ap) == 0); // Check for success (return of 0) if(!ret) cerr << "Error in OscController::sendMessage -- lo_message_add_varargs failed.\n"; else ret = (lo_send_message(transmitAddress_, totalPath, msg) == 0); va_end(ap); lo_message_free(msg); free(totalPath); return ret; }
void OscTransmitter::sendMessage(const char * path, const char * type, ...) { va_list v; va_start(v, type); lo_message msg = lo_message_new(); lo_message_add_varargs(msg, type, v); /*if(debugMessages_) { cout << path << " " << type << ": "; lo_arg **args = lo_message_get_argv(msg); for(int i = 0; i < lo_message_get_argc(msg); i++) { switch(type[i]) { case 'i': cout << args[i]->i << " "; break; case 'f': cout << args[i]->f << " "; break; default: cout << "? "; } } cout << endl; //lo_message_pp(msg); }*/ sendMessage(path, type, msg); lo_message_free(msg); va_end(v); }
void OscSender::sendMessage(const std::string &OSCpath, const char *types, va_list ap) const { lo_message msg = lo_message_new(); int err = lo_message_add_varargs(msg, types, ap); if (!err) sendMessage(OSCpath, msg); else std::cout << "ERROR (OscSender::sendMessage): " << err << std::endl; }
int test_varargs(lo_address a, const char *path, const char *types, ...) { va_list ap; lo_message m = lo_message_new(); int error; va_start(ap, types); if ((error=lo_message_add_varargs(m, types, ap))==0) lo_send_message(a, path, m); else printf("lo_message_add_varargs returned %d\n", error); lo_message_free(m); return error<0; }