1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef MOJO_SPY_SPY_SERVER_IMPL_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define MOJO_SPY_SPY_SERVER_IMPL_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <map> 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/compiler_specific.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/ref_counted.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/system/core.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/spy/public/spy.mojom.h" 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "url/gurl.h" 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SpyServerImpl : 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public base::RefCounted<SpyServerImpl>, 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public InterfaceImpl<spy_api::SpyServer> { 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SpyServerImpl(); 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // spy_api::SpyServer implementation. 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void StartSession( 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch spy_api::VersionPtr version, 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const mojo::Callback<void(spy_api::Result, 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mojo::String)>& callback) OVERRIDE; 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void StopSession( 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const mojo::Callback<void(spy_api::Result)>& callback) OVERRIDE; 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void TrackConnection( 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch uint32_t id, 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch spy_api::ConnectionOptions options, 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const mojo::Callback<void(spy_api::Result)>& callback) OVERRIDE; 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void OnConnectionError() OVERRIDE; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // SpyServerImpl own methods. 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnIntercept(const GURL& url); 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ScopedMessagePipeHandle ServerPipe(); 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch friend class base::RefCounted<SpyServerImpl>; 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~SpyServerImpl(); 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Item models the entities that we track by IDs. 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch struct Item; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MessagePipe pipe_; 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool has_session_; 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::map<uint32_t, Item*> items_; 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace mojo 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // MOJO_SPY_SPY_SERVER_IMPL_H_ 60