gcm_app_handler.h revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
1// Copyright (c) 2014 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 COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_
6#define COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "components/gcm_driver/gcm_client.h"
12
13namespace gcm {
14
15// Defines the interface to provide handling and event routing logic for a given
16// app.
17class GCMAppHandler {
18 public:
19  GCMAppHandler();
20  virtual ~GCMAppHandler();
21
22  // Called to do all the cleanup when GCM is shutting down.
23  // In the case that multiple apps share the same app handler, it should be
24  // make safe for ShutdownHandler to be called multiple times.
25  virtual void ShutdownHandler() = 0;
26
27  // Called when a GCM message has been received.
28  virtual void OnMessage(const std::string& app_id,
29                         const GCMClient::IncomingMessage& message) = 0;
30
31  // Called when some GCM messages have been deleted from the server.
32  virtual void OnMessagesDeleted(const std::string& app_id) = 0;
33
34  // Called when a GCM message failed to be delivered.
35  virtual void OnSendError(
36      const std::string& app_id,
37      const GCMClient::SendErrorDetails& send_error_details) = 0;
38
39  // Called when a new connection is established and a successful handshake
40  // has been performed. Note that |ip_endpoint| is only set if available for
41  // the current platform.
42  // Default implementation does nothing.
43  virtual void OnConnected(const net::IPEndPoint& ip_endpoint);
44
45  // Called when the connection is interrupted.
46  // Default implementation does nothing.
47  virtual void OnDisconnected();
48
49  // If no app handler has been added with the exact app_id of an incoming
50  // event, all handlers will be asked (in arbitrary order) whether they can
51  // handle the app_id, and the first to return true will receive the event.
52  virtual bool CanHandle(const std::string& app_id) const;
53};
54
55}  // namespace gcm
56
57#endif  // COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_
58