edu.virginia.cs.mng.hypercast
Class HTTP_Server

java.lang.Object
  |
  +--edu.virginia.cs.mng.hypercast.HTTP_Server

public final class HTTP_Server
extends java.lang.Object


Field Summary
private static int MAX_BACKLOG
          Required argument to constructor of java.net.ServerSocket
private  int maxNumberOfRequestsInAnySecond
          Statistic.
private  int maxNumberOfResponsesInAnySecond
          Statistic.
private static int NUM_OF_HTTP_THREADS
          Number of threads to handle HTTP requests.
private  int numberOfErrorResponses
          Statistic.
private  int numberOfRequests
          Statistic.
private  int numberOfResponses
          Statistic.
(package private)  HTTP_ServerOverlayHandler overlayHandler
          to handle the overlay request
private  java.util.Vector requestTimeQueue
          Vector of Long.
private  java.util.Vector responseTimeQueue
          Vector of Long.
 java.net.ServerSocket serverSocket
          Socket for new connections.
(package private) static java.lang.String uniquePrefix
          used to generate unique Overlay ID
 
Constructor Summary
(package private) HTTP_Server(int port)
          Attempts to open a ServerSocket at port.
 
Method Summary
 java.net.Socket acceptConnection()
          Accept a connection from the server socket.
private  java.lang.String homePage()
          Prints a simple homepage that has forms for accessing data on server.
static void main(java.lang.String[] args)
          Initializes and starts the web server.
private static java.util.Hashtable parseAttributes(java.lang.String s)
          Reads a string of CGI URL-encoded values and places them into a hashtable.
 java.lang.String processQuery(java.util.StringTokenizer queryLineTokens)
          Accepts HTTP requests and passes them to the overlayHandler.
static int purgeQueue(java.util.Vector v, long t)
          Clears the queue of all elements older than 1 second from t.
private  void purgeQueues(long t)
          Clears the queues of all elements older than 1 second from t.
private  java.lang.String statsPage()
          Prints a simple webpage with the server's statistics server.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

NUM_OF_HTTP_THREADS

private static int NUM_OF_HTTP_THREADS
Number of threads to handle HTTP requests.

numberOfRequests

private int numberOfRequests
Statistic.

numberOfResponses

private int numberOfResponses
Statistic.

numberOfErrorResponses

private int numberOfErrorResponses
Statistic.

maxNumberOfRequestsInAnySecond

private int maxNumberOfRequestsInAnySecond
Statistic.

maxNumberOfResponsesInAnySecond

private int maxNumberOfResponsesInAnySecond
Statistic.

requestTimeQueue

private java.util.Vector requestTimeQueue
Vector of Long. Times of requests - ordered from oldest to newest.

responseTimeQueue

private java.util.Vector responseTimeQueue
Vector of Long. Times of requests - ordered from oldest to newest.

serverSocket

public java.net.ServerSocket serverSocket
Socket for new connections.

MAX_BACKLOG

private static final int MAX_BACKLOG
Required argument to constructor of java.net.ServerSocket

uniquePrefix

static java.lang.String uniquePrefix
used to generate unique Overlay ID

overlayHandler

HTTP_ServerOverlayHandler overlayHandler
to handle the overlay request
Constructor Detail

HTTP_Server

HTTP_Server(int port)
Attempts to open a ServerSocket at port. If it fails to open the socket, it exits.
Method Detail

main

public static void main(java.lang.String[] args)
Initializes and starts the web server. The overlayHandler takes care of overlay requests.

acceptConnection

public java.net.Socket acceptConnection()
                                 throws java.io.IOException
Accept a connection from the server socket. For some reason, Java doesn't list accept as a synchronized method.

processQuery

public java.lang.String processQuery(java.util.StringTokenizer queryLineTokens)
Accepts HTTP requests and passes them to the overlayHandler.

parseAttributes

private static java.util.Hashtable parseAttributes(java.lang.String s)
Reads a string of CGI URL-encoded values and places them into a hashtable.

homePage

private java.lang.String homePage()
Prints a simple homepage that has forms for accessing data on server.

statsPage

private java.lang.String statsPage()
Prints a simple webpage with the server's statistics server.

purgeQueues

private void purgeQueues(long t)
Clears the queues of all elements older than 1 second from t.

purgeQueue

public static int purgeQueue(java.util.Vector v,
                             long t)
Clears the queue of all elements older than 1 second from t.