MCPcopy Create free account
hub / github.com/audeering/opensmile / sendPeriodicMessage

Method sendPeriodicMessage

src/examples/simpleMessageSender.cpp:226–271  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

224}
225
226void cSimpleMessageSender::sendPeriodicMessage(FLOAT_DMEM *v, int firstElementIndex, int Nv, long vi, double tm)
227{
228 if (!useJsonFormat) {
229 cComponentMessage msg;
230 memset(&msg, 0, sizeof(msg));
231 strncpy(msg.msgtype, messageType, CMSG_typenameLen);
232 strncpy(msg.msgname, messageName, CMSG_typenameLen);
233 if (v != NULL) {
234 for (int i = 0; i < Nv && i < CMSG_nUserData; i++) {
235 msg.floatData[i] = v[firstElementIndex + i];
236 }
237 }
238 msg.intData[0] = 0;
239 msg.readerTime = tm;
240 msg.userTime1 = (double)vi;
241 sendMessage(&msg);
242 } else {
243 rapidjson::Document doc;
244 doc.SetObject();
245 rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
246 doc.AddMember("msgtype", rapidjson::Value(messageType, allocator), allocator);
247 doc.AddMember("msgname", rapidjson::Value(messageName, allocator), allocator);
248 rapidjson::Value fields(rapidjson::kObjectType);
249 const FrameMetaInfo *fmeta = reader_->getFrameMetaInfo();
250 for (int i = 0; i < Nv; i++) {
251 long arrIdx;
252 long el = fmeta->elementToFieldIdx(i, &arrIdx);
253 FieldMetaInfo &field = fmeta->field[el];
254 if (field.N <= 1) {
255 // non-array field
256 fields.AddMember(rapidjson::Value(field.name, allocator), rapidjson::Value(v[firstElementIndex + i]), allocator);
257 } else {
258 // array field
259 rapidjson::Value arrayField(rapidjson::kArrayType);
260 for (int j = arrIdx; j < field.N && i < Nv; j++, i++) {
261 arrayField.PushBack(v[firstElementIndex + i], allocator);
262 }
263 fields.AddMember(rapidjson::Value(field.name, allocator), arrayField, allocator);
264 }
265 }
266 doc.AddMember("fields", fields, allocator);
267 doc.AddMember("time", tm, allocator);
268 doc.AddMember("vIdx", int(vi), allocator);
269 sendJsonMessage(doc);
270 }
271}
272
273void cSimpleMessageSender::sendEventMessage(FLOAT_DMEM *v, int Nv, const char * text, FLOAT_DMEM ref, long vi, double tm)
274{

Callers

nothing calls this directly

Calls 4

AddMemberMethod · 0.80
elementToFieldIdxMethod · 0.80
getFrameMetaInfoMethod · 0.45
PushBackMethod · 0.45

Tested by

no test coverage detected