29 #include <QApplication>
34 #include <QHostAddress>
39 #include "trm/JsonEncoder.h"
43 #include "trm/TunerReservation.h"
44 #include "TRMMonitor.h"
48 TRMMonitor::TRMMonitor(
const QHostAddress &address, quint16 port, uint32_t clientId) :
Client (address, port),
49 hostAddress(address), portNumber(port), clientId(clientId)
53 TRMMonitor::~TRMMonitor()
57 const std::list<std::string> & TRMMonitor::getTunerIds(
void)
const
64 void TRMMonitor::sendTunerReserve(
const QString &device, qint64 startTime, qint64 duration,
const QString &locator,
const QString &activity,
const QString &token)
67 qDebug() << (
"Sending out ReserveTuner");
69 std::vector<uint8_t> out;
70 Activity activityObject(activity.toUtf8().constData());
71 activityObject.addDetail(
"recordingId", QDateTime(QDate::currentDate(), QTime::currentTime()).toString().toUtf8().constData());
72 activityObject.addDetail(
"hot",
"false");
74 ReserveTuner requestObject(QUuid::createUuid ().toString().toUtf8().constData(),
75 device.toUtf8().constData(),
77 locator.toUtf8().constData(),
81 token.toUtf8().constData())
84 send(requestObject, out);
85 pendingRequestIds.enqueue(QString(requestObject.getUUID().c_str()));
86 if (connection) connection->sendMessage(QByteArray((
const char *)&out[0], out.size()));
89 void TRMMonitor::sendGetAllTunerIds(
void)
91 qDebug() << (
"Sending out GetAllTunerIds");
93 std::vector<uint8_t> out;
94 GetAllTunerIds requestObject(QUuid::createUuid ().toString().toUtf8().constData());
96 send(requestObject, out);
97 pendingRequestIds.enqueue(QString(requestObject.getUUID().c_str()));
98 if (connection) connection->sendMessage(QByteArray((
const char *)&out[0], out.size()));
101 void TRMMonitor::sendGetAllTunerStates(
void)
103 qDebug() << (
"Sending out GetAllTunerStates");
104 std::vector<uint8_t> out;
105 GetAllTunerStates requestObject(QUuid::createUuid ().toString().toUtf8().constData(),
"");
107 send(requestObject, out);
108 pendingRequestIds.enqueue(QString(requestObject.getUUID().c_str()));
109 if (connection) connection->sendMessage(QByteArray((
const char *)&out[0], out.size()));
112 void TRMMonitor::sendGetAllReservations(
void)
114 qDebug() << (
"Sending out GetAllReservations");
115 std::vector<uint8_t> out;
116 GetAllReservations requestObject(QUuid::createUuid ().toString().toUtf8().constData(),
"");
118 send(requestObject, out);
119 pendingRequestIds.enqueue(QString(requestObject.getUUID().c_str()));
120 if (connection) connection->sendMessage(QByteArray((
const char *)&out[0], out.size()));
123 void TRMMonitor::sendReleaseTunerReservation(
const QString &reservationToken)
125 qDebug() << (
"Sending out ReleaseTunerReservation");
126 std::vector<uint8_t> out;
127 ReleaseTunerReservation requestObject(QUuid::createUuid ().toString().toUtf8().constData(),
"Device::TestApp", reservationToken.toUtf8().constData());
129 send(requestObject, out);
130 pendingRequestIds.enqueue(QString(requestObject.getUUID().c_str()));
131 if (connection) connection->sendMessage(QByteArray((
const char *)&out[0], out.size()));
134 void TRMMonitor::sendValidateTunerReservation(
const QString &device,
const QString &reservationToken)
136 qDebug() << (
"Sending out ValidateTunerReservation");
137 std::vector<uint8_t> out;
138 ValidateTunerReservation requestObject(QUuid::createUuid ().toString().toUtf8().constData(), device.toUtf8().constData(), reservationToken.toUtf8().constData());
140 send(requestObject, out);
141 pendingRequestIds.enqueue(QString(requestObject.getUUID().c_str()));
142 if (connection) connection->sendMessage(QByteArray((
const char *)&out[0], out.size()));
146 void TRMMonitor::sendCancelRecording(
const QString &,
const QString &reservationToken)
148 qDebug() << (
"Sending out ValidateTunerReservation");
149 std::vector<uint8_t> out;
150 CancelRecording requestObject(QUuid::createUuid ().toString().toUtf8().constData(), reservationToken.toUtf8().constData());
152 send(requestObject, out);
153 pendingRequestIds.enqueue(QString(requestObject.getUUID().c_str()));
154 if (connection) connection->sendMessage(QByteArray((
const char *)&out[0], out.size()));
158 void TRMMonitor::sendCancelRecordingResponse(
const QString &uuid,
const QString &,
const QString &reservationToken, uint32_t outClientId)
160 qDebug() << (
"Sending out ValidateTunerReservation");
161 std::vector<uint8_t> out;
162 ResponseStatus responseStatus(ResponseStatus::kOk,
"Recording Canceled sSuccessfully");
163 CancelRecordingResponse requestObject(uuid.toUtf8().constData(), responseStatus, reservationToken.toUtf8().constData(),
true);
165 send(requestObject, out, outClientId);
166 if (connection) connection->sendMessage(QByteArray((
const char *)&out[0], out.size()));
173 std::cout <<
"handleReserveTunerResponse =======================================" << std::endl;
175 QString requestId = pendingRequestIds.dequeue();
176 if(requestId != QString(msg.getUUID().c_str()))
178 qDebug() <<
"RequestId: [" << requestId <<
"] vs Response Id: [" << msg.getUUID().c_str() <<
"]";
184 sendGetAllReservations();
185 sendGetAllTunerStates();
186 if (msg.getStatus().getDetails() !=
"") {
188 emit statusMessageReceived(msg.getStatus().getDetails());
190 const ReserveTunerResponse::ConflictCT &conflicts = msg.
getConflicts();
192 if (conflicts.size() != 0) {
193 std::cout <<
"handleReserveTunerResponse FOUND CONFLICTS=======================================" << std::endl;
194 emit conflictsReceived(conflicts);
197 std::cout <<
"handleReserveTunerResponse NO CONFLICTS=======================================" << std::endl;
200 sendGetAllReservations();
201 sendGetAllTunerStates();
207 qDebug() <<
"handleReleaseTunerReservationResponse";
208 QString requestId = pendingRequestIds.dequeue();
209 if(requestId != QString(msg.getUUID().c_str()))
211 qDebug() <<
"RequestId: [" << requestId <<
"] vs Response Id: [" << msg.getUUID().c_str() <<
"]";
218 UNUSED_VARIABLE(connection);
219 sendGetAllReservations();
220 sendGetAllTunerStates();
226 qDebug() <<
"handleValidateTunerReservationResponse";
228 QString requestId = pendingRequestIds.dequeue();
229 if(requestId != QString(msg.getUUID().c_str()))
231 qDebug() <<
"RequestId: [" << requestId <<
"] vs Response Id: [" << msg.getUUID().c_str() <<
"]";
235 qDebug() <<
"Validation Result is " << msg.
isValid();
239 UNUSED_VARIABLE(connection);
240 sendGetAllReservations();
241 sendGetAllTunerStates();
248 qDebug() <<
"handleCancelRecording";
249 sendCancelRecordingResponse(msg.getUUID().c_str(), msg.getDevice().c_str(), msg.getReservationToken().c_str(), inClientId);
256 qDebug() <<
"handleCancelRecordingResponse";
258 QString requestId = pendingRequestIds.dequeue();
259 if(requestId != QString(msg.getUUID().c_str()))
261 qDebug() <<
"RequestId: [" << requestId <<
"] vs Response Id: [" << msg.getUUID().c_str() <<
"]";
267 UNUSED_VARIABLE(connection);
268 sendGetAllReservations();
269 sendGetAllTunerStates();
276 qDebug() <<
"handleGetAllTunerStatesResponse";
277 QString requestId = pendingRequestIds.dequeue();
279 const std::map<std::string, std::string> &states = msg.
getTunerStates();
280 emit tunerStatesUpdated(states);
286 qDebug() <<
"handleGetAllTunerIdsResponse";
288 QString requestId = pendingRequestIds.dequeue();
289 if(requestId != QString(msg.getUUID().c_str()))
291 qDebug() <<
"RequestId: [" << requestId <<
"] vs Response Id: [" << msg.getUUID().c_str() <<
"]";
299 std::list<std::string>::iterator it = tunerIds.begin();
300 for (it = tunerIds.begin(); it != tunerIds.end(); it++) {
301 qDebug() <<
"TunerID: " << (*it).c_str();
304 emit tunerIdsUpdated(tunerIds);
310 qDebug() <<
"handleGetAllReservationsResponse";
312 QString requestId = pendingRequestIds.dequeue();
313 if(requestId != QString(msg.getUUID().c_str()))
315 qDebug() <<
"RequestId: [" << requestId <<
"] vs Response Id: [" << msg.getUUID().c_str() <<
"]";
321 const std::map<std::string, std::list<TunerReservation> > & reservations = msg.getAllReservations();
322 emit tunerReservationsUpdated(reservations);
328 qDebug() <<
"NotifyTunerReservationUpdate";
330 sendGetAllReservations();
331 sendGetAllTunerStates();
337 qDebug() <<
"NotifyTunerReservationRelease";
339 sendGetAllReservations();
340 sendGetAllTunerStates();
346 std::cout <<
"NotifyTunerReservationConflicts =======================================" << std::endl;
348 const ReserveTunerResponse::ConflictCT &conflicts = msg.
getConflicts();
350 if (conflicts.size() != 0) {
351 std::cout <<
"handleReserveTunerResponse FOUND CONFLICTS=======================================" << std::endl;
352 emit conflictsReceived(conflicts);
355 std::cout <<
"handleReserveTunerResponse NO CONFLICTS=======================================" << std::endl;
358 sendGetAllReservations();
359 sendGetAllTunerStates();
365 qDebug() <<
"NotifyTunerStatesUpdate";
371 std::cout <<
"NotifyTunerPretune" << msg.getServiceLocator().c_str() << std::endl;