| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef NET_SHARED_DICTIONARY_SHARED_DICTIONARY_H_ |
| #define NET_SHARED_DICTIONARY_SHARED_DICTIONARY_H_ |
| |
| #include <string> |
| |
| #include "base/functional/callback.h" |
| #include "base/memory/ref_counted.h" |
| #include "net/base/hash_value.h" |
| #include "net/base/net_export.h" |
| |
| namespace net { |
| class IOBuffer; |
| |
| // This class is used to read the binary of the shared dictionary. |
| class NET_EXPORT SharedDictionary : public base::RefCounted<SharedDictionary> { |
| public: |
| // Reads the whole binary of the dictionary. If an error has occurred, returns |
| // ERR_FAILED. If the binary of the dictionary is already in the memory |
| // returns OK. Otherwise returns ERR_IO_PENDING and `callback` will be called |
| // asynchronously with OK or ERR_FAILED depending on the success status. |
| virtual int ReadAll(base::OnceCallback<void(int)> callback) = 0; |
| |
| // Returns the buffer which contains the binary of the dictionary. |
| // ReadAll() must have succeeded before calling this method. |
| virtual scoped_refptr<IOBuffer> data() const = 0; |
| |
| // Returns the binary size of the dictionary. It is safe to call this method |
| // before calling ReadAll(). |
| virtual size_t size() const = 0; |
| |
| // Returns the hash of the binary of the dictionary. It is safe to call this |
| // method before calling ReadAll(). |
| virtual const SHA256HashValue& hash() const = 0; |
| |
| // Returns the server-provided id of the dictionary. When this id is not |
| // empty, it will be serialized [RFC8941] and sent in "Dictionary-ID" request |
| // when Chrome can use the dictionary. |
| // https://www.rfc-editor.org/rfc/rfc8941#name-serializing-a-string |
| virtual const std::string& id() const = 0; |
| |
| protected: |
| friend class base::RefCounted<SharedDictionary>; |
| virtual ~SharedDictionary() = default; |
| }; |
| |
| } // namespace net |
| |
| #endif // NET_SHARED_DICTIONARY_SHARED_DICTIONARY_H_ |