gcm_app_handler.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2014 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/gcm_driver/gcm_client.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace gcm { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Defines the interface to provide handling and event routing logic for a given 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// app. 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class GCMAppHandler { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GCMAppHandler(); 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ~GCMAppHandler(); 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Called to do all the cleanup when GCM is shutting down. 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // In the case that multiple apps share the same app handler, it should be 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // make safe for ShutdownHandler to be called multiple times. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void ShutdownHandler() = 0; 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called when a GCM message has been received. 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnMessage(const std::string& app_id, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GCMClient::IncomingMessage& message) = 0; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called when some GCM messages have been deleted from the server. 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnMessagesDeleted(const std::string& app_id) = 0; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called when a GCM message failed to be delivered. 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnSendError( 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& app_id, 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GCMClient::SendErrorDetails& send_error_details) = 0; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Called when a GCM message was received by GCM server. 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnSendAcknowledged(const std::string& app_id, 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& message_id) = 0; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // If no app handler has been added with the exact app_id of an incoming 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // event, all handlers will be asked (in arbitrary order) whether they can 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // handle the app_id, and the first to return true will receive the event. 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool CanHandle(const std::string& app_id) const; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace gcm 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // COMPONENTS_GCM_DRIVER_GCM_APP_HANDLER_H_ 52