Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / components / gcm_driver / gcm_app_handler.h
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 GCM message was received by GCM server.
40   virtual void OnSendAcknowledged(const std::string& app_id,
41                                   const std::string& message_id) = 0;
42
43   // Called when a new connection is established and a successful handshake
44   // has been performed. Note that |ip_endpoint| is only set if available for
45   // the current platform.
46   // Default implementation does nothing.
47   virtual void OnConnected(const net::IPEndPoint& ip_endpoint);
48
49   // Called when the connection is interrupted.
50   // Default implementation does nothing.
51   virtual void OnDisconnected();
52
53   // If no app handler has been added with the exact app_id of an incoming
54   // event, all handlers will be asked (in arbitrary order) whether they can
55   // handle the app_id, and the first to return true will receive the event.
56   virtual bool CanHandle(const std::string& app_id) const;
57 };
58
59 }  // namespace gcm
60
61 #endif  // COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_