FileDocCategorySizeDatePackage
PanelOverallRtpStats.javaAPI DocJMF 2.1.1e9347Mon May 12 12:20:32 BST 2003jmapps.rtp

PanelOverallRtpStats.java

/*
 * @(#)PanelOverallRtpStats.java	1.4 02/08/21
 *
 * Copyright (c) 1996-2002 Sun Microsystems, Inc.  All rights reserved.
 */

package jmapps.rtp;

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.media.rtp.*;

import com.sun.media.util.JMFI18N;
import com.sun.media.ui.TabControl;

import jmapps.ui.*;


public class PanelOverallRtpStats extends JMPanel {

    private SessionManager  mngrSession;
    private UpdateThread    threadUpdate = null;

    private Label   fieldTotalRtpPackets;
    private Label   fieldTotalBytes;
    private Label   fieldBadRtpPackets;
    private Label   fieldLocalCollisions;
    private Label   fieldRemoteCollisions;
    private Label   fieldPacketsLooped;
    private Label   fieldFailedTransmissions;
    private Label   fieldRtcpPackets;
    private Label   fieldSrPackets;
    private Label   fieldBadRtcpPackets;
    private Label   fieldUnknownRtcpTypes;
    private Label   fieldMalformedRr;
    private Label   fieldMalformedSdes;
    private Label   fieldMalformedBye;
    private Label   fieldMalformedSr;

    private static final String     LABEL_TOTAL_PACKETS         = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.totalpackets" );
    private static final String     LABEL_TOTAL_BYTES           = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.totalbytes" );
    private static final String     LABEL_BAD_RTP_PACKETS       = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.badrtppackets" );
    private static final String     LABEL_LOCAL_COLLISIONS      = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.localcollisions" );
    private static final String     LABEL_REMOTE_COLLISIONS     = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.remotecollisions" );
    private static final String     LABEL_PACKETS_LOOPED        = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.packetslooped" );
    private static final String     LABEL_FAILED_TRANSMISSIONS  = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.failedtransmissions" );
    private static final String     LABEL_RTCP_PACKETS          = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.rtcppackets" );
    private static final String     LABEL_SR_PACKETS            = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.srpackets" );
    private static final String     LABEL_BAD_RTCP_PACKETS      = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.badrtcppackets" );
    private static final String     LABEL_UNKNOWN_RTCP_TYPES    = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.unknownrtcptypes" );
    private static final String     LABEL_MALFORMED_RR          = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.malformedrr" );
    private static final String     LABEL_MALFORMED_SDES        = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.malformedsdes" );
    private static final String     LABEL_MALFORMED_BYE         = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.malformedbye" );
    private static final String     LABEL_MALFORMED_SR          = JMFI18N.getResource ( "jmstudio.rtpsessionctrl.overall.malformedsr" );


    public PanelOverallRtpStats ( SessionManager mngrSession ) {
	    super ();

        this.mngrSession = mngrSession;
        try {
            init();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void addNotify () {
        super.addNotify ();

        if ( threadUpdate == null )
            threadUpdate = new UpdateThread ();
        threadUpdate.start ();
    }

    public void removeNotify () {
        if ( threadUpdate != null ) {
            threadUpdate.terminate ();
            threadUpdate = null;
        }

        super.removeNotify ();
    }

    private void init () throws Exception {
        JMPanel     panelColumn1;
        JMPanel     panelColumn2;
        JMPanel     panelLabels;
        JMPanel     panelData;
        JMPanel     panel;
        Label       label;


        this.setLayout ( new GridLayout(1,0,24,6) );

        panelColumn1 = new JMPanel ( new BorderLayout(6,6) );
        this.add ( panelColumn1 );
        panelColumn2 = new JMPanel ( new BorderLayout(6,6) );
        this.add ( panelColumn2 );

        panel = new JMPanel ( new BorderLayout(6,6) );
        panelColumn1.add ( panel, BorderLayout.NORTH );
        panelLabels = new JMPanel ( new GridLayout(0,1,0,0) );
        panel.add ( panelLabels, BorderLayout.WEST );
        panelData = new JMPanel ( new GridLayout(0,1,0,0) );
        panel.add ( panelData, BorderLayout.CENTER );

        label = new Label ( LABEL_TOTAL_PACKETS );
        panelLabels.add ( label );
        fieldTotalRtpPackets = new Label ( "000000000000" );
        panelData.add ( fieldTotalRtpPackets );

        label = new Label ( LABEL_TOTAL_BYTES );
        panelLabels.add ( label );
        fieldTotalBytes = new Label ();
        panelData.add ( fieldTotalBytes );

        label = new Label ( LABEL_BAD_RTP_PACKETS );
        panelLabels.add ( label );
        fieldBadRtpPackets = new Label ();
        panelData.add ( fieldBadRtpPackets );

        label = new Label ( LABEL_LOCAL_COLLISIONS );
        panelLabels.add ( label );
        fieldLocalCollisions = new Label ();
        panelData.add ( fieldLocalCollisions );

        label = new Label ( LABEL_REMOTE_COLLISIONS );
        panelLabels.add ( label );
        fieldRemoteCollisions = new Label ();
        panelData.add ( fieldRemoteCollisions );

        label = new Label ( LABEL_PACKETS_LOOPED );
        panelLabels.add ( label );
        fieldPacketsLooped = new Label ();
        panelData.add ( fieldPacketsLooped );

        label = new Label ( LABEL_FAILED_TRANSMISSIONS );
        panelLabels.add ( label );
        fieldFailedTransmissions = new Label ();
        panelData.add ( fieldFailedTransmissions );

        panel = new JMPanel ( new BorderLayout(6,6) );
        panelColumn2.add ( panel, BorderLayout.NORTH );
        panelLabels = new JMPanel ( new GridLayout(0,1,0,0) );
        panel.add ( panelLabels, BorderLayout.WEST );
        panelData = new JMPanel ( new GridLayout(0,1,0,0) );
        panel.add ( panelData, BorderLayout.CENTER );

        label = new Label ( LABEL_RTCP_PACKETS );
        panelLabels.add ( label );
        fieldRtcpPackets = new Label ();
        panelData.add ( fieldRtcpPackets );

        label = new Label ( LABEL_SR_PACKETS );
        panelLabels.add ( label );
        fieldSrPackets = new Label ();
        panelData.add ( fieldSrPackets );

        label = new Label ( LABEL_BAD_RTCP_PACKETS );
        panelLabels.add ( label );
        fieldBadRtcpPackets = new Label ();
        panelData.add ( fieldBadRtcpPackets );

        label = new Label ( LABEL_UNKNOWN_RTCP_TYPES );
        panelLabels.add ( label );
        fieldUnknownRtcpTypes = new Label ();
        panelData.add ( fieldUnknownRtcpTypes );

        label = new Label ( LABEL_MALFORMED_RR );
        panelLabels.add ( label );
        fieldMalformedRr = new Label ();
        panelData.add ( fieldMalformedRr );

        label = new Label ( LABEL_MALFORMED_SDES );
        panelLabels.add ( label );
        fieldMalformedSdes = new Label ();
        panelData.add ( fieldMalformedSdes );

        label = new Label ( LABEL_MALFORMED_BYE );
        panelLabels.add ( label );
        fieldMalformedBye = new Label ();
        panelData.add ( fieldMalformedBye );

        label = new Label ( LABEL_MALFORMED_SR );
        panelLabels.add ( label );
        fieldMalformedSr = new Label ();
        panelData.add ( fieldMalformedSr );

        updateFields ();
    }

    private void updateFields () {
        GlobalReceptionStats    stats;

        stats = mngrSession.getGlobalReceptionStats ();

        fieldTotalRtpPackets.setText ( "" + stats.getPacketsRecd() );
        fieldTotalBytes.setText ( "" + stats.getBytesRecd() );
        fieldBadRtpPackets.setText ( "" + stats.getBadRTPkts() );
        fieldLocalCollisions.setText ( "" + stats.getLocalColls() );
        fieldRemoteCollisions.setText ( "" + stats.getRemoteColls() );
        fieldPacketsLooped.setText ( "" + stats.getPacketsLooped() );
        fieldFailedTransmissions.setText ( "" + stats.getTransmitFailed() );
        fieldRtcpPackets.setText ( "" + stats.getRTCPRecd() );
        fieldSrPackets.setText ( "" + stats.getSRRecd() );
        fieldBadRtcpPackets.setText ( "" + stats.getBadRTCPPkts() );
        fieldUnknownRtcpTypes.setText ( "" + stats.getUnknownTypes() );
        fieldMalformedRr.setText ( "" + stats.getMalformedRR() );
        fieldMalformedSdes.setText ( "" + stats.getMalformedSDES() );
        fieldMalformedBye.setText ( "" + stats.getMalformedBye() );
        fieldMalformedSr.setText ( "" + stats.getMalformedSR() );
    }


    private class UpdateThread extends Thread {

        private boolean     boolTerminate = false;

        public UpdateThread () {
        }

        public void terminate () {
            boolTerminate = true;
        }


        public void run () {
            while ( boolTerminate == false ) {
                try {
                    sleep ( 1000 );
                    updateFields ();
                }
                catch ( Exception exception ) {
                }
            }
        }
    }


}