1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef PPAPI_SHARED_IMPL_PPB_TCP_SOCKET_SHARED_H_ 6 #define PPAPI_SHARED_IMPL_PPB_TCP_SOCKET_SHARED_H_ 7 8 #include "ppapi/shared_impl/ppapi_shared_export.h" 9 10 namespace ppapi { 11 12 class PPAPI_SHARED_EXPORT TCPSocketState { 13 public: 14 enum StateType { 15 // The socket hasn't been bound or connected. 16 INITIAL, 17 // The socket has been bound. 18 BOUND, 19 // A connection has been established. 20 CONNECTED, 21 // An SSL connection has been established. 22 SSL_CONNECTED, 23 // The socket is listening. 24 LISTENING, 25 // The socket has been closed. 26 CLOSED 27 }; 28 29 // Transitions that will change the socket state. Please note that 30 // read/write/accept are not included because they don't change the socket 31 // state. 32 enum TransitionType { NONE, BIND, CONNECT, SSL_CONNECT, LISTEN, CLOSE }; 33 34 explicit TCPSocketState(StateType state); 35 ~TCPSocketState(); 36 state()37 StateType state() const { return state_; } 38 39 void SetPendingTransition(TransitionType pending_transition); 40 void CompletePendingTransition(bool success); 41 42 void DoTransition(TransitionType transition, bool success); 43 44 bool IsValidTransition(TransitionType transition) const; 45 bool IsPending(TransitionType transition) const; 46 47 bool IsConnected() const; 48 bool IsBound() const; 49 50 private: 51 StateType state_; 52 TransitionType pending_transition_; 53 }; 54 55 // TCP socket API versions. 56 enum PPAPI_SHARED_EXPORT TCPSocketVersion { 57 // PPB_TCPSocket_Private. 58 TCP_SOCKET_VERSION_PRIVATE, 59 // PPB_TCPSocket v1.0. 60 TCP_SOCKET_VERSION_1_0, 61 // PPB_TCPSocket v1.1 or above. 62 TCP_SOCKET_VERSION_1_1_OR_ABOVE 63 }; 64 65 } // namespace ppapi 66 67 #endif // PPAPI_SHARED_IMPL_PPB_TCP_SOCKET_SHARED_H_ 68