blob: ad5a3772fa6e47ae6f1356d93455d597b1a36530 [file] [log] [blame]
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08001/**
2* Copyright 2011, Big Switch Networks, Inc.
3* Originally created by David Erickson, Stanford University
4*
5* Licensed under the Apache License, Version 2.0 (the "License"); you may
6* not use this file except in compliance with the License. You may obtain
7* a copy of the License at
8*
9* http://www.apache.org/licenses/LICENSE-2.0
10*
11* Unless required by applicable law or agreed to in writing, software
12* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14* License for the specific language governing permissions and limitations
15* under the License.
16**/
17
18package net.floodlightcontroller.core.internal;
19
20/**
21 * Wrapper class to hold state for the OpenFlow switch connection
22 * @author readams
23 */
24class OFChannelState {
25
26 /**
27 * State for handling the switch handshake
28 */
29 protected enum HandshakeState {
30 /**
31 * Beginning state
32 */
33 START,
34
35 /**
36 * Received HELLO from switch
37 */
38 HELLO,
39
40 /**
41 * We've received the features reply
42 * Waiting for Config and Description reply
43 */
44 FEATURES_REPLY,
45
46 /**
47 * Switch is ready for processing messages
48 */
49 READY
50
51 }
52
53 protected volatile HandshakeState hsState = HandshakeState.START;
54 protected boolean hasGetConfigReply = false;
55 protected boolean hasDescription = false;
56
57 // The firstRoleReplyRecevied flag indicates if we have received the
58 // first role reply message on this connection (in response to the
59 // role request sent after the handshake). If role support is disabled
60 // on the controller we also set this flag to true.
61 // The flag is used to decide if the flow table should be wiped
62 // @see Controller.handleRoleReplyMessage()
63 protected boolean firstRoleReplyReceived = false;
64}