• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
13 namespace gcm {
14 
15 // Defines the interface to provide handling and event routing logic for a given
16 // app.
17 class 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