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
22 package org.apache.james.pop3server;
23
24
25 import org.apache.james.services.MailRepository;
26 import org.apache.james.util.watchdog.Watchdog;
27
28 import java.io.IOException;
29 import java.io.OutputStream;
30 import java.util.HashMap;
31 import java.util.List;
32
33 /**
34 * All the handlers access this interface to communicate with
35 * POP3Handler object
36 */
37
38 public interface POP3Session {
39
40 /**
41 * Writes response string to the client
42 *
43 * @param respString String that needs to send to the client
44 */
45 void writeResponse(String respString);
46
47 /**
48 * Reads a line of characters off the command line.
49 *
50 * @return the trimmed input line
51 * @throws IOException if an exception is generated reading in the input characters
52 */
53 String readCommandLine() throws IOException;
54
55
56 /**
57 * Returns ResponseBuffer, this optimizes the unecessary creation of resources
58 * by each handler object
59 *
60 * @return responseBuffer
61 */
62 StringBuffer getResponseBuffer();
63
64 /**
65 * Clears the response buffer, returning the String of characters in the buffer.
66 *
67 * @return the data in the response buffer
68 */
69 String clearResponseBuffer();
70
71 /**
72 * Returns currently process command name
73 *
74 * @return current command name
75 */
76 String getCommandName();
77
78 /**
79 * Returns currently process command argument
80 *
81 * @return current command argument
82 */
83 String getCommandArgument();
84
85 /**
86 * Returns host name of the client
87 *
88 * @return hostname of the client
89 */
90 String getRemoteHost();
91
92 /**
93 * Returns host ip address of the client
94 *
95 * @return host ip address of the client
96 */
97 String getRemoteIPAddress();
98
99 /**
100 * this makes the session to close
101 *
102 */
103 void endSession();
104
105 /**
106 * Returns the session status
107 *
108 * @return if the session is open or closed
109 */
110 boolean isSessionEnded();
111
112 /**
113 * Returns Map that consists of the state of the POP3Session
114 *
115 * @return map of the current POP3Session state
116 */
117 HashMap getState();
118
119 /**
120 * Resets message-specific, but not authenticated user, state.
121 *
122 */
123 void resetState();
124
125 /**
126 * Returns POP3Handler service wide configuration
127 *
128 * @return POP3HandlerConfigurationData
129 */
130 POP3HandlerConfigurationData getConfigurationData();
131
132 /**
133 * Returns the user name associated with this POP3 interaction.
134 *
135 * @return the user name
136 */
137 String getUser();
138
139 /**
140 * Sets the user name associated with this POP3 interaction.
141 *
142 * @param user the user name
143 */
144 void setUser(String user);
145
146 /**
147 * Returns Watchdog object used for handling timeout
148 *
149 * @return Watchdog object
150 */
151 Watchdog getWatchdog();
152
153 /**
154 * Returns the current handler state
155 *
156 * @return handler state
157 */
158 int getHandlerState();
159
160 /**
161 * Sets the new handler state
162 *
163 * @param handlerState state
164 */
165 void setHandlerState(int handlerState);
166
167 /**
168 * Returns the current user inbox
169 *
170 * @return MailRepository
171 */
172 MailRepository getUserInbox();
173
174 /**
175 * Sets the user's mail repository
176 *
177 * @param userInbox userInbox
178 */
179 void setUserInbox(MailRepository userInbox);
180
181 /**
182 * Returns the mail list contained in the mailbox
183 *
184 * @return mailbox content
185 */
186 List getUserMailbox();
187
188 /**
189 * Sets a new mailbox content
190 *
191 * @param userMailbox mailbox
192 */
193 void setUserMailbox(List userMailbox);
194
195 /**
196 * Returns the backup mailbox
197 *
198 * @return list backup
199 */
200 List getBackupUserMailbox();
201
202
203 /**
204 * Sets a new backup mailbox content
205 *
206 * @param backupUserMailbox the mailbox backup
207 */
208 void setBackupUserMailbox(List backupUserMailbox);
209
210 /**
211 * Returns the raw output stream
212 *
213 * @return the raw outputstream
214 */
215 OutputStream getOutputStream();
216
217 }
218