/* Chesapeake TTCP
 * Copyright 1997, Chesapeake Computer Consultants, Inc.
 */

import java.net.ServerSocket;
import java.lang.Float;

// Parameters for a TCP or UDP data transfer.
// Values here are used by the TransThread thread
//   for doing a transfer.
//
class ParamsClass
{
    // Constants
    public static final boolean RECEIVE = true;
    public static final boolean TRANSMIT = false;

    public static final boolean TCP = true;
    public static final boolean UDP = false;

    public static final boolean RUN = true;
    public static final boolean STOP = false;

// Transfer Parameters
    private String Host;
    private int Port;
    private boolean TransmitReceive;
    private boolean Protocol;
    private int BufSize;
    private int NumBuf;
// Transfer Results
    private long Start, End; // Epoc based times
    private int BufCount; // Number of buffers actually transferred
    private String Stats;

// Constructor
    ParamsClass(){
        // Set default values (the GUI will use accessor methods to
        // discover the values we set here.)
        Host = "127.0.0.1";
        Port = 5001;
        TransmitReceive = RECEIVE;
        Protocol = TCP;
        BufSize = 8192;
        NumBuf = 1024;
    }

// Accessor Functions
    public void setHost(String host) {
        Host = host;
    }
    public String getHost() {
        return Host;
    }
    public void setProtocol(boolean p) {
        Protocol = p;
    }
    public boolean getProtocol() {
        return Protocol;
    }
    public void setTR(boolean tr) {
        TransmitReceive = tr;
    }
    public boolean getTR() {
        return TransmitReceive;
    }
    public void setPort(int port) {
        Port = port;
    }
    public int getPort() {
        return Port;
    }
    public void setBufSize(int size) {
        BufSize = size;
    }
    public int getBufSize() {
        return BufSize;
    }
    public void setNumBuf(int count) {
        NumBuf = count;
    }
    public int getNumBuf() {
        return NumBuf;
    }
    public String getStats() {
        long Duration, Count;
        float Kbps, fDuration, fCount;
        Duration = End - Start;
        Count = BufCount * BufSize;
        fCount = Count;
        fDuration = Duration;
        Kbps = (fCount/fDuration);
        Stats = (TransmitReceive ? "Receive: " : "Transmit: ") +
          Count + " bytes in " +
          Duration + " milli-seconds = " + Kbps + " KB/sec (" +
            8*Kbps + " Kbps).\n";
        return Stats;
    }
    public void setStart(long s) {
        Start = s;
    }
    public void setEnd(long e) {
        End = e;
    }
    public void setBufCount(int c) {
        BufCount = c;
    }
}
