Ejemplo n.º 1
0
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);
        }
      }
    }
  }
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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);
  }
}
Ejemplo n.º 4
0
Node::Node(const bytevector data) : BaseNode(BaseNode::NODE) {
	std::stringstream ioss;    
	std::copy(data.begin(), data.end(), std::ostream_iterator<char>(ioss, ""));
	constructFromFile(ioss);
}
Ejemplo n.º 5
0
void MotDirectory::putPermitOutdatedVersions(bytevector& out, uint8_t n) const
{
  MotObject::putExtensionParameterHeader(out, 0x01, 1);
  out.put(n, 8);
}
Ejemplo n.º 6
0
void MotDirectory::setProfileSubset(const bytevector& profiles) 
{
  MotObject::putExtensionParameterHeader(extension, 0x21, profiles.size());
  extension.put(profiles);
}
Ejemplo n.º 7
0
 void Write(const bytevector& data) override
 {
     cout.write(data.data(), data.size());
 }
Ejemplo n.º 8
0
 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");
 }