Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1771)

Unified Diff: blimp/engine/renderer/blob_channel_sender_host.h

Issue 1985863002: Incorporate BlobChannel into Blimp image encode/decode pipeline. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blobchannel-helium
Patch Set: Decoupled BlobChannelSenderHost from mojom::BlobChannel Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: blimp/engine/renderer/blob_channel_sender_host.h
diff --git a/blimp/engine/renderer/blob_channel_sender_host.h b/blimp/engine/renderer/blob_channel_sender_host.h
new file mode 100644
index 0000000000000000000000000000000000000000..9daebaa7cb36d8a0ac7210f24510d6aa3b721998
--- /dev/null
+++ b/blimp/engine/renderer/blob_channel_sender_host.h
@@ -0,0 +1,59 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BLIMP_ENGINE_RENDERER_BLOB_CHANNEL_SENDER_HOST_H_
+#define BLIMP_ENGINE_RENDERER_BLOB_CHANNEL_SENDER_HOST_H_
+
+#include <memory>
+#include <string>
+
+#include "base/containers/hash_tables.h"
+#include "blimp/common/blimp_common_export.h"
+#include "blimp/engine/mojo/blob_channel.mojom.h"
+
+namespace blimp {
+namespace engine {
+
+// Host object for communicating with the BlobChannel service across the
+// renderer/browser IPC boundary.
Wez 2016/05/21 01:08:04 Communicating with the BlobChannel service doesn't
Kevin M 2016/05/27 22:35:30 Description updated.
+class BLIMP_COMMON_EXPORT BlobChannelSenderHost {
nyquist 2016/05/24 00:05:41 This is a little bit confusing naming to me. In //
Kevin M 2016/05/27 22:35:30 Done, it's now "proxy".
+ public:
+ // Represents the known cached state of a given blob.
+ // Flags can be combined with boolean AND.
Wez 2016/05/21 01:08:04 Give a little context as to what these actually me
Kevin M 2016/05/27 22:35:31 Done.
+ enum ReplicationState { NOT_STORED = 0, ENGINE = 1 << 1, CLIENT = 1 << 2 };
+
+ BlobChannelSenderHost();
+ ~BlobChannelSenderHost();
+
+ // Indicates whether a given blob is stored on the engine, the client,
+ // or both.
+ // The return value is an integer composed of AND'd ReplicationState flags.
+ // TODO(kmarshall): Synchronize state with data on the Browser side.
+ int GetReplicationState(const std::string& id) const;
Wez 2016/05/21 01:08:04 Would it be cleaner to provide separate IsInClient
Kevin M 2016/05/27 22:35:30 Done.
+
+ // Conditionally stores a blob in the local portion of BlobChannel, if it
+ // doesn't already contain the blob.
Wez 2016/05/21 01:08:04 It's not clear what "local portion" means here.
Kevin M 2016/05/27 22:35:31 Comments for implementation have been removed.
+ // See the documentation for BlobChannel::Put().
+ void Put(const std::string& id, const std::string& data);
+
+ // Conditionally sends a blob to the remote side of the BlobChannel, if it
+ // doesn't already have the blob
+ // See the documentation for BlobChannel::Push().
+ void Push(const std::string& id);
Wez 2016/05/21 01:08:04 Put & Push are just mirroring the BlobChannelSende
Kevin M 2016/05/27 22:35:30 Done.
+
+ private:
+ // BlobChannel Mojo IPC stub.
Wez 2016/05/21 01:08:04 Which is used for...? Receiving the BlobChannel IP
Kevin M 2016/05/27 22:35:31 Done.
+ mojom::BlobChannelPtr blob_channel_;
+
+ // Local copy of the cache state for the local and remote BlobChannel.
+ // TODO(kmarshall): Synchronize with browser side copy.
+ base::hash_map<std::string, int> replication_state_;
Wez 2016/05/21 01:08:04 Wait... so this class is used in the _renderer_?
Kevin M 2016/05/27 22:35:30 Acknowledged.
+
+ DISALLOW_COPY_AND_ASSIGN(BlobChannelSenderHost);
+};
+
+} // namespace engine
+} // namespace blimp
+
+#endif // BLIMP_ENGINE_RENDERER_BLOB_CHANNEL_SENDER_HOST_H_

Powered by Google App Engine
This is Rietveld 408576698