| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef PPAPI_SHARED_IMPL_PPB_TCP_SOCKET_SHARED_H_ |
| #define PPAPI_SHARED_IMPL_PPB_TCP_SOCKET_SHARED_H_ |
| |
| #include "ppapi/shared_impl/ppapi_shared_export.h" |
| |
| namespace ppapi { |
| |
| class PPAPI_SHARED_EXPORT TCPSocketState { |
| public: |
| enum StateType { |
| // The socket hasn't been bound or connected. |
| INITIAL, |
| // The socket has been bound. |
| BOUND, |
| // A connection has been established. |
| CONNECTED, |
| // An SSL connection has been established. |
| SSL_CONNECTED, |
| // The socket is listening. |
| LISTENING, |
| // The socket has been closed. |
| CLOSED |
| }; |
| |
| // Transitions that will change the socket state. Please note that |
| // read/write/accept are not included because they don't change the socket |
| // state. |
| enum TransitionType { NONE, BIND, CONNECT, SSL_CONNECT, LISTEN, CLOSE }; |
| |
| explicit TCPSocketState(StateType state); |
| ~TCPSocketState(); |
| |
| StateType state() const { return state_; } |
| |
| void SetPendingTransition(TransitionType pending_transition); |
| void CompletePendingTransition(bool success); |
| |
| void DoTransition(TransitionType transition, bool success); |
| |
| bool IsValidTransition(TransitionType transition) const; |
| bool IsPending(TransitionType transition) const; |
| |
| bool IsConnected() const; |
| bool IsBound() const; |
| |
| private: |
| StateType state_; |
| TransitionType pending_transition_; |
| }; |
| |
| // TCP socket API versions. |
| enum TCPSocketVersion { |
| // PPB_TCPSocket_Private. |
| TCP_SOCKET_VERSION_PRIVATE, |
| // PPB_TCPSocket v1.0. |
| TCP_SOCKET_VERSION_1_0, |
| // PPB_TCPSocket v1.1 or above. |
| TCP_SOCKET_VERSION_1_1_OR_ABOVE |
| }; |
| |
| } // namespace ppapi |
| |
| #endif // PPAPI_SHARED_IMPL_PPB_TCP_SOCKET_SHARED_H_ |