OSDN Git Service

CVS最新版の全ファイルを追加
[spring-ext/ozacc-mail.git] / src / test / com / dumbster / smtp / SmtpState.java
1 /*\r
2  * Dumbster: a dummy SMTP server.\r
3  * Copyright (C) 2003, Jason Paul Kitchen\r
4  * lilnottsman@yahoo.com\r
5  *\r
6  * This library is free software; you can redistribute it and/or\r
7  * modify it under the terms of the GNU Lesser General Public\r
8  * License as published by the Free Software Foundation; either\r
9  * version 2.1 of the License, or (at your option) any later version.\r
10  *\r
11  * This library is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
14  * Lesser General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU Lesser General Public\r
17  * License along with this library; if not, write to the Free Software\r
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
19  */\r
20 package com.dumbster.smtp;\r
21 \r
22 /**\r
23  * SMTP server state.\r
24  */\r
25 public class SmtpState {\r
26 \r
27         /** Internal representation of the state. */\r
28         private byte value;\r
29 \r
30         /** Internal representation of the CONNECT state. */\r
31         private static final byte CONNECT_BYTE = 1;\r
32 \r
33         /** Internal representation of the GREET state. */\r
34         private static final byte GREET_BYTE = 2;\r
35 \r
36         /** Internal representation of the MAIL state. */\r
37         private static final byte MAIL_BYTE = 3;\r
38 \r
39         /** Internal representation of the RCPT state. */\r
40         private static final byte RCPT_BYTE = 4;\r
41 \r
42         /** Internal representation of the DATA_HEADER state. */\r
43         private static final byte DATA_HEADER_BYTE = 5;\r
44 \r
45         /** Internal representation of the DATA_BODY state. */\r
46         private static final byte DATA_BODY_BYTE = 6;\r
47 \r
48         /** Internal representation of the QUIT state. */\r
49         private static final byte QUIT_BYTE = 7;\r
50 \r
51         /** CONNECT state: waiting for a client connection. */\r
52         public static final SmtpState CONNECT = new SmtpState(CONNECT_BYTE);\r
53 \r
54         /** GREET state: wating for a ELHO message. */\r
55         public static final SmtpState GREET = new SmtpState(GREET_BYTE);\r
56 \r
57         /** MAIL state: waiting for the MAIL FROM: command. */\r
58         public static final SmtpState MAIL = new SmtpState(MAIL_BYTE);\r
59 \r
60         /** RCPT state: waiting for a RCPT <email address> command. */\r
61         public static final SmtpState RCPT = new SmtpState(RCPT_BYTE);\r
62 \r
63         /** Waiting for headers. */\r
64         public static final SmtpState DATA_HDR = new SmtpState(DATA_HEADER_BYTE);\r
65 \r
66         /** Processing body text. */\r
67         public static final SmtpState DATA_BODY = new SmtpState(DATA_BODY_BYTE);\r
68 \r
69         /** End of client transmission. */\r
70         public static final SmtpState QUIT = new SmtpState(QUIT_BYTE);\r
71 \r
72         /**\r
73          * Create a new SmtpState object. Private to ensure that only valid states can be created.\r
74          * @param value one of the _BYTE values.\r
75          */\r
76         private SmtpState(byte value) {\r
77                 this.value = value;\r
78         }\r
79 \r
80         /**\r
81          * String representation of this SmtpState.\r
82          * @return a String\r
83          */\r
84         public String toString() {\r
85                 switch (value) {\r
86                         case CONNECT_BYTE:\r
87                                 return "CONNECT";\r
88                         case GREET_BYTE:\r
89                                 return "GREET";\r
90                         case MAIL_BYTE:\r
91                                 return "MAIL";\r
92                         case RCPT_BYTE:\r
93                                 return "RCPT";\r
94                         case DATA_HEADER_BYTE:\r
95                                 return "DATA_HDR";\r
96                         case DATA_BODY_BYTE:\r
97                                 return "DATA_BODY";\r
98                         case QUIT_BYTE:\r
99                                 return "QUIT";\r
100                         default:\r
101                                 return "Unknown";\r
102                 }\r
103         }\r
104 }