FileDocCategorySizeDatePackage
ClientNetworkWrapper.javaAPI DocExample2389Thu Nov 08 00:23:44 GMT 2001com.ora.rmibook.chapter3

ClientNetworkWrapper.java

package com.ora.rmibook.chapter3;


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


public class ClientNetworkWrapper extends NetworkBaseClass implements PrinterConstants {
    private String _serverMachine;
    private int _serverPort;
    public ClientNetworkWrapper() {
        this (DEFAULT_SERVER_NAME, DEFAULT_SERVER_PORT);
    }

    public ClientNetworkWrapper(String serverMachine, int serverPort) {
        _serverMachine = serverMachine;
        _serverPort = serverPort;
    }

    public void sendDocumentToPrinter(InputStream actualDocument)
        throws ConnectionException, PrinterException {
        sendDocumentToPrinter(actualDocument, DEFAULT_DOCUMENT_TYPE,
            DEFAULT_PRINT_TWO_SIDED, DEFAULT_PRINT_QUALITY);
    }

    public void sendDocumentToPrinter(InputStream actualDocument,
        int documentType, boolean printTwoSided, int printQuality)
        throws ConnectionException, PrinterException {
        DocumentDescription documentToSend;

        try {
            documentToSend = new DocumentDescription(actualDocument, documentType, printTwoSided, printQuality);
        } catch (IOException e) {
            throw new ConnectionException();
        }
        sendDocumentToPrinter(documentToSend);
    }

    public void sendDocumentToPrinter(DocumentDescription documentDescription)
        throws ConnectionException, PrinterException {
        Socket connection = null;

        try {
            connection = new Socket(_serverMachine, _serverPort);
            documentDescription.writeToStream(connection.getOutputStream());
            readStatusFromSocket(connection);
        } catch (IOException e) {
            e.printStackTrace();
            throw new ConnectionException();
        }
        closeSocket(connection);
    }

    private void readStatusFromSocket(Socket connection)
        throws PrinterException, IOException {
        InputStream inputStream = connection.getInputStream();
        DataInputStream dataInputStream = new DataInputStream(inputStream);
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
        boolean response = dataInputStream.readBoolean();

        if (response) {
            return;
        }
        PrinterException error = new PrinterException(inputStream);

        throw error;
    }
}