Index: ppapi/shared_impl/ppb_tcp_socket_shared.h |
diff --git a/ppapi/shared_impl/ppb_tcp_socket_shared.h b/ppapi/shared_impl/ppb_tcp_socket_shared.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c723bdc6e18d6eeec453c61dacca9f3b9897bc6e |
--- /dev/null |
+++ b/ppapi/shared_impl/ppb_tcp_socket_shared.h |
@@ -0,0 +1,74 @@ |
+// 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_ |