• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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