List of usage examples for org.apache.commons.net.ntp TimeStamp getSeconds
public long getSeconds()
From source file:com.eventsourcing.hlc.HybridTimestamp.java
public static int compare(TimeStamp t1, TimeStamp t2) { if (t1.getSeconds() == t2.getSeconds() && t1.getFraction() == t2.getFraction()) { return 0; }// w w w . ja v a 2 s . com if (t1.getSeconds() == t2.getSeconds()) { return t1.getFraction() < t2.getFraction() ? -1 : 1; } return t1.getSeconds() < t2.getSeconds() ? -1 : 1; }
From source file:com.eventsourcing.hlc.HybridTimestamp.java
@Override public BigInteger getSerializableComparable() { TimeStamp t = new TimeStamp(logicalTime); return BigInteger.valueOf(t.getSeconds()).shiftLeft(64) .add(BigInteger.valueOf(t.getFraction()).shiftLeft(32)).add(BigInteger.valueOf(logicalCounter)); }
From source file:com.eventsourcing.hlc.NTPServerTimeProvider.java
TimeStamp getTimestamp() throws TimeoutException { if (timestamp == null) { throw new TimeoutException(); }//from w ww . ja va2 s . c o m TimeStamp ts = new TimeStamp(timestamp.ntpValue()); long fraction = ts.getFraction(); long seconds = ts.getSeconds(); long nanoTime = System.nanoTime(); long l = (nanoTime - nano) / 1_000_000_000; double v = (nanoTime - nano) / 1_000_000_000.0 - l; long i = (long) (v * 1_000_000_000); long fraction_ = fraction + i; if (fraction_ >= 1_000_000_000) { fraction_ -= 1_000_000_000; l++; } return new TimeStamp((seconds + l) << 32 | fraction_); }
From source file:org.mobicents.media.server.impl.rtcp.ntp.NtpUtilsTest.java
/** * Test correctness of RTCP SR timestamps based on the middle 32-bit of an * NTP timestamp.// w w w . jav a 2 s .c o m * * Using the values of the example provided by RFC3550: * * [10 Nov 1995 11:33:25.125 UTC] [10 Nov 1995 11:33:36.5 UTC] * n SR(n) A=b710:8000 (46864.500 s) * ----------------------------------------------------------------> * v ^ * ntp_sec =0xb44db705 v ^ dlsr=0x0005:4000 ( 5.250s) * ntp_frac=0x20000000 v ^ lsr =0xb705:2000 (46853.125s) * (3024992005.125 s) v ^ * r v ^ RR(n) * ----------------------------------------------------------------> * |<-DLSR->| * (5.250 s) * * A 0xb710:8000 (46864.500 s) * DLSR -0x0005:4000 ( 5.250 s) * LSR -0xb705:2000 (46853.125 s) * ------------------------------- * delay 0x0006:2000 ( 6.125 s) * * @see <a href="http://tools.ietf.org/html/rfc3550#section-6.4.1">RFC3550</a> */ @Test public void testSrTimestamp() { // given String ntpSec = "b44db705"; String ntpFrac = "20000000"; TimeStamp ntp = new TimeStamp(ntpSec.concat(".").concat(ntpFrac)); // when long srTs = NtpUtils.calculateLastSrTimestamp(ntp.getSeconds(), ntp.getFraction()); long srMs = (srTs * 1000) >> 16; // then Assert.assertEquals(46853125, srMs); }
From source file:org.mobicents.media.server.impl.rtcp.RtcpHandlerTest.java
@Test public void testHandleSenderReport() throws PacketHandlerException { // given//from www . j av a 2s . c om InetSocketAddress localPeer = new InetSocketAddress("127.0.0.1", 6100); InetSocketAddress remotePeer = new InetSocketAddress("127.0.0.1", 6200); long localSsrc = statistics.getSsrc(); long remoteSsrc = SsrcGenerator.generateSsrc(); String remoteCname = CnameGenerator.generateCname(); TimeStamp ntp = new TimeStamp(wallClock.getCurrentTime()); RtcpSenderReport sr = new RtcpSenderReport(false, remoteSsrc, ntp.getSeconds(), ntp.getFraction(), 200, 3, 3 * 200); RtcpReportBlock rrBlock = new RtcpReportBlock(localSsrc, 1, 1, 0, 10, 0, 398416412, 223412); sr.addReceiverReport(rrBlock); RtcpSdes sdes = new RtcpSdes(false); RtcpSdesChunk sdesChunk = new RtcpSdesChunk(remoteSsrc); RtcpSdesItem sdesCname = new RtcpSdesItem(RtcpSdesItem.RTCP_SDES_CNAME, remoteCname); sdesChunk.addRtcpSdesItem(sdesCname); sdes.addRtcpSdesChunk(sdesChunk); RtcpPacket rtcpPacket = new RtcpPacket(sr, sdes); byte[] rtcpData = new byte[300]; rtcpPacket.encode(rtcpData, 0); // when handler.joinRtpSession(); byte[] response = handler.handle(rtcpData, localPeer, remotePeer); // then // There are no responses in RTCP Assert.assertNull(response); /* * When an RTCP packet is received from a participant whose SSRC is not in the * member table, the SSRC is added to the table, and the value for * members is updated once the participant has been validated. */ RtpMember newMember = statistics.getMember(remoteSsrc); Assert.assertEquals(2, statistics.getMembers()); Assert.assertNotNull(newMember); Assert.assertEquals(remoteSsrc, newMember.getSsrc()); Assert.assertEquals(remoteCname, newMember.getCname()); Assert.assertEquals(sr.getNtpTs(), newMember.getLastSR()); Assert.assertEquals(0, newMember.getReceivedSinceSR()); // The average packet size is updated: // avg_rtcp_size = (1/16) * packet_size + (15/16) * avg_rtcp_size double expectedSize = (1.0 / 16.0) * rtcpPacket.getSize() + (15.0 / 16.0) * RtpStatistics.RTCP_DEFAULT_AVG_SIZE; Assert.assertEquals(expectedSize, statistics.getRtcpAvgSize(), 0.0); }
From source file:org.mobicents.media.server.impl.rtcp.RtcpPacketFactory.java
/** * Builds a packet containing an RTCP Sender Report. * /*from ww w . ja v a2 s .c om*/ * @param statistics * The statistics of the RTP session * @return The RTCP packet */ private static RtcpSenderReport buildSenderReport(RtpStatistics statistics, boolean padding) { /* * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * header |V=2|P| RC | PT=SR=200 | length | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | SSRC of sender | * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * sender | NTP timestamp, most significant word | * info +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | NTP timestamp, least significant word | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | RTP timestamp | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | sender's packet count | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | sender's octet count | * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * report | SSRC_1 (SSRC of first source) | * block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * 1 | fraction lost | cumulative number of packets lost | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | extended highest sequence number received | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | interarrival jitter | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | last SR (LSR) | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | delay since last SR (DLSR) | * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * report | SSRC_2 (SSRC of second source) | * block +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * 2 : ... : * +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * | profile-specific extensions | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ */ long ssrc = statistics.getSsrc(); long currentTime = statistics.getCurrentTime(); TimeStamp ntpTs = new TimeStamp(new Date(currentTime)); long ntpSec = ntpTs.getSeconds(); long ntpFrac = ntpTs.getFraction(); long elapsedTime = statistics.getCurrentTime() - statistics.getRtpSentOn(); long rtpTs = statistics.getRtpTimestamp() + statistics.getRtpTime(elapsedTime); long psent = statistics.getRtpPacketsSent(); long osent = statistics.getRtpOctetsSent(); RtcpSenderReport senderReport = new RtcpSenderReport(padding, ssrc, ntpSec, ntpFrac, rtpTs, psent, osent); // Add receiver reports for each registered member List<Long> members = statistics.getMembersList(); for (Long memberSsrc : members) { if (ssrc != memberSsrc) { RtpMember memberStats = statistics.getMember(memberSsrc.longValue()); RtcpReportBlock rcvrReport = buildSubReceiverReport(memberStats); senderReport.addReceiverReport(rcvrReport); } } return senderReport; }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpMember.java
public void estimateRtt(long receiptDate, long lastSR, long delaySinceSR) { TimeStamp receiptNtp = TimeStamp.getNtpTime(receiptDate); long receiptNtpTime = NtpUtils.calculateLastSrTimestamp(receiptNtp.getSeconds(), receiptNtp.getFraction()); long delay = receiptNtpTime - lastSR - delaySinceSR; this.roundTripDelay = (delay > 4294967L) ? RTP_SEQ_MOD : (int) ((delay * 1000L) >> 16); logger.info("rtt=" + receiptNtpTime + " - " + lastSR + " - " + delaySinceSR + " = " + delay + " => " + this.roundTripDelay + "ms"); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpMemberTest.java
@Test public void testOnReceiveSR() { // given/* ww w. ja v a2s.c o m*/ RtpMember member = new RtpMember(rtpClock, 123); TimeStamp ntp = new TimeStamp(new Date()); RtcpSenderReport sendReport = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 2, 100, 100 * 130); long receiveTime = this.wallClock.getCurrentTime(); // when member.onReceiveSR(sendReport); this.wallClock.tick(20000000L); // then long expectedSrTimestamp = NtpUtils.calculateLastSrTimestamp(ntp.getSeconds(), ntp.getFraction()); assertEquals(expectedSrTimestamp, member.getLastSR()); assertEquals(0, member.getReceivedSinceSR()); long expectedDelay = (long) ((this.wallClock.getCurrentTime() - receiveTime) * 65.536); assertEquals(expectedDelay, member.getLastSRdelay()); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpMemberTest.java
@Test public void testOnReceiveRtpAndSR() { // given// w ww . jav a 2 s .c o m RtpMember member = new RtpMember(rtpClock, 123); RtpPacket p1 = new RtpPacket(172, false); RtpPacket p2 = new RtpPacket(172, false); RtpPacket p3 = new RtpPacket(172, false); RtpPacket p4 = new RtpPacket(172, false); RtpPacket p5 = new RtpPacket(172, false); p1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); p2.wrap(false, 8, 2, 160 * 2, 123, new byte[160], 0, 160); p3.wrap(false, 8, 3, 160 * 3, 123, new byte[160], 0, 160); p4.wrap(false, 8, 4, 160 * 4, 123, new byte[160], 0, 160); p5.wrap(false, 8, 5, 160 * 5, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(new Date()); RtcpSenderReport sendReport = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 2, 100, 100 * 130); // when member.onReceiveRtp(p1); wallClock.tick(20000000L); member.onReceiveRtp(p2); wallClock.tick(20000000L); member.onReceiveRtp(p3); wallClock.tick(20000000L); member.onReceiveRtp(p4); wallClock.tick(20000000L); long receivedSrOn = this.wallClock.getCurrentTime(); member.onReceiveSR(sendReport); member.onReceiveRtp(p5); wallClock.tick(20000000L); // then assertEquals(0, member.getSequenceCycle()); long expectedHighSeq = (65536 * 0 + p5.getSeqNumber()); assertEquals(expectedHighSeq, member.getExtHighSequence()); assertEquals(3, member.getPacketsReceived()); assertEquals(sumOctets(p3, p4, p5), member.getOctetsReceived()); assertEquals(1, member.getReceivedSinceSR()); assertEquals(0, member.getPacketsLost()); assertEquals(0, member.getFractionLost()); // expected packets = received packets = no loss long expectedDelay = (long) ((wallClock.getCurrentTime() - receivedSrOn) * 65.536); assertEquals(expectedDelay, member.getLastSRdelay()); }
From source file:org.mobicents.media.server.impl.rtp.statistics.RtpMemberTest.java
@Test public void testLostPackets() { // given//from ww w . j a va 2 s. com RtpMember member = new RtpMember(rtpClock, 123); RtpPacket p1 = new RtpPacket(172, false); RtpPacket p2 = new RtpPacket(172, false); RtpPacket p3 = new RtpPacket(172, false); RtpPacket p4 = new RtpPacket(172, false); RtpPacket p5 = new RtpPacket(172, false); p1.wrap(false, 8, 1, 160 * 1, 123, new byte[160], 0, 160); p2.wrap(false, 8, 2, 160 * 2, 123, new byte[160], 0, 160); p3.wrap(false, 8, 3, 160 * 3, 123, new byte[160], 0, 160); p4.wrap(false, 8, 4, 160 * 4, 123, new byte[160], 0, 160); p5.wrap(false, 8, 24, 160 * 5, 123, new byte[160], 0, 160); TimeStamp ntp = new TimeStamp(new Date()); RtcpSenderReport sendReport = new RtcpSenderReport(false, 123, ntp.getSeconds(), ntp.getFraction(), 160 * 2, 100, 100 * 130); // when member.onReceiveRtp(p1); wallClock.tick(20000000L); member.onReceiveRtp(p2); wallClock.tick(20000000L); member.onReceiveRtp(p3); wallClock.tick(20000000L); member.onReceiveRtp(p4); wallClock.tick(20000000L); member.onReceiveSR(sendReport); member.onReceiveRtp(p5); wallClock.tick(20000000L); // then int packetsReceived = 3; // 2 first packets were in probation period int expected = p5.getSeqNumber() - p3.getSeqNumber() + 1; // only considers valid sequence after 2 consecutive packets long expectedLostPackets = expected - packetsReceived; long lostInterval = expected - packetsReceived; long fractionLost = (lostInterval * 256) / expected; assertEquals(expectedLostPackets, member.getPacketsLost()); assertEquals(fractionLost, member.getFractionLost()); }