bool CHTSPData::GetDriveSpace(long long *total, long long *used) { htsmsg_t *msg = htsmsg_create_map(); htsmsg_add_str(msg, "method", "getDiskSpace"); if ((msg = ReadResult(msg)) == NULL) { XBMC->Log(LOG_DEBUG, "%s - failed to get getDiskSpace", __FUNCTION__); return false; } int64_t freespace; if (htsmsg_get_s64(msg, "freediskspace", &freespace) != 0) return false; int64_t totalspace; if (htsmsg_get_s64(msg, "totaldiskspace", &totalspace) != 0) return false; *total = totalspace / 1024; *used = (totalspace - freespace) / 1024; return true; }
DemuxPacket* cHTSPDemux::Read() { htsmsg_t * msg; const char* method; while((msg = ReadStream())) { method = htsmsg_get_str(msg, "method"); if(method == NULL) break; if (strcmp("subscriptionStart", method) == 0) { SubscriptionStart(msg); DemuxPacket* pkt = PVR->AllocateDemuxPacket(0); pkt->iStreamId = DMX_SPECIALID_STREAMCHANGE; htsmsg_destroy(msg); return pkt; } else if(strcmp("subscriptionStop", method) == 0) SubscriptionStop (msg); else if(strcmp("subscriptionStatus", method) == 0) SubscriptionStatus(msg); else if(strcmp("queueStatus" , method) == 0) cHTSPSession::ParseQueueStatus(msg, m_QueueStatus); else if(strcmp("signalStatus" , method) == 0) cHTSPSession::ParseSignalStatus(msg, m_Quality); else if(strcmp("muxpkt" , method) == 0) { uint32_t index, duration, frametype; const void* bin; size_t binlen; int64_t ts; char frametypechar[1]; htsmsg_get_u32(msg, "frametype", &frametype); frametypechar[0] = static_cast<char>( frametype ); // XBMC->Log(LOG_DEBUG, "%s - Frame type %c", __FUNCTION__, frametypechar[0]); if(htsmsg_get_u32(msg, "stream" , &index) || htsmsg_get_bin(msg, "payload", &bin, &binlen)) break; DemuxPacket* pkt = PVR->AllocateDemuxPacket(binlen); memcpy(pkt->pData, bin, binlen); pkt->iSize = binlen; if(!htsmsg_get_u32(msg, "duration", &duration)) pkt->duration = (double)duration * DVD_TIME_BASE / 1000000; if(!htsmsg_get_s64(msg, "dts", &ts)) pkt->dts = (double)ts * DVD_TIME_BASE / 1000000; else pkt->dts = DVD_NOPTS_VALUE; if(!htsmsg_get_s64(msg, "pts", &ts)) pkt->pts = (double)ts * DVD_TIME_BASE / 1000000; else pkt->pts = DVD_NOPTS_VALUE; pkt->iStreamId = -1; for(unsigned int i = 0; i < m_Streams.iStreamCount; i++) { if(m_Streams.stream[i].iPhysicalId == (unsigned int)index) { pkt->iStreamId = i; break; } } htsmsg_destroy(msg); return pkt; } break; } if(msg) { htsmsg_destroy(msg); DemuxPacket* pkt = PVR->AllocateDemuxPacket(0); return pkt; } return NULL; }