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 package org.apache.mina.example.httpserver.codec;
21
22 import org.apache.mina.common.IdleStatus;
23 import org.apache.mina.common.IoHandler;
24 import org.apache.mina.common.IoHandlerAdapter;
25 import org.apache.mina.common.IoSession;
26 import org.apache.mina.util.SessionLog;
27
28 /**
29 * An {@link IoHandler} for HTTP.
30 *
31 * @author The Apache Directory Project (mina-dev@directory.apache.org)
32 * @version $Rev: 555855 $, $Date: 2007-07-13 12:19:00 +0900 (Fri, 13 Jul 2007) $
33 */
34 public class ServerHandler extends IoHandlerAdapter {
35 @Override
36 public void sessionOpened(IoSession session) {
37 // set idle time to 60 seconds
38 session.setIdleTime(IdleStatus.BOTH_IDLE, 60);
39 }
40
41 @Override
42 public void messageReceived(IoSession session, Object message) {
43 // Check that we can service the request context
44 HttpResponseMessage response = new HttpResponseMessage();
45 response.setContentType("text/plain");
46 response.setResponseCode(HttpResponseMessage.HTTP_STATUS_SUCCESS);
47 response.appendBody("CONNECTED");
48
49 // msg.setResponseCode(HttpResponseMessage.HTTP_STATUS_SUCCESS);
50 // byte[] b = new byte[ta.buffer.limit()];
51 // ((ByteBuffer)ta.buffer.rewind()).get(b);
52 // msg.appendBody(b);
53 // System.out.println("####################");
54 // System.out.println(" GET_TILE RESPONSE SENT - ATTACHMENT GOOD DIAMOND.SI="+d.si+
55 // ", "+new java.text.SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss.SSS").format(new java.util.Date()));
56 // System.out.println("#################### - status="+ta.state+", index="+message.getIndex());
57
58 //// Unknown request
59 // response = new HttpResponseMessage();
60 // response.setResponseCode(HttpResponseMessage.HTTP_STATUS_NOT_FOUND);
61 // response.appendBody(String.format(
62 // "<html><body><h1>UNKNOWN REQUEST %d</h1></body></html>",
63 // HttpResponseMessage.HTTP_STATUS_NOT_FOUND));
64
65 if (response != null) {
66 session.write(response).join();
67 }
68 }
69
70 @Override
71 public void sessionIdle(IoSession session, IdleStatus status) {
72 SessionLog.info(session, "Disconnecting the idle.");
73 session.close();
74 }
75
76 @Override
77 public void exceptionCaught(IoSession session, Throwable cause) {
78 session.close();
79 }
80 }