// 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 PPAPI_SHARED_EXPORT 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_