/*
  Tyba HTTP Server, v0.1  
  By Carlos Varela (cavarela@uniandes.edu.co, cvarela@isr.co.jp)
  March, 1996

  v0.2  July 8, 1996  cvarela :  Restructured server classes.
*/

import java.net.*;
import java.io.*;

class HTResponse {

    HTTPCode htcode;
    int noheaders = 0;
    HTHeader headers[] = new HTHeader[255];
    String body = null;  // ?? What about binary documents ??

    HTResponse(String body){
    /** HTResponse returns a default successful HTTP response **/
        defaultHeaders();
        this.htcode = new HTTPCode(200);
        this.body = body;
     }

    HTResponse(int error, String body){
    /** HTResponse returns a default error HTTP response **/
        defaultHeaders();
        this.htcode = new HTTPCode(error);
        this.body = body;
     }

    void send(OutputStream outputStream){
        PrintStream os = new PrintStream(
                         new BufferedOutputStream(outputStream, 1024), false);
        os.print(HTServer.getProtocolVersion() + ' ');
        os.println(htcode);  
        for (int i=0; i<noheaders; i++)
            os.println(headers[i]);        
        os.println();
        if (body != null) {
            os.println(body);
            os.flush();
        }
    }

    void addHeader(String headerLine) {
        this.headers[this.noheaders++] = 
            new HTHeader(headerLine);
    }

    void addHeader(String name, String value) {
        this.headers[this.noheaders++] = 
            new HTHeader(name, value);
    }

    void defaultHeaders(){
        addHeader("Server", HTServer.getServerVersion()); 
    }

}    




