Index: blimp/client/core/session/connection_status.cc |
diff --git a/blimp/client/core/session/connection_status.cc b/blimp/client/core/session/connection_status.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8893198c11a707f021ea3a4b9731b36f2ae6a05d |
--- /dev/null |
+++ b/blimp/client/core/session/connection_status.cc |
@@ -0,0 +1,52 @@ |
+// Copyright 2016 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. |
+ |
+#include "blimp/client/core/session/connection_status.h" |
+ |
+namespace blimp { |
+namespace client { |
+ |
+ConnectionStatus::ConnectionStatus() : is_connected_(false) {} |
+ConnectionStatus::~ConnectionStatus() = default; |
+ |
+bool ConnectionStatus::IsValid() const { |
+ return !engine_endpoint_.address().empty() && engine_endpoint_.port() != 0; |
+} |
+ |
+const net::IPEndPoint& ConnectionStatus::GetIpEndPoint() { |
+ return engine_endpoint_; |
+} |
+ |
+bool ConnectionStatus::IsConnected() const { |
+ return is_connected_; |
+} |
+ |
+void ConnectionStatus::AddObserver(NetworkEventObserver* observer) { |
+ connection_observers_.AddObserver(observer); |
+} |
+ |
+void ConnectionStatus::RemoveObserver(NetworkEventObserver* observer) { |
+ connection_observers_.RemoveObserver(observer); |
+} |
+ |
+void ConnectionStatus::onAssignmentResult(int result, |
+ const Assignment& assignment) { |
+ if (result == AssignmentRequestResult::ASSIGNMENT_REQUEST_RESULT_OK) { |
+ engine_endpoint_ = assignment.engine_endpoint; |
+ } |
+} |
+ |
+void ConnectionStatus::OnConnected() { |
+ is_connected_ = true; |
+ FOR_EACH_OBSERVER(NetworkEventObserver, connection_observers_, OnConnected()); |
+} |
+ |
+void ConnectionStatus::OnDisconnected(int result) { |
+ is_connected_ = false; |
+ FOR_EACH_OBSERVER(NetworkEventObserver, connection_observers_, |
+ OnDisconnected(result)); |
+} |
+ |
+} // namespace client |
+} // namespace blimp |