2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.protocol.framework;
10 import java.io.Closeable;
13 * Protocol Session represents the finite state machine in underlying protocol, including timers and its purpose is to
14 * create a connection between server and client. Session is automatically started, when TCP connection is created, but
15 * can be stopped manually. If the session is up, it has to redirect messages to/from user. Handles also malformed
16 * messages and unknown requests.
18 * This interface should be implemented by a final class representing a protocol specific session.
20 public interface ProtocolSession extends Closeable {
23 * Starts the session. This method should be used only internally by the Dispatcher.
25 public void startSession();
28 * Handles incoming message (parsing, reacting if necessary).
30 * @param msg incoming message
32 public void handleMessage(final ProtocolMessage msg);
35 * Handles malformed message when a deserializer exception occurred. The handling might be different from when a
36 * documented exception is thrown.
38 * @param e deserializer exception that occurred
40 public void handleMalformedMessage(final DeserializerException e);
43 * Handles malformed message when a documented exception occurred. The handling might be different from when a
44 * deserializer exception is thrown.
46 * @param e documented exception that occurred
48 public void handleMalformedMessage(final DocumentedException e);
51 * Called when reached the end of input stream while reading.
53 public void endOfInput();
56 * Getter for message factory
58 * @return protocol specific message factory
60 public ProtocolMessageFactory getMessageFactory();
63 * Returns the maximum message size (in bytes) for purposes of dispatcher buffering -- the dispatcher allocates a
64 * buffer this big, and if it gets full without making decoding progress, the dispatcher terminates the session.
66 * @return maximum message size
68 public int maximumMessageSize();