35 #include <sys/types.h>
43 #include "trm/Klass.h"
46 #include "ReservationCustomAttributes.h"
48 #include "safec_lib.h"
50 #define DEVICEID_SCRIPT_PATH "/lib/rdk/getDeviceId.sh"
51 #define SCRIPT_OUTPUT_BUFFER_SIZE 512
55 static void json_dump_error(
const std::string & title,
const json_error_t &error);
56 static int vector_dump_callback(
const char *buffer,
size_t size,
void *data);
57 static int vector_load_callback(
const char *buffer,
size_t size,
void *data);
59 static void JsonEncode(
const Activity &r, json_t *parent);
60 static void JsonDecode(json_t * parent, Activity& r);
62 static void JsonEncode(
const TunerReservation &r, json_t *parent);
63 static void JsonDecode(json_t * parent, TunerReservation & reservation);
65 static void JsonEncode(
const DetailedTunerState &r, json_t *parent);
66 static void JsonDecode(json_t * parent, DetailedTunerState & reservation);
69 static void JsonEncode(
const NotifyClientConnectionEvent &r, json_t *parent);
70 static void JsonDecode(json_t * parent, NotifyClientConnectionEvent & notification);
78 static void JsonEncode(
const SimpleTRMRequest & r, std::vector<uint8_t> &out,
int);
79 static void JsonEncode(
const SimpleTRMRequest &r, json_t *parent);
81 static void JsonDecode(
int handle, SimpleTRMRequest & message,
int);
82 static void JsonDecode(json_t *parent, SimpleTRMRequest & message);
84 static void JsonEncode(
const SimpleTRMResponse &r, json_t *parent);
85 static void JsonDecode(json_t *parent, SimpleTRMResponse & message);
87 static void json_dump_error(
const std::string & title,
const json_error_t &error)
89 std::cout << title <<
"============================" << std::endl;
90 std::cout <<
"Line : " << error.line <<
"Column : " << error.column <<
"Position : " << error.position << std::endl;
91 std::cout <<
"Source : " << error.source << std::endl;
92 std::cout <<
"Text : " << error.text << std::endl;
96 static int vector_dump_callback(
const char *buffer,
size_t size,
void *data)
98 std::vector<uint8_t> *out = (std::vector<uint8_t> *)data;
99 out->insert(out->end(), buffer, (buffer+size));
103 static int vector_load_callback(
const char *buffer,
size_t size,
void *data)
105 std::vector<uint8_t> *in = (std::vector<uint8_t> *)data;
106 in->insert(in->end(), buffer, (buffer+size));
125 static void JsonEncode(
const Activity &r, json_t *parent)
127 json_t *JT_activity = parent;
131 json_object_set_new(JT_activity,
"name", json_string(r.getActivity()));
132 if (r.hasDetails()) {
133 json_object_set_new(JT_activity,
"details", json_object());
135 json_t *JT_details = json_object_get(JT_activity,
"details");
140 const std::map<Activity::KeyT,Activity::ValT> details = r.getDetails();
141 std::map<Activity::KeyT,Activity::ValT>::const_iterator it = details.begin();
142 while(it != details.end()) {
143 std::cout <<
"[ENC]Adding Activity(" << it->first <<
", " << it->second <<
") " << std::endl;
144 json_object_set_new(JT_details, (it->first).c_str(), json_string((it->second).c_str()));
148 if (r == Activity::kRecord) {
150 json_object_set_new(JT_details,
"recordingId", json_string(r.getDetail(
"recordingId").c_str()));
152 else if (r == Activity::kLive) {
155 else if (r == Activity::kEAS) {
164 static void JsonDecode(json_t * parent, Activity& r)
168 json_t *JT_activity = parent;
170 json_t *JT_name = json_object_get(JT_activity,
"name");
171 const char * name = json_string_value(JT_name);
172 std::cout <<
"[DEC][Activity] name = "<< name << std::endl;
176 json_t *JT_details = json_object_get(JT_activity,
"details");
181 json_object_foreach(JT_details, key, value) {
182 r.addDetail(key, json_string_value(value));
183 std::cout <<
"[DEC][Details]"<< key <<
" = " << json_string_value(value) << std::endl;
189 errno_t safec_rc = -1;
191 if (stat(
"/tmp/testTRMEAS", &buf) == 0) {
192 safec_rc = strcmp_s(
"Live", strlen(
"Live"), name, &ind);
194 if((safec_rc == EOK) && (ind == 0)) {
195 std::cout <<
"Test Live Tune with EAS flag" << std::endl;
196 r.addDetail(
"eas",
"true");
217 static void JsonEncode(
const TunerReservation &r, json_t *parent)
219 json_t *JT_tunerReservation = parent;
223 if (!r.getReservationToken().empty())
224 json_object_set_new(JT_tunerReservation,
"reservationToken", json_string(r.getReservationToken().c_str()));
225 json_object_set_new(JT_tunerReservation,
"device", json_string(r.getDevice().c_str()));
226 json_object_set_new(JT_tunerReservation,
"serviceLocator", json_string(r.getServiceLocator().c_str()));
227 json_object_set_new(JT_tunerReservation,
"startTime", json_integer(r.getStartTime()));
228 json_object_set_new(JT_tunerReservation,
"duration", json_integer(r.getDuration()));
229 json_object_set_new(JT_tunerReservation,
"activity", json_object());
230 if (r.getCustomAttributes()) {
231 json_object_set(JT_tunerReservation,
"customAttributes", r.getCustomAttributes()->getObject());
235 json_object_set(JT_tunerReservation,
"customAttributes", json_null());
241 json_t *JT_activity = json_object_get(JT_tunerReservation,
"activity");
242 JsonEncode(r.getActivity(), JT_activity);
247 static void JsonDecode(json_t * parent, TunerReservation & reservation)
251 json_t *JT_reservation = parent;
253 json_t *JT_reservationToken = json_object_get(JT_reservation,
"reservationToken");
254 json_t *JT_device = json_object_get(JT_reservation,
"device");
255 json_t *JT_serviceLocator = json_object_get(JT_reservation,
"serviceLocator");
256 json_t *JT_startTime = json_object_get(JT_reservation,
"startTime");
257 json_t *JT_duration = json_object_get(JT_reservation,
"duration");
258 json_t *JT_activity = json_object_get(JT_reservation,
"activity");
259 json_t *JT_customAttributes = json_object_get(JT_reservation,
"customAttributes");
261 const char* reservationToken = json_string_value (JT_reservationToken);
262 const char* device = json_string_value (JT_device);
263 const char* serviceLocator = json_string_value (JT_serviceLocator);
264 uint64_t startTime = (JT_startTime ? json_integer_value(JT_startTime) : GetCurrentEpoch());
265 uint64_t duration = (JT_duration ? json_integer_value(JT_duration ) : std::numeric_limits<uint32_t>::min());
268 customAttributes = (JT_customAttributes ? ((!json_is_null(JT_customAttributes)) ? (
new ReservationCustomAttributes(JT_customAttributes)) : 0) : 0);
270 if (reservationToken)
271 std::cout <<
"[DEC][TunerReservation] reservationToken = " << reservationToken << std::endl;
272 std::cout <<
"[DEC][TunerReservation] device = " << device << std::endl;
273 std::cout <<
"[DEC][TunerReservation] serviceLocator = " << serviceLocator << std::endl;
274 std::cout <<
"[DEC][TunerReservation] startTime = " << startTime << std::endl;
276 std::cout <<
"[DEC][TunerReservation] duration = " << duration << std::endl;
278 std::cout <<
"[DEC][TunerReservation] duration = " <<
"[To be Adjusted]" << std::endl;
279 std::cout <<
"[DEC][TunerReservation] customAttriburtes = " << (customAttributes ?
"Present" :
"Not Present") << std::endl;
284 JsonDecode(JT_activity, activity);
286 if (JT_duration == NULL && GetSpecVersion() >
SpecVersion(2, 1)) {
288 if (activity == Activity::kLive) {
290 Assert(std::numeric_limits<int64_t>::max() > 2 * GetCurrentEpoch());
291 duration = std::numeric_limits<int64_t>::max() - 2 * GetCurrentEpoch();
295 std::cout <<
"[DEC][TunerReservation] duration [Adjusted] = " << duration << std::endl;
297 reservation = TunerReservation(device ? device :
"",
302 reservationToken ? reservationToken :
"",
322 static void JsonEncode(
const DetailedTunerState &r, json_t *parent)
324 json_t *JT_detailedTunerState = parent;
328 json_object_set_new(JT_detailedTunerState,
"state", json_string(r.getState().c_str()));
329 if (!r.getServiceLocator().empty()) {
330 json_object_set_new(JT_detailedTunerState,
"serviceLocator", json_string(r.getServiceLocator().c_str()));
331 json_object_set_new(JT_detailedTunerState,
"owners", json_object());
333 json_t *JT_owners = json_object_get(JT_detailedTunerState,
"owners");
334 const std::map<std::string, std::string> & owners = r.getOwners();
335 std::map<std::string, std::string>::const_iterator ito;
336 for (ito = owners.begin(); ito != owners.end(); ito++) {
337 json_object_set_new(JT_owners, ito->first.c_str(), json_object());
339 json_t *JT_ownersActivity = json_object_get(JT_owners, ito->first.c_str());
340 json_object_set_new(JT_ownersActivity,
"device", json_string(ito->second.c_str()));
345 if (!r.getReservedDeviceId().empty()) {
346 json_object_set_new(JT_detailedTunerState,
"reservedDeviceId", json_string(r.getReservedDeviceId().c_str()));
353 static void JsonDecode(json_t * parent, DetailedTunerState & detailedState)
356 json_t *JT_reservation = parent;
357 json_t *JT_state = json_object_get(JT_reservation,
"state");
358 json_t *JT_serviceLocator = json_object_get(JT_reservation,
"serviceLocator");
359 json_t *JT_owners = json_object_get(JT_reservation,
"owners");
360 json_t *JT_reservedDeviceId = json_object_get(JT_reservation,
"reservedDeviceId");
362 const char* state = json_string_value (JT_state);
363 const char* serviceLocator = JT_serviceLocator ? json_string_value (JT_serviceLocator) :
"";
365 std::cout <<
"[DEC][DetailedTunerState] state = " << state << std::endl;
366 if (JT_serviceLocator) {
367 std::cout <<
"[DEC][DetailedTunerState] serviceLocator = " << serviceLocator << std::endl;
369 detailedState.setState(state, serviceLocator);
377 json_object_foreach(JT_owners, key, value){
378 const char *activity = key;
379 json_t *JT_ownersActivity = value;
380 json_t *JT_ownerActivityDevice = json_object_get(JT_ownersActivity,
"device");
381 const char *device = json_string_value(JT_ownerActivityDevice);
383 std::cout <<
"[ERROR][JsonDecode : ReserveTuner] NULL Device "<< std::endl;
386 std::cout <<
"[DEC][DetailedTunerState][owners][" << activity <<
"]"
387 "[device] = " << device << std::endl;
388 detailedState.addTunerOwner(activity, device);
392 if (JT_reservedDeviceId) {
393 const char* reservedDeviceId = json_string_value (JT_reservedDeviceId);
394 detailedState.setReservedDeviceId(reservedDeviceId);
395 std::cout <<
"[DEC][DetailedTunerState] reservedDeviceId = " << reservedDeviceId << std::endl;
398 std::cout <<
"[DEC][DetailedTunerState] reservedDeviceId = " <<
"NONE" << std::endl;
402 int JsonDecode(
const std::vector<uint8_t> &in, Enum<Klass> &klass)
406 json_t * parent = json_loadb((
const char *)&in[0], in.size(), JSON_DISABLE_EOF_CHECK, &error);
409 json_dump_error(
"Load Error", error);
416 json_object_foreach(parent, key, value){
418 Assert(json_object_size(parent) == 1);
419 klass = Klass(key).getClass();
434 void JsonEncode(
const ReserveTuner &r, std::vector<uint8_t> &out)
436 json_t * parent = json_object();
440 json_object_set_new(parent, r.getClassName().c_str(), json_object());
444 json_t *JT_reserveTuner = json_object_get(parent, r.getClassName().c_str());
446 json_object_set_new(JT_reserveTuner,
"requestId", json_string(r.getUUID().c_str()));
447 json_object_set_new(JT_reserveTuner,
"device", json_string(r.getDevice().c_str()));
448 json_object_set_new(JT_reserveTuner,
"tunerReservation", json_object());
449 json_object_set_new(JT_reserveTuner,
"resurrect", json_string(r.getResurrect().c_str()));
453 JsonEncode(r.getTunerReservation(), json_object_get(JT_reserveTuner,
"tunerReservation"));
459 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
463 void JsonDecode(
int handle, ReserveTuner & message)
465 json_t * parent = (json_t *)handle;
468 std::cout <<
"[ERROR][JsonDecode : ReserveTuner] NULL Handle "<< std::endl;
475 json_object_foreach(parent, key, value){
476 Assert(json_object_size(parent) == 1);
477 json_t *JT_reserveTuner = value;
479 json_t *JT_requestId = json_object_get(JT_reserveTuner,
"requestId");
480 json_t *JT_device = json_object_get(JT_reserveTuner,
"device");
481 json_t *JT_tunerReservation = json_object_get(JT_reserveTuner,
"tunerReservation");
482 json_t *JT_resurrect = json_object_get(JT_reserveTuner,
"resurrect");
484 const char *requestId = json_string_value(JT_requestId);
485 const char *device = json_string_value(JT_device);
486 const char *resurrect = (JT_resurrect ? json_string_value(JT_resurrect) :
"false");
488 Assert(resurrect != 0);
490 std::cout <<
"[ERROR][JsonDecode : ReserveTuner] NULL Device "<< std::endl;
493 std::cout <<
"[DEC][ReserveTuner] requestId = "<< requestId << std::endl;
494 std::cout <<
"[DEC][ReserveTuner] device = " << device << std::endl;
495 std::cout <<
"[DEC][ReserveTuner] resurrect = "<< resurrect << std::endl;
498 TunerReservation tunerReservation;
499 JsonDecode(JT_tunerReservation, tunerReservation);
500 message = ReserveTuner(requestId, device, tunerReservation,resurrect);
518 void JsonEncode(
const ReserveTunerResponse &r, std::vector<uint8_t> &out)
520 json_t * parent = json_object();
524 json_object_set_new(parent, r.getClassName().c_str(), json_object());
528 json_t *JT_reserveTunerResponse = json_object_get(parent, r.getClassName().c_str());
530 json_object_set_new(JT_reserveTunerResponse,
"requestId", json_string(r.getUUID().c_str()));
531 json_object_set_new(JT_reserveTunerResponse,
"status", json_string(r.getStatus().getStatusCode()));
532 json_object_set_new(JT_reserveTunerResponse,
"statusMessage", json_string(r.getStatus().getDetails().c_str()));
533 if(!r.getTunerReservation().getReservationToken().empty())
534 json_object_set_new(JT_reserveTunerResponse,
"tunerReservation",json_object());
535 if(r.getConflicts().size())
536 json_object_set_new(JT_reserveTunerResponse,
"conflicts",json_array());
540 json_t *JT_tunerReservation = json_object_get(JT_reserveTunerResponse,
"tunerReservation");
541 if (JT_tunerReservation) {
542 JsonEncode(r.getTunerReservation(), JT_tunerReservation);
548 json_t *JT_conflicts = json_object_get(JT_reserveTunerResponse,
"conflicts");
551 typedef ReserveTunerResponse::ConflictCT ConflictsCT;
552 typedef ReserveTunerResponse::ReservationCT ReservationCT;
554 const ConflictsCT & conflicts = r.getConflicts();
555 ConflictsCT::const_iterator itc;
556 for (itc = conflicts.begin(); itc != conflicts.end(); itc++) {
557 json_t *JT_singleReservation = json_object();
558 JsonEncode(*itc, JT_singleReservation);
559 json_array_append_new(JT_conflicts, JT_singleReservation);
567 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
571 void JsonDecode(
int handle, ReserveTunerResponse & message)
573 json_t * parent = (json_t *)handle;
576 std::cout <<
"[ERROR][JsonDecode : ReserveTunerResponse] NULL Handle "<< std::endl;
583 json_object_foreach(parent, key, value){
585 Assert(json_object_size(parent) == 1);
586 json_t *JT_reserveTunerResponse = value;
588 json_t *JT_requestId = json_object_get(JT_reserveTunerResponse,
"requestId");
589 json_t *JT_status = json_object_get(JT_reserveTunerResponse,
"status");
590 json_t *JT_statusMessage = json_object_get(JT_reserveTunerResponse,
"statusMessage");
591 json_t *JT_tunerReservation = json_object_get(JT_reserveTunerResponse,
"tunerReservation");
592 json_t *JT_conflicts = json_object_get(JT_reserveTunerResponse,
"conflicts");
594 const char *requestId = json_string_value(JT_requestId);
595 const char *status = json_string_value(JT_status);
596 const char *statusMessage = json_string_value(JT_statusMessage);
599 std::cout <<
"[DEC][ReserveTunerResponse] requestId = " << requestId << std::endl;
602 std::cout <<
"[DEC][ReserveTunerResponse] status = " << status << std::endl;
604 if (JT_statusMessage) {
605 std::cout <<
"[DEC][ReserveTunerResponse] statusMessage = " << statusMessage<< std::endl;
607 if (JT_tunerReservation){
608 TunerReservation tunerReservation;
609 JsonDecode(JT_tunerReservation, tunerReservation);
611 message = ReserveTunerResponse(requestId, ResponseStatus(status, statusMessage), tunerReservation);
614 message = ReserveTunerResponse(requestId, ResponseStatus(status, statusMessage), TunerReservation());
618 int numOfConflicts = json_array_size(JT_conflicts);
620 for (
int i = 0; i < numOfConflicts; i++) {
621 json_t *JT_singleReservation = json_array_get(JT_conflicts, i);
622 if (JT_singleReservation) {
623 TunerReservation tunerReservation;
624 JsonDecode(JT_singleReservation, tunerReservation);
625 message.addConflict(tunerReservation);
651 static void JsonEncode(
const SimpleTRMRequest &r, json_t *parent)
653 json_t *JT_simpleRequest = parent;
657 json_object_set_new(JT_simpleRequest,
"requestId", json_string(r.getUUID().c_str()));
658 if (!r.getDevice().empty())
659 json_object_set_new(JT_simpleRequest,
"device", json_string(r.getDevice().c_str()));
660 if (!r.getReservationToken().empty())
661 json_object_set_new(JT_simpleRequest,
"reservationToken", json_string(r.getReservationToken().c_str()));
665 static void JsonEncode(
const SimpleTRMRequest & r, std::vector<uint8_t> &out,
int)
667 json_t * parent = json_object();
671 json_object_set_new(parent, r.getClassName().c_str(), json_object());
672 json_t *JT_request = json_object_get(parent, r.getClassName().c_str());
676 JsonEncode(r, JT_request);
680 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
685 static void JsonDecode(json_t *parent, SimpleTRMRequest & message)
693 json_t *JT_simpleRequest = parent;
695 json_t *JT_requestId = json_object_get(JT_simpleRequest,
"requestId");
696 json_t *JT_device = json_object_get(JT_simpleRequest,
"device");
697 json_t *JT_reservationToken = json_object_get(JT_simpleRequest,
"reservationToken");
699 const char *requestId = json_string_value(JT_requestId);
700 const char *device = json_string_value(JT_device);
701 const char *reservationToken = json_string_value(JT_reservationToken);
702 std::cout <<
"[DEC][" << SimpleTRMRequest::klassName() <<
"]requestId = " << requestId << std::endl;
703 std::cout <<
"[DEC][" << SimpleTRMRequest::klassName() <<
"]device : " << (device != 0 ? device :
"") << std::endl;
704 if (reservationToken != 0)
705 std::cout <<
"[DEC][" << SimpleTRMRequest::klassName() <<
"]reservationToken = " << reservationToken << std::endl;
707 message = SimpleTRMRequest(message.getClassName(), requestId, (device != 0 ? device :
""), (reservationToken != 0 ? reservationToken :
""));
712 static void JsonDecode(
int handle, SimpleTRMRequest & message,
int)
714 json_t * parent = (json_t *)handle;
722 json_object_foreach(parent, key, value) {
724 Assert(json_object_size(parent) == 1);
725 json_t *JT_simpleRequest = value;
727 JsonDecode(JT_simpleRequest, message);
734 void JsonEncode(
const ReleaseTunerReservation & r, std::vector<uint8_t> &out)
736 JsonEncode(r, out, 0);
739 void JsonDecode(
int handle, ReleaseTunerReservation & message)
741 JsonDecode(handle, message, 0);
744 void JsonEncode(
const ValidateTunerReservation & r, std::vector<uint8_t> &out)
746 JsonEncode(r, out, 0);
749 void JsonDecode(
int handle, ValidateTunerReservation & message)
751 JsonDecode(handle, message, 0);
754 void JsonEncode(
const CancelRecording & r, std::vector<uint8_t> &out)
756 JsonEncode(r, out, 0);
759 void JsonDecode(
int handle, CancelRecording & message)
761 JsonDecode(handle, message, 0);
782 static void JsonEncode(
const SimpleTRMResponse &r, json_t *parent)
784 json_t *JT_simpleResponse = parent;
787 json_object_set_new(JT_simpleResponse,
"requestId", json_string(r.getUUID().c_str()));
788 json_object_set_new(JT_simpleResponse,
"status", json_string(r.getStatus().getStatusCode()));
789 if (!r.getStatus().getDetails().empty())
790 json_object_set_new(JT_simpleResponse,
"statusMessage", json_string(r.getStatus().getDetails().c_str()));
791 if (!r.getReservationToken().empty())
792 json_object_set_new(JT_simpleResponse,
"reservationToken",json_string(r.getReservationToken().c_str()));
796 static void JsonDecode(json_t *parent, SimpleTRMResponse & message)
803 json_t *JT_simpleResponse = parent;
805 json_t *JT_requestId = json_object_get(JT_simpleResponse,
"requestId");
806 json_t *JT_status = json_object_get(JT_simpleResponse,
"status");
807 json_t *JT_statusMessage = json_object_get(JT_simpleResponse,
"statusMessage");
808 json_t *JT_reservationToken = json_object_get(JT_simpleResponse,
"reservationToken");
811 const char *requestId = json_string_value(JT_requestId);
812 const char *status = json_string_value(JT_status);
813 const char *statusMessage = json_string_value(JT_statusMessage);
814 const char *reservationToken = json_string_value(JT_reservationToken);
816 std::cout <<
"[DEC][" << SimpleTRMResponse::klassName() <<
"]requestId = " << requestId << std::endl;
817 std::cout <<
"[DEC][" << SimpleTRMResponse::klassName() <<
"]status = " << status << std::endl;
819 std::cout <<
"[DEC][" << SimpleTRMResponse::klassName() <<
"]statusMessage = " << statusMessage << std::endl;
820 if (reservationToken)
821 std::cout <<
"[DEC][" << SimpleTRMResponse::klassName() <<
"]reservationToken = " << reservationToken << std::endl;
823 message = SimpleTRMResponse(message.getClassName(), requestId, ResponseStatus(status, statusMessage == 0 ?
"" : statusMessage), reservationToken != 0 ? reservationToken :
"");
828 void JsonEncode(
const ReleaseTunerReservationResponse &r, std::vector<uint8_t> &out)
830 json_t * parent = json_object();
837 json_object_set_new(parent, r.getClassName().c_str(), json_object());
840 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
841 JsonEncode(r, JT_response);
842 json_object_set_new(JT_response,
"released",json_string(r.isReleased() ?
"true" :
"false"));
845 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
851 void JsonDecode(
int handle, ReleaseTunerReservationResponse & message)
853 json_t * parent = (json_t *)handle;
861 json_object_foreach(parent, key, value){
863 Assert(json_object_size(parent) == 1);
864 json_t *JT_simpleResponse = value;
866 JsonDecode(JT_simpleResponse, message);
867 json_t *JT_released = json_object_get(JT_simpleResponse,
"released");
868 const char *released = json_string_value(JT_released);
869 bool isReleased = (std::string(released).compare(
"true") == 0);
870 message.setReleased(isReleased);
877 void JsonEncode(
const ValidateTunerReservationResponse &r, std::vector<uint8_t> &out)
879 json_t * parent = json_object();
886 json_object_set_new(parent, r.getClassName().c_str(), json_object());
889 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
890 JsonEncode(r, JT_response);
891 json_object_set_new(JT_response,
"valid",json_string(r.isValid() ?
"true" :
"false"));
894 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
900 void JsonDecode(
int handle, ValidateTunerReservationResponse & message)
902 json_t * parent = (json_t *)handle;
910 json_object_foreach(parent, key, value){
912 Assert(json_object_size(parent) == 1);
913 json_t *JT_simpleResponse = value;
915 JsonDecode(JT_simpleResponse, message);
916 json_t *JT_valid = json_object_get(JT_simpleResponse,
"valid");
917 const char *valid = json_string_value(JT_valid);
918 bool isValid = (std::string(valid).compare(
"true") == 0);
919 message.setValid(isValid);
927 void JsonEncode(
const CancelRecordingResponse &r, std::vector<uint8_t> &out)
929 json_t * parent = json_object();
936 json_object_set_new(parent, r.getClassName().c_str(), json_object());
939 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
940 JsonEncode(r, JT_response);
941 json_object_set_new(JT_response,
"cancelled",json_string(r.isCanceled() ?
"true" :
"false"));
944 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
950 void JsonDecode(
int handle, CancelRecordingResponse & message)
952 json_t * parent = (json_t *)handle;
960 json_object_foreach(parent, key, value){
962 Assert(json_object_size(parent) == 1);
963 json_t *JT_simpleResponse = value;
965 JsonDecode(JT_simpleResponse, message);
966 json_t *JT_canceled = json_object_get(JT_simpleResponse,
"cancelled");
967 const char *canceled = JT_canceled ? json_string_value(JT_canceled) :
"";
968 bool isCanceled = (std::string(canceled).compare(
"true") == 0);
969 message.setCanceled(isCanceled);
983 void JsonEncode(
const GetAllTunerIds &r, std::vector<uint8_t> &out)
985 JsonEncode(r, out, 0);
988 void JsonDecode(
int handle, GetAllTunerIds & message)
990 JsonDecode(handle, message, 0);
1002 void JsonEncode(
const GetAllTunerIdsResponse &r, std::vector<uint8_t> &out)
1004 json_t * parent = json_object();
1011 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1014 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
1015 JsonEncode(r, JT_response);
1016 json_object_set_new(JT_response,
"tunerIds", json_array());
1019 json_t *JT_tunerIds = json_object_get(JT_response,
"tunerIds");
1020 const std::list<std::string> & tunerIds = r.getTunerIds();
1021 std::list<std::string>::const_iterator it;
1022 for (it = tunerIds.begin(); it != tunerIds.end(); it++) {
1023 json_array_append_new(JT_tunerIds, json_string(it->c_str()));
1028 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1029 json_decref(parent);
1034 void JsonDecode(
int handle, GetAllTunerIdsResponse & message)
1036 json_t * parent = (json_t *)handle;
1044 json_object_foreach(parent, key, value){
1046 Assert(json_object_size(parent) == 1);
1047 json_t *JT_simpleResponse = value;
1049 JsonDecode(JT_simpleResponse, message);
1050 json_t *JT_tunerIds = json_object_get(JT_simpleResponse,
"tunerIds");
1051 int numOfTuners = json_array_size(JT_tunerIds);
1052 for (
int i = 0; i < numOfTuners; i++) {
1053 json_t *JT_id = json_array_get(JT_tunerIds, i);
1054 message.addTunerId(json_string_value(JT_id));
1058 json_decref(parent);
1062 void JsonEncode(
const GetAllTunerStates &r, std::vector<uint8_t> &out)
1064 JsonEncode(r, out, 0);
1067 void JsonDecode(
int handle, GetAllTunerStates & message)
1069 JsonDecode(handle, message, 0);
1087 void JsonEncode(
const GetAllTunerStatesResponse &r, std::vector<uint8_t> &out)
1089 json_t * parent = json_object();
1096 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1099 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
1100 JsonEncode(r, JT_response);
1101 json_object_set_new(JT_response,
"allStates", json_object());
1104 json_t *JT_states = json_object_get(JT_response,
"allStates");
1105 const std::map<std::string, std::string> & tunerStates = r.getTunerStates();
1106 std::map<std::string, std::string>::const_iterator it;
1107 for (it = tunerStates.begin(); it != tunerStates.end(); it++) {
1108 json_object_set_new(JT_states, it->first.c_str(), json_string(it->second.c_str()));
1112 json_object_set_new(JT_response,
"detailedStates", json_object());
1114 json_t *JT_detailedStates = json_object_get(JT_response,
"detailedStates");
1115 const std::map<std::string, DetailedTunerState> & tunerDetailedStates = r.getTunerDetailedStates();
1116 std::map<std::string, DetailedTunerState>::const_iterator it;
1117 for (it = tunerDetailedStates.begin(); it != tunerDetailedStates.end(); it++) {
1119 json_object_set_new(JT_detailedStates, it->first.c_str(), json_object());
1121 json_t *JT_detailedTunerState = json_object_get(JT_detailedStates, it->first.c_str());
1123 JsonEncode(it->second, JT_detailedTunerState);
1130 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1131 json_decref(parent);
1136 void JsonDecode(
int handle, GetAllTunerStatesResponse & message)
1138 json_t * parent = (json_t *)handle;
1146 json_object_foreach(parent, key, value){
1148 Assert(json_object_size(parent) == 1);
1149 json_t *JT_simpleResponse = value;
1151 JsonDecode(JT_simpleResponse, message);
1152 json_t *JT_states = json_object_get(JT_simpleResponse,
"allStates");
1155 const char *stateKey;
1157 json_object_foreach(JT_states, stateKey, stateValue){
1158 message.addTunerState(stateKey, json_string_value(stateValue));
1161 json_t *JT_detailedStates = json_object_get(JT_simpleResponse,
"detailedStates");
1165 json_object_foreach(JT_detailedStates, key, value){
1167 const char *&tunerId = key;
1168 json_t *&JT_detailedState = value;
1170 DetailedTunerState detailedState;
1171 JsonDecode(JT_detailedState, detailedState);
1172 message.addTunerState(tunerId, detailedState.getState(), detailedState.getServiceLocator(), detailedState.getReservedDeviceId());
1173 std::map<std::string, std::string>::const_iterator owners_it = detailedState.getOwners().begin();
1174 for (owners_it = detailedState.getOwners().begin(); owners_it != detailedState.getOwners().end(); owners_it++)
1176 message.addTunerOwner(tunerId, owners_it->first, owners_it->second);
1183 json_decref(parent);
1203 void JsonEncode(
const GetAllReservations &r, std::vector<uint8_t> &out)
1205 json_t * parent = json_object();
1212 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1215 json_t *JT_request = json_object_get(parent, r.getClassName().c_str());
1216 JsonEncode(r, JT_request);
1217 json_object_set_new(JT_request,
"filters", json_array());
1219 json_t *JT_filters = json_object_get(JT_request,
"filters");
1221 const std::map<std::string, std::string> filters = r.getFilters();
1222 std::map<std::string, std::string>::const_iterator it = filters.begin();
1223 for (it = filters.begin(); it != filters.end(); it++) {
1224 json_t *JT_singleFilter = json_object();
1225 json_object_set_new(JT_singleFilter, it->first.c_str(), json_string(it->second.c_str()));
1226 json_array_append_new(JT_filters, JT_singleFilter);
1232 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1233 json_decref(parent);
1237 void JsonDecode(
int handle, GetAllReservations & message)
1239 json_t * parent = (json_t *)handle;
1247 json_object_foreach(parent, key, value){
1249 Assert(json_object_size(parent) == 1);
1250 json_t *JT_simpleRequest = value;
1252 JsonDecode(JT_simpleRequest, message);
1253 json_t *JT_filters = json_object_get(JT_simpleRequest,
"filters");
1255 size_t numOfFilters = json_array_size(JT_filters);
1256 for (
int i = 0; i < (int)numOfFilters; i++) {
1257 json_t *JT_singleFilter = json_array_get(JT_filters, i);
1258 json_t *JT_deviceFilter = json_object_get(JT_singleFilter,
"device");
1259 json_t *JT_activityFilter = json_object_get(JT_singleFilter,
"activity");
1260 json_t *JT_stateFilter = json_object_get(JT_singleFilter,
"state");
1262 if (JT_deviceFilter) {
1263 const char * device = json_string_value(JT_deviceFilter);
1264 message.addFilter(
"device", device);
1266 if (JT_activityFilter) {
1267 json_t *JT_activityFilter_name = json_object_get(JT_activityFilter,
"name");
1268 if (JT_activityFilter_name) {
1269 const char * activity = json_string_value(JT_activityFilter_name);
1270 message.addFilter(
"activity", activity);
1273 if (JT_stateFilter) {
1274 const char * state = json_string_value(JT_stateFilter);
1275 message.addFilter(
"state", state);
1282 json_decref(parent);
1301 void JsonEncode(
const GetAllReservationsResponse &r, std::vector<uint8_t> &out)
1303 json_t * parent = json_object();
1310 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1313 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
1314 JsonEncode(r, JT_response);
1315 json_object_set_new(JT_response,
"allReservations", json_object());
1318 json_t *JT_allReservations = json_object_get(JT_response,
"allReservations");
1319 const std::map<std::string, std::list<TunerReservation> > & allReservations = r.getAllReservations();
1320 std::map<std::string, std::list<TunerReservation> >::const_iterator itm;
1321 for (itm = allReservations.begin(); itm != allReservations.end(); itm++) {
1322 json_object_set_new(JT_allReservations, itm->first.c_str(), json_array());
1324 json_t *JT_reservations = json_object_get(JT_allReservations, itm->first.c_str());
1325 const std::list<TunerReservation> &reservations = itm->second;
1326 std::list<TunerReservation>::const_iterator itl;
1327 for (itl = reservations.begin(); itl != reservations.end(); itl++) {
1328 json_t *JT_singleReservation = json_object();
1329 JsonEncode(*itl, JT_singleReservation);
1330 json_array_append_new(JT_reservations, JT_singleReservation);
1337 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1338 json_decref(parent);
1343 void JsonDecode(
int handle, GetAllReservationsResponse & message)
1345 json_t * parent = (json_t *)handle;
1353 json_object_foreach(parent, key, value){
1355 Assert(json_object_size(parent) == 1);
1356 json_t *JT_simpleResponse = value;
1358 JsonDecode(JT_simpleResponse, message);
1359 json_t *JT_allReservations = json_object_get(JT_simpleResponse,
"allReservations");
1362 const char *tunerId;
1363 json_t *JT_reservations;
1364 json_object_foreach(JT_allReservations, tunerId, JT_reservations){
1365 int numOfReservations = json_array_size(JT_reservations);
1366 for (
int i = 0; i < numOfReservations; i++) {
1367 json_t *JT_singleReservation = json_array_get(JT_reservations, i);
1368 TunerReservation singleReservation;
1369 JsonDecode(JT_singleReservation, singleReservation);
1370 message.addTunerReservation(tunerId, singleReservation);
1376 json_decref(parent);
1380 void JsonEncode(
const GetVersion &r, std::vector<uint8_t> &out)
1382 JsonEncode(r, out, 0);
1385 void JsonDecode(
int handle, GetVersion & message)
1387 JsonDecode(handle, message, 0);
1390 void JsonEncode(
const GetVersionResponse &r, std::vector<uint8_t> &out)
1392 json_t * parent = json_object();
1399 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1402 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
1403 JsonEncode(r, JT_response);
1404 json_object_set_new(JT_response,
"version",json_string(r.getVersion().c_str()));
1407 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1408 json_decref(parent);
1412 void JsonDecode(
int handle, GetVersionResponse & message)
1414 json_t * parent = (json_t *)handle;
1422 json_object_foreach(parent, key, value){
1424 Assert(json_object_size(parent) == 1);
1425 json_t *JT_simpleResponse = value;
1427 JsonDecode(JT_simpleResponse, message);
1428 json_t *JT_version = json_object_get(JT_simpleResponse,
"version");
1429 const char *version = json_string_value(JT_version);
1430 message.setVersion(version);
1433 json_decref(parent);
1437 void JsonEncode(
const UpdateTunerActivityStatusResponse &r, std::vector<uint8_t> &out)
1439 json_t * parent = json_object();
1447 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1450 json_t *JT_UpdateTunerActivityResponse = json_object_get(parent, r.getClassName().c_str());
1451 json_object_set_new(JT_UpdateTunerActivityResponse,
"requestId", json_string(r.getUUID().c_str()));
1452 json_object_set_new(JT_UpdateTunerActivityResponse,
"status", json_string(r.getStatus().getStatusCode()));
1453 if (!r.getStatus().getDetails().empty())
1454 json_object_set_new(JT_UpdateTunerActivityResponse,
"statusMessage", json_string(r.getStatus().getDetails().c_str()));
1457 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1458 json_decref(parent);
1462 void JsonEncode(
const UpdateTunerActivityStatus &r, std::vector<uint8_t> &out)
1464 json_t * parent = json_object();
1472 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1475 json_t *JT_notification = json_object_get(parent, r.getClassName().c_str());
1476 json_object_set_new(JT_notification,
"requestId", json_string(r.getUUID().c_str()));
1477 json_object_set_new(JT_notification,
"device", json_string(r.getDevice().c_str()));
1478 json_object_set_new(JT_notification,
"tunerActivityStatus", json_string(r.getTunerActivityStatus().c_str()));
1479 json_object_set_new(JT_notification,
"lastActivityTimeStamp", json_string(r.getLastActivityTimeStamp().c_str()));
1480 json_object_set_new(JT_notification,
"lastActivityAction", json_string(r.getLastActivityAction().c_str()));
1483 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1484 json_decref(parent);
1488 void JsonDecode(
int handle, UpdateTunerActivityStatus & message)
1490 json_t * parent = (json_t *)handle;
1498 json_object_foreach(parent, key, value){
1500 Assert(json_object_size(parent) == 1);
1501 json_t *JT_notification = value;
1503 json_t *JT_requestId = json_object_get(JT_notification,
"requestId");
1504 json_t *JT_device = json_object_get(JT_notification,
"device");
1505 json_t *JT_activity = json_object_get(JT_notification,
"tunerActivityStatus");
1506 json_t *JT_lastActivityTS = json_object_get(JT_notification,
"lastActivityTimeStamp");
1507 json_t *JT_lastActivityAction = json_object_get(JT_notification,
"lastActivityAction");
1510 const char *requestId = json_string_value(JT_requestId);
1511 const char *device = json_string_value(JT_device);
1512 const char *activity = json_string_value(JT_activity);
1513 const char *lastActivityTS = json_string_value(JT_lastActivityTS);
1514 const char *lastActivityAction = json_string_value(JT_lastActivityAction);
1516 Assert(requestId != 0);
1517 Assert(device != 0);
1518 Assert(activity != 0);
1519 if(lastActivityTS == NULL ) lastActivityTS =
"";
1520 if(lastActivityAction == NULL ) lastActivityAction =
"";
1522 std::cout <<
"[DEC][" << UpdateTunerActivityStatus::klassName() <<
"]requestId = " << requestId << std::endl;
1523 std::cout <<
"[DEC][" << UpdateTunerActivityStatus::klassName() <<
"]device = " << device << std::endl;
1525 std::cout <<
"[DEC][" << UpdateTunerActivityStatus::klassName() <<
"]tunerActivityStatus = " << activity << std::endl;
1526 std::cout <<
"[DEC][" << UpdateTunerActivityStatus::klassName() <<
"]lastActivityTimeStamp = " << lastActivityTS << std::endl;
1527 std::cout <<
"[DEC][" << UpdateTunerActivityStatus::klassName() <<
"]lastActivityAction = " << lastActivityAction << std::endl;
1529 message = UpdateTunerActivityStatus(requestId,device,activity,lastActivityTS,lastActivityAction);
1533 json_decref(parent);
1547 void JsonEncode(
const NotifyTunerReservationRelease &r, std::vector<uint8_t> &out)
1549 json_t * parent = json_object();
1556 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1559 json_t *JT_notification = json_object_get(parent, r.getClassName().c_str());
1560 json_object_set_new(JT_notification,
"requestId", json_string(r.getUUID().c_str()));
1561 json_object_set_new(JT_notification,
"reservationToken", json_string(r.getReservationToken().c_str()));
1562 json_object_set_new(JT_notification,
"reason", json_string(r.getReason().c_str()));
1565 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1566 json_decref(parent);
1570 void JsonDecode(
int handle, NotifyTunerReservationRelease & message)
1572 json_t * parent = (json_t *)handle;
1580 json_object_foreach(parent, key, value){
1582 Assert(json_object_size(parent) == 1);
1583 json_t *JT_notification = value;
1585 json_t *JT_requestId = json_object_get(JT_notification,
"requestId");
1586 json_t *JT_reservationToken = json_object_get(JT_notification,
"reservationToken");
1587 json_t *JT_reason = json_object_get(JT_notification,
"reason");
1590 const char *requestId = json_string_value(JT_requestId);
1591 const char *reservationToken = json_string_value(JT_reservationToken);
1592 const char *reason = json_string_value(JT_reason);
1594 Assert(requestId != 0);
1595 Assert(reservationToken != 0);
1596 Assert(reason != 0);
1598 std::cout <<
"[DEC][" << NotifyTunerReservationRelease::klassName() <<
"]requestId = " << requestId << std::endl;
1599 std::cout <<
"[DEC][" << NotifyTunerReservationRelease::klassName() <<
"]reservationToken = " << reservationToken << std::endl;
1600 std::cout <<
"[DEC][" << NotifyTunerReservationRelease::klassName() <<
"]reason = " << reason << std::endl;
1602 message = NotifyTunerReservationRelease(requestId, reservationToken, reason);
1605 json_decref(parent);
1616 void JsonEncode(
const NotifyTunerReservationUpdate &r, std::vector<uint8_t> &out)
1618 json_t * parent = json_object();
1625 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1628 json_t *JT_notification = json_object_get(parent, r.getClassName().c_str());
1629 json_object_set_new(JT_notification,
"requestId", json_string(r.getUUID().c_str()));
1630 json_object_set_new(JT_notification,
"tunerReservation", json_object());
1634 JsonEncode(r.getTunerReservation(), json_object_get(JT_notification,
"tunerReservation"));
1638 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1639 json_decref(parent);
1643 void JsonDecode(
int handle, NotifyTunerReservationUpdate & message)
1645 json_t * parent = (json_t *)handle;
1653 json_object_foreach(parent, key, value){
1655 Assert(json_object_size(parent) == 1);
1656 json_t *JT_notification = value;
1658 json_t *JT_requestId = json_object_get(JT_notification,
"requestId");
1659 json_t *JT_tunerReservation = json_object_get(JT_notification,
"tunerReservation");
1661 const char *requestId = json_string_value(JT_requestId);
1662 Assert(requestId != 0);
1665 std::cout <<
"[DEC][" << NotifyTunerReservationUpdate::klassName() <<
"]requestId = " << requestId << std::endl;
1668 if (JT_tunerReservation){
1669 TunerReservation tunerReservation;
1670 JsonDecode(JT_tunerReservation, tunerReservation);
1671 message = NotifyTunerReservationUpdate(requestId, tunerReservation);
1675 json_decref(parent);
1687 void JsonEncode(
const NotifyTunerReservationConflicts &r, std::vector<uint8_t> &out)
1689 json_t * parent = json_object();
1696 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1699 json_t *JT_notification = json_object_get(parent, r.getClassName().c_str());
1700 json_object_set_new(JT_notification,
"requestId", json_string(r.getUUID().c_str()));
1701 json_object_set_new(JT_notification,
"tunerReservation", json_object());
1702 if(r.getConflicts().size())
1703 json_object_set_new(JT_notification,
"conflicts", json_array());
1707 JsonEncode(r.getTunerReservation(), json_object_get(JT_notification,
"tunerReservation"));
1709 json_t *JT_conflicts = json_object_get(JT_notification,
"conflicts");
1712 typedef NotifyTunerReservationConflicts::ConflictCT ConflictsCT;
1714 const ConflictsCT & conflicts = r.getConflicts();
1715 ConflictsCT::const_iterator itc;
1716 for (itc = conflicts.begin(); itc != conflicts.end(); itc++) {
1717 json_t *JT_singleReservation = json_object();
1718 JsonEncode(*itc, JT_singleReservation);
1719 json_array_append_new(JT_conflicts, JT_singleReservation);
1725 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1726 json_decref(parent);
1730 void JsonDecode(
int handle, NotifyTunerReservationConflicts & message)
1732 json_t * parent = (json_t *)handle;
1740 json_object_foreach(parent, key, value){
1743 Assert(json_object_size(parent) == 1);
1744 json_t *JT_notification = value;
1746 json_t *JT_requestId = json_object_get(JT_notification,
"requestId");
1747 json_t *JT_tunerReservation = json_object_get(JT_notification,
"tunerReservation");
1748 json_t *JT_conflicts = json_object_get(JT_notification,
"conflicts");
1750 const char *requestId = json_string_value(JT_requestId);
1753 std::cout <<
"[DEC][NotifyTunerReservationConflicts] requestId = " << requestId << std::endl;
1756 if (JT_tunerReservation){
1757 TunerReservation tunerReservation;
1758 JsonDecode(JT_tunerReservation, tunerReservation);
1759 message = NotifyTunerReservationConflicts(requestId, tunerReservation);
1764 int numOfConflicts = json_array_size(JT_conflicts);
1766 for (
int i = 0; i < numOfConflicts; i++) {
1767 json_t *JT_singleReservation = json_array_get(JT_conflicts, i);
1768 if (JT_singleReservation) {
1769 TunerReservation tunerReservation;
1770 JsonDecode(JT_singleReservation, tunerReservation);
1771 message.addConflict(tunerReservation);
1777 json_decref(parent);
1788 void JsonEncode(
const NotifyTunerStatesUpdate &r, std::vector<uint8_t> &out)
1790 json_t * parent = json_object();
1797 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1800 json_t *JT_notification = json_object_get(parent, r.getClassName().c_str());
1801 json_object_set_new(JT_notification,
"requestId", json_string(r.getUUID().c_str()));
1802 json_object_set_new(JT_notification,
"detailedStates", json_object());
1805 json_t *JT_detailedStates = json_object_get(JT_notification,
"detailedStates");
1806 const std::map<std::string, DetailedTunerState> & tunerDetailedStates = r.getTunerDetailedStates();
1807 std::map<std::string, DetailedTunerState>::const_iterator it;
1808 for (it = tunerDetailedStates.begin(); it != tunerDetailedStates.end(); it++) {
1810 json_object_set_new(JT_detailedStates, it->first.c_str(), json_object());
1812 json_t *JT_detailedTunerState = json_object_get(JT_detailedStates, it->first.c_str());
1814 JsonEncode(it->second, JT_detailedTunerState);
1822 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1823 json_decref(parent);
1827 void JsonDecode(
int handle, NotifyTunerStatesUpdate & message)
1829 json_t * parent = (json_t *)handle;
1837 json_object_foreach(parent, key, value){
1839 Assert(json_object_size(parent) == 1);
1840 json_t *JT_notification = value;
1842 json_t *JT_requestId = json_object_get(JT_notification,
"requestId");
1844 const char *requestId = json_string_value(JT_requestId);
1845 std::cout <<
"[DEC][NotifyTunerStatesUpdate] requestId = " << requestId << std::endl;
1848 json_t *JT_detailedStates = json_object_get(JT_notification,
"detailedStates");
1849 const char *tunerId;
1850 json_t *JT_detailedState;
1851 json_object_foreach(JT_detailedStates, tunerId, JT_detailedState){
1852 DetailedTunerState detailedState;
1853 JsonDecode(JT_detailedState, detailedState);
1854 message.addTunerDetailedState(tunerId, detailedState);
1858 json_decref(parent);
1869 void JsonEncode(
const NotifyTunerPretune &r, std::vector<uint8_t> &out)
1871 json_t * parent = json_object();
1878 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1881 json_t *JT_notification = json_object_get(parent, r.getClassName().c_str());
1882 json_object_set_new(JT_notification,
"requestId", json_string(r.getUUID().c_str()));
1883 json_object_set_new(JT_notification,
"serviceLocator", json_string(r.getServiceLocator().c_str()));
1886 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1887 json_decref(parent);
1891 void JsonDecode(
int handle, NotifyTunerPretune & message)
1893 json_t * parent = (json_t *)handle;
1901 json_object_foreach(parent, key, value){
1903 Assert(json_object_size(parent) == 1);
1904 json_t *JT_notification = value;
1906 json_t *JT_requestId = json_object_get(JT_notification,
"requestId");
1907 json_t *JT_serviceLocator = json_object_get(JT_notification,
"serviceLocator");
1908 json_t *JT_reason = json_object_get(JT_notification,
"reason");
1911 const char *requestId = json_string_value(JT_requestId);
1912 const char *serviceLocator = json_string_value(JT_serviceLocator);
1914 Assert(requestId != 0);
1915 Assert(serviceLocator != 0);
1917 std::cout <<
"[DEC][" << NotifyTunerPretune::klassName() <<
"]requestId = " << requestId << std::endl;
1918 std::cout <<
"[DEC][" << NotifyTunerPretune::klassName() <<
"]serviceLocator = " << serviceLocator << std::endl;
1920 message = NotifyTunerPretune(requestId, serviceLocator);
1923 json_decref(parent);
1927 void JsonEncode(
const CancelLiveResponse &r, std::vector<uint8_t> &out)
1929 json_t * parent = json_object();
1936 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1939 json_t *JT_cancelLiveResponse = json_object_get(parent, r.getClassName().c_str());
1940 JsonEncode(r, JT_cancelLiveResponse);
1941 json_object_set_new(JT_cancelLiveResponse,
"cancelled",json_string(r.isCanceled() ?
"true" :
"false"));
1944 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
1945 json_decref(parent);
1950 void JsonDecode(
int handle, CancelLiveResponse & message)
1952 json_t * parent = (json_t *)handle;
1960 json_object_foreach(parent, key, value){
1962 Assert(json_object_size(parent) == 1);
1963 json_t *JT_cancelLiveResponse = value;
1965 JsonDecode(JT_cancelLiveResponse, message);
1966 json_t *JT_canceled = json_object_get(JT_cancelLiveResponse,
"cancelled");
1967 const char *canceled = JT_canceled ? json_string_value(JT_canceled) :
"";
1968 bool isCanceled = (std::string(canceled).compare(
"true") == 0);
1969 message.setCanceled(isCanceled);
1972 json_decref(parent);
1985 void JsonEncode(
const CancelLive &r, std::vector<uint8_t> &out)
1987 json_t * parent = json_object();
1991 json_object_set_new(parent, r.getClassName().c_str(), json_object());
1995 json_t *JT_cancelLive = json_object_get(parent, r.getClassName().c_str());
1996 JsonEncode(r, JT_cancelLive);
1997 json_object_set_new(JT_cancelLive,
"serviceLocator", json_string(r.getServiceLocator().c_str()));
2002 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
2003 json_decref(parent);
2006 void JsonDecode(
int handle, CancelLive & message)
2008 json_t * parent = (json_t *)handle;
2012 std::cout <<
"[ERROR][JsonDecode : CancelLive] NULL Handle "<< std::endl;
2019 json_object_foreach(parent, key, value){
2020 Assert(json_object_size(parent) == 1);
2021 json_t *JT_cancelLive = value;
2023 JsonDecode(JT_cancelLive, message);
2024 json_t *JT_serviceLocator = json_object_get(JT_cancelLive,
"serviceLocator");
2026 const char *serviceLocator = json_string_value(JT_serviceLocator);
2027 std::cout <<
"[DEC][CanceLive] serviceLocator = "<< serviceLocator << std::endl;
2028 message.setServiceLocator(serviceLocator);
2031 json_decref(parent);
2038 int JsonDecode(
const std::vector<uint8_t> &in, GenerateAuthTokenResponse &response)
2042 if (in.size() == 0) {
2043 std::cout <<
"[DEC][GenerateAuthTokenResponse]: Parsing Error, size 0" << std::endl;
2047 json_t * parent = json_loadb((
const char *)&in[0], in.size(), JSON_DISABLE_EOF_CHECK, &error);
2050 json_dump_error(
"Load Error", error);
2054 json_t *JT_result = json_object_get(parent,
"result");
2055 json_t *JT_data = json_object_get(parent,
"data");
2057 const char* result = json_string_value (JT_result);
2061 json_t *JT_data_deviceId = json_object_get(JT_data,
"deviceId");
2062 json_t *JT_data_authToken = json_object_get(JT_data,
"authToken");
2064 if (JT_data_deviceId) {
2065 response.deviceId = (json_string_value (JT_data_deviceId));
2067 if (JT_data_authToken) {
2068 response.authToken = (json_string_value (JT_data_authToken));
2073 json_decref(parent);
2077 int JsonDecode(
const std::vector<uint8_t> &in, GenerateAuthTokenResponseFromAuthService &response)
2081 if (in.size() == 0) {
2082 std::cout <<
"[DEC][GenerateAuthTokenResponseFromAuthService]: Parsing Error, size 0" << std::endl;
2086 json_t * parent = json_loadb((
const char *)&in[0], in.size(), JSON_DISABLE_EOF_CHECK, &error);
2089 json_dump_error(
"Load Error", error);
2093 json_t *JT_deviceId = json_object_get(parent,
"deviceId");
2094 json_t *JT_partnerId = json_object_get(parent,
"partnerId");
2098 response.deviceId = (json_string_value (JT_deviceId));
2101 response.partnerId = (json_string_value (JT_partnerId));
2105 json_decref(parent);
2109 std::string GetDeviceId()
2111 static std::string deviceId;
2113 FILE *deviceIdScript = NULL;
2114 char scriptoutput[SCRIPT_OUTPUT_BUFFER_SIZE] = {0};
2115 if (!deviceId.empty())
return deviceId;
2116 deviceIdScript = popen(DEVICEID_SCRIPT_PATH,
"r");
2117 if( (NULL != deviceIdScript) && deviceId.empty() ){
2118 if(fgets(scriptoutput,SCRIPT_OUTPUT_BUFFER_SIZE,deviceIdScript)!=NULL){
2119 std::string jsonResponse_(scriptoutput);
2120 std::vector<uint8_t> jsonResponse(jsonResponse_.begin(), jsonResponse_.end());
2121 GenerateAuthTokenResponseFromAuthService response;
2122 JsonDecode(jsonResponse, response);
2124 Log() <<
"AuthService::DeviceId = [" << response.deviceId <<
"]" << std::endl;
2125 deviceId = response.deviceId;
2128 if (deviceId.empty()) {
2129 static char generateTokenRequest[] =
"GET /device/generateAuthToken HTTP/1.0\r\n\r\n";
2130 std::string jsonResponse_ = GetAuthToken(generateTokenRequest);
2131 std::vector<uint8_t> jsonResponse(jsonResponse_.begin(), jsonResponse_.end());
2132 GenerateAuthTokenResponse response;
2133 JsonDecode(jsonResponse, response);
2135 Log() <<
"WhiteBox::DeviceId = [" << response.deviceId <<
"]" << std::endl;
2136 deviceId = response.deviceId;
2138 if(NULL != deviceIdScript)
2139 pclose(deviceIdScript);
2155 void JsonEncode(
const NotifyClientConnectionEvent &r, std::vector<uint8_t> &out)
2157 json_t * parent = json_object();
2164 json_object_set_new(parent, r.getClassName().c_str(), json_object());
2167 json_t *JT_notification = json_object_get(parent, r.getClassName().c_str());
2168 json_object_set_new(JT_notification,
"eventName", json_string(r.getEventName().c_str()));
2169 json_object_set_new(JT_notification,
"clientIP", json_string(r.getClientIP().c_str()));
2170 json_object_set_new(JT_notification,
"timeStamp", json_integer(r.getEventTimeStamp()));
2173 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
2174 json_decref(parent);
2178 void JsonDecode(
int handle, NotifyClientConnectionEvent & message)
2180 json_t * parent = (json_t *)handle;
2188 json_object_foreach(parent, key, value){
2190 Assert(json_object_size(parent) == 1);
2191 json_t *JT_notification = value;
2194 json_t *JT_eventName = json_object_get(JT_notification,
"eventName");
2195 json_t *JT_clientIP = json_object_get(JT_notification,
"clientIP");
2196 json_t *JT_timeStamp = json_object_get(JT_notification,
"timeStamp");
2199 const char *requestID =
"";
2200 const char *eventName = json_string_value(JT_eventName);
2201 const char *clientIP = json_string_value(JT_clientIP);
2202 uint64_t timeStamp = json_integer_value(JT_timeStamp);
2205 std::cout <<
"[DEC][" << NotifyClientConnectionEvent::klassName() <<
"]eventName = " << eventName << std::endl;
2206 std::cout <<
"[DEC][" << NotifyClientConnectionEvent::klassName() <<
"]clientIP = " << clientIP << std::endl;
2207 std::cout <<
"[DEC][" << NotifyClientConnectionEvent::klassName() <<
"]timeStamp = " << timeStamp << std::endl;
2209 message = NotifyClientConnectionEvent(requestID,eventName,clientIP,timeStamp);
2212 json_decref(parent);
2217 static void JsonEncode(
const NotifyClientConnectionEvent &r, json_t *parent)
2219 json_t *JT_notification = parent;
2220 json_object_set_new(JT_notification,
"eventName",json_string(r.getEventName().c_str()));
2221 json_object_set_new(JT_notification,
"clientIP",json_string(r.getClientIP().c_str()));
2222 json_object_set_new(JT_notification,
"timeStamp",json_integer(r.getEventTimeStamp()));
2225 static void JsonDecode(json_t * parent, NotifyClientConnectionEvent & notification)
2227 json_t *JT_notification = parent;
2229 json_t *JT_eventName = json_object_get(JT_notification,
"eventName");
2230 json_t *JT_clientIP = json_object_get(JT_notification,
"clientIP");
2231 json_t *JT_timeStamp = json_object_get(JT_notification,
"timeStamp");
2233 const char *requestID =
"";
2234 const char *eventName = json_string_value(JT_eventName);
2235 const char *clientIP = json_string_value(JT_clientIP);
2236 uint64_t timeStamp = json_integer_value(JT_timeStamp);
2238 std::cout <<
"[DEC][NotifyClientConnectionEvent] eventName = " << eventName << std::endl;
2239 std::cout <<
"[DEC][NotifyClientConnectionEvent] clientIP = " << clientIP << std::endl;
2240 std::cout <<
"[DEC][NotifyClientConnectionEvent] timeStamp = " << timeStamp << std::endl;
2251 void JsonEncode(
const GetTRMConnectionEvents &r, std::vector<uint8_t> &out)
2253 json_t * parent = json_object();
2260 json_object_set_new(parent, r.getClassName().c_str(), json_object());
2263 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
2264 JsonEncode(r, JT_response);
2265 json_object_set_new(JT_response,
"connectionEvents", json_array());
2268 typedef GetTRMConnectionEvents::ConnectionEventList conEventLists;
2270 json_t *JT_eventlist = json_object_get(JT_response,
"connectionEvents");
2273 const conEventLists & eventList = r.getConEvents();
2274 conEventLists::const_iterator it;
2275 for (it = eventList.begin(); it != eventList.end(); it++) {
2276 json_t *JT_notification = json_object();
2277 JsonEncode(*it, JT_notification);
2278 json_array_append_new(JT_eventlist, JT_notification);
2283 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
2284 json_decref(parent);
2288 void JsonDecode(
int handle, GetTRMConnectionEvents & message)
2290 json_t * parent = (json_t *)handle;
2298 json_object_foreach(parent, key, value) {
2300 Assert(json_object_size(parent) == 1);
2301 json_t *JT_simpleResponse = value;
2303 JsonDecode(JT_simpleResponse, message);
2304 json_t *JT_eventlist = json_object_get(JT_simpleResponse,
"connectionEvents");
2306 int numOfEvents = json_array_size(JT_eventlist);
2308 std::cout <<
"[DEC][GetTRMConnectionEvents] numOfEvents = " << numOfEvents << std::endl;
2310 for (
int i = 0; i < numOfEvents; i++) {
2311 json_t *JT_singleNotifictaion = json_array_get(JT_eventlist, i);
2312 if (JT_singleNotifictaion) {
2313 NotifyClientConnectionEvent::ConnectionEvent event;
2314 JsonDecode(JT_singleNotifictaion,event);
2315 message.addConEvents(event);
2322 json_decref(parent);
2335 void JsonEncode(
const GetAllConnectedDeviceIdsResponse &r, std::vector<uint8_t> &out)
2337 json_t * parent = json_object();
2344 json_object_set_new(parent, r.getClassName().c_str(), json_object());
2347 json_t *JT_response = json_object_get(parent, r.getClassName().c_str());
2348 JsonEncode(r, JT_response);
2349 json_object_set_new(JT_response,
"DeviceIds", json_array());
2352 json_t *JT_DeviceIds = json_object_get(JT_response,
"DeviceIds");
2353 const std::list<std::string> & DeviceIds = r.getDeviceIds();
2354 std::list<std::string>::const_iterator it;
2355 for (it = DeviceIds.begin(); it != DeviceIds.end(); it++) {
2356 json_array_append_new(JT_DeviceIds, json_string(it->c_str()));
2361 json_dump_callback(parent, vector_dump_callback, &out, JSON_INDENT(4) | JSON_PRESERVE_ORDER);
2362 json_decref(parent);
2367 void JsonDecode(
int handle, GetAllConnectedDeviceIdsResponse & message)
2369 json_t * parent = (json_t *)handle;
2377 json_object_foreach(parent, key, value){
2379 Assert(json_object_size(parent) == 1);
2380 json_t *JT_simpleResponse = value;
2382 JsonDecode(JT_simpleResponse, message);
2383 json_t *JT_DeviceIds = json_object_get(JT_simpleResponse,
"DeviceIds");
2384 int numOfDevices = json_array_size(JT_DeviceIds);
2385 for (
int i = 0; i < numOfDevices; i++) {
2386 json_t *JT_id = json_array_get(JT_DeviceIds, i);
2387 message.addDeviceId(json_string_value(JT_id));
2391 json_decref(parent);
2395 void delete_ReservationCustomAttributes(
void *p)