ppb_tcp_socket_shared.h revision 68043e1e95eeb07d5cae7aca370b26518b0867d6
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
10namespace ppapi {
11
12class 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 {
33    NONE,
34    BIND,
35    CONNECT,
36    SSL_CONNECT,
37    LISTEN,
38    CLOSE
39  };
40
41  explicit TCPSocketState(StateType state);
42  ~TCPSocketState();
43
44  StateType state() const { return state_; }
45
46  void SetPendingTransition(TransitionType pending_transition);
47  void CompletePendingTransition(bool success);
48
49  void DoTransition(TransitionType transition, bool success);
50
51  bool IsValidTransition(TransitionType transition) const;
52  bool IsPending(TransitionType transition) const;
53
54  bool IsConnected() const;
55  bool IsBound() const;
56
57 private:
58  StateType state_;
59  TransitionType pending_transition_;
60};
61
62// TCP socket API versions.
63enum PPAPI_SHARED_EXPORT TCPSocketVersion {
64  // PPB_TCPSocket_Private.
65  TCP_SOCKET_VERSION_PRIVATE,
66  // PPB_TCPSocket v1.0.
67  TCP_SOCKET_VERSION_1_0,
68  // PPB_TCPSocket v1.1 or above.
69  TCP_SOCKET_VERSION_1_1_OR_ABOVE
70};
71
72}  // namespace ppapi
73
74#endif  // PPAPI_SHARED_IMPL_PPB_TCP_SOCKET_SHARED_H_
75