c_bool d_publisherStatusWriterCopy( c_type type, void *data, void *to) { OS_UNUSED_ARG(type); assert(type); return d_publisherMessageWriterCopy(&d_status(data)->parentMsg, &d_status(to)->parentMsg); }
d_status d_statusNew( d_admin admin) { d_status status = NULL; if(admin){ status = d_status(os_malloc(C_SIZEOF(d_status))); d_messageInit(d_message(status), admin); } return status; }
/** * @brief SDSMemoryNode::reciveMns * @param mns */ void SDSMemoryNode::reciveMns(char * message){ cout<<message<<endl; Document doc; doc.ParseInsitu(message); if(doc.IsObject()){ if(doc.HasMember("protocolo")){ if(doc["protocolo"].IsString()){ string comando; comando=doc["protocolo"].GetString(); if(comando=="d_calloc"){ if(doc.HasMember("pSize")){ if(doc["pSize"].IsInt()){ int pSize= doc["pSize"].GetInt(); d_calloc(pSize); } } } else if(comando=="d_status"){ d_status(); } else{ d_pointer_size pointerSize; if(doc.HasMember("dir")){ if(doc["dir"].IsInt()){ int pDir= doc["dir"].GetInt(); pointerSize.pointer.dirMemory=pDir; } } if(doc.HasMember("pSize")){ if(doc["pSize"].IsInt()){ int pSize= doc["pSize"].GetInt(); pointerSize.bytes=pSize; } } if(comando=="d_free"){ d_free(pointerSize); } else{ //Documento para en caso de que se quiera obtener el dato StringBuffer s; Writer<StringBuffer> writer(s); writer.StartObject(); writer.String("dato"); int status; bystream statusBystream; if(doc.HasMember("tipo")){ if(doc["tipo"].IsString()){ string tipo= doc["tipo"].GetString(); if(tipo=="char"){ if(comando=="d_set"){ if(doc.HasMember("dato")){ if(doc["dato"].IsString()){ //Parsear a char char pData =*(const_cast<char *>(doc["dato"].GetString())); status= Manejador.setearDatoChar(pointerSize,pData); } } } if(comando=="d_get"){ statusBystream=Manejador.obtenerDatoChar(pointerSize); writer.String(&(statusBystream.datachar)); } } else if(tipo=="int"){ if(comando=="d_set"){ if(doc.HasMember("dato")){ if(doc["dato"].IsInt()){ //Parsear a int int pData =doc["dato"].GetInt(); status= Manejador.setearDatoInt(pointerSize,pData); } } } if(comando=="d_get"){ statusBystream=Manejador.obtenerDatoInt(pointerSize); writer.Int(statusBystream.dataint); } } else if(tipo=="bool"){ //Parsear a bool //status= Manejador.setearDatoBool(pointerSize,pData); } else if(tipo=="float"){ //parsear a float // status= Manejador.setearDatoFloat(pointerSize,pData); } else if(tipo=="arrayint"){ //parsear a arreglo de int // status= Manejador.setearDatoArrayInt(pointerSize,pData); } else if(tipo=="arraychar"){ //Parsear a arreglos de char //status= Manejador.setearDatoArrayChar(pointerSize,pData); } else if(tipo=="long"){ //Parsear a long // status= Manejador.setearDatoLong(pointerSize,pData); } else if(tipo=="double"){ //Parsear a double // status= Manejador.setearDatoDouble(pointerSize,pData); } if(comando=="d_set"){ d_set(status); } if(comando=="d_get"){ writer.String("status"); writer.Int(statusBystream.status); writer.EndObject(); const char* mensaje=s.GetString(); cout<<"Enviando... "<<mensaje<<endl; puerto->sentMns(mensaje,client); } }} } } } } } }