void MotDirectory::putExpirationRelative(bytevector& out, time_t t) { MotObject::putExtensionParameterHeader(out, 0x09, 1); time_t mins = t / 60; if(mins<=63) { out.put(0, 2); out.put(mins/2, 6); } else { time_t half_hours = mins / 30; if(half_hours<=63) { out.put(1, 2); out.put(half_hours, 6); } else { time_t bi_hours = half_hours / 4; if(bi_hours<=63) { out.put(2, 2); out.put(bi_hours, 6); } else { time_t days = bi_hours / 12; if(days<=63) { out.put(3, 2); out.put(days, 6); } } } } }
void SrtTarget::Write(const bytevector& data) { ::transmit_throw_on_interrupt = true; // Check first if it's ready to write. // If not, wait indefinitely. if ( !m_blocking_mode ) { int ready[2]; int len = 2; if ( srt_epoll_wait(srt_epoll, 0, 0, ready, &len, -1, 0, 0, 0, 0) == SRT_ERROR ) Error(UDT::getlasterror(), "srt_epoll_wait"); } int stat = srt_sendmsg2(m_sock, data.data(), data.size(), nullptr); if ( stat == SRT_ERROR ) Error(UDT::getlasterror(), "srt_sendmsg"); ::transmit_throw_on_interrupt = false; }
void MotDirectory::putExpirationAbsolute(bytevector& out, timespec t) { uint16_t hours, mins, seconds, ms; bool secs; uint32_t mjd; MotObject::putExtensionParameterHeader(out, 0x09, 4+(secs?2:0)); out.put(1, 1); // time valid out.put(mjd, 17); out.put(0, 2); // rfu out.put(secs, 1); out.put(hours, 5); out.put(mins, 6); if(secs){ out.put(seconds, 6); out.put(ms, 10); } }
Node::Node(const bytevector data) : BaseNode(BaseNode::NODE) { std::stringstream ioss; std::copy(data.begin(), data.end(), std::ostream_iterator<char>(ioss, "")); constructFromFile(ioss); }
void MotDirectory::putPermitOutdatedVersions(bytevector& out, uint8_t n) const { MotObject::putExtensionParameterHeader(out, 0x01, 1); out.put(n, 8); }
void MotDirectory::setProfileSubset(const bytevector& profiles) { MotObject::putExtensionParameterHeader(extension, 0x21, profiles.size()); extension.put(profiles); }
void Write(const bytevector& data) override { cout.write(data.data(), data.size()); }
void Write(const bytevector& data) override { int stat = sendto(m_sock, data.data(), data.size(), 0, (sockaddr*)&sadr, sizeof sadr); if ( stat == -1 ) Error(SysError(), "UDP Write/sendto"); }