1 /**************************************************************** 2 * Licensed to the Apache Software Foundation (ASF) under one * 3 * or more contributor license agreements. See the NOTICE file * 4 * distributed with this work for additional information * 5 * regarding copyright ownership. The ASF licenses this file * 6 * to you under the Apache License, Version 2.0 (the * 7 * "License"); you may not use this file except in compliance * 8 * with the License. You may obtain a copy of the License at * 9 * * 10 * http://www.apache.org/licenses/LICENSE-2.0 * 11 * * 12 * Unless required by applicable law or agreed to in writing, * 13 * software distributed under the License is distributed on an * 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * 15 * KIND, either express or implied. See the License for the * 16 * specific language governing permissions and limitations * 17 * under the License. * 18 ****************************************************************/ 19 20 21 package org.apache.james.socket; 22 23 import org.apache.avalon.framework.logger.Logger; 24 import org.apache.james.util.watchdog.Watchdog; 25 26 import java.io.InputStream; 27 import java.io.OutputStream; 28 import java.io.PrintWriter; 29 import java.net.Socket; 30 31 /** 32 * This is the helper interface provided to ProtocolHandlers to let them 33 * communicate with the outside world. 34 */ 35 public interface ProtocolHandlerHelper { 36 37 /** 38 * Writes a response to the client and flush it. 39 * @param responseString the response string 40 */ 41 public void writeLoggedFlushedResponse(String responseString); 42 43 /** 44 * Writes a response to the client without flushing. 45 * @param responseString the response string 46 */ 47 public void writeLoggedResponse(String responseString); 48 49 /** 50 * The watchdog is used to deal with timeouts. 51 * @return the watchdog instance 52 */ 53 public Watchdog getWatchdog(); 54 55 /** 56 * Provides logging facility to the handler. 57 * @return logger instance 58 */ 59 public Logger getAvalonLogger(); 60 61 /** 62 * getter for the remote hostname 63 * @return remote hostname 64 */ 65 public String getRemoteHost(); 66 67 /** 68 * getter for the remote ip 69 * @return remote ip 70 */ 71 public String getRemoteIP(); 72 73 /** 74 * Returns a CRLF terminated line reader 75 * @return line reader 76 */ 77 public CRLFTerminatedReader getInputReader(); 78 79 /** 80 * Returns the raw input stream 81 * @return the raw inputstream 82 */ 83 public InputStream getInputStream(); 84 85 /** 86 * Returns the raw outputstream 87 * @return outputstream 88 */ 89 public OutputStream getOutputStream(); 90 91 /** 92 * Returns the printwriter. 93 * @return the output printwriter 94 */ 95 public PrintWriter getOutputWriter(); 96 97 /** 98 * Provides basic errorhandling cleanup. 99 * @param e the runtimeexception 100 */ 101 public void defaultErrorHandler(RuntimeException e); 102 103 /** 104 * Provides access to the socket 105 * @return socket 106 */ 107 public Socket getSocket(); 108 109 /** 110 * The name of this handler. 111 * Used for context sensitive logging. 112 * @return the name, not null 113 */ 114 public String getName(); 115 }