11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef COMPONENTS_GCM_DRIVER_GCM_CONNECTION_OBSERVER_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define COMPONENTS_GCM_DRIVER_GCM_CONNECTION_OBSERVER_H_
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/basictypes.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace net {
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass IPEndPoint;
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace gcm {
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Interface for objects observing GCM connection events.
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GCMConnectionObserver {
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public:
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  GCMConnectionObserver();
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~GCMConnectionObserver();
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Called when a new connection is established and a successful handshake
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // has been performed. Note that |ip_endpoint| is only set if available for
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // the current platform.
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Default implementation does nothing.
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnConnected(const net::IPEndPoint& ip_endpoint);
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Called when the connection is interrupted.
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Default implementation does nothing.
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void OnDisconnected();
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace gcm
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // COMPONENTS_GCM_DRIVER_GCM_CONNECTION_OBSERVER_H_
36