17 #include <unordered_map> 32 id<ShakaPlayerStorageClient>
client()
const {
36 void set_client(id<ShakaPlayerStorageClient>
client) {
48 __weak id<ShakaPlayerStorageClient> _client;
51 std::unordered_map<std::string, std::string> ToUnorderedMap(
52 NSDictionary<NSString *, NSString *> *dict) {
53 std::unordered_map<std::string, std::string> ret;
54 ret.reserve([dict count]);
55 for (NSString *key in dict) {
56 ret.emplace(key.UTF8String, dict[key].UTF8String);
66 std::shared_ptr<shaka::JsManager>
_engine;
73 - (instancetype)init {
74 return [
self initWithPlayer:nil andError:nil];
77 - (instancetype)initWithError:(NSError *__autoreleasing *)error {
78 return [
self initWithPlayer:nil andError:error];
81 - (instancetype)initWithPlayer:(
ShakaPlayer *)player andError:(NSError *__autoreleasing *)error {
82 if (!(
self = [super init]))
86 _storage =
new shaka::Storage(_engine.get(), player ? [player playerInstance] :
nullptr);
89 if (results.has_error()) {
93 LOG(ERROR) <<
"Error creating Storage instance: " << results.error();
103 - (id<ShakaPlayerStorageClient>)
client {
104 return _client.client();
107 - (void)setClient:(id<ShakaPlayerStorageClient>)
client {
108 _client.set_client(
client);
112 auto results = _storage->GetStoreInProgress();
113 if (results.has_error())
116 return results.results();
120 auto future = _storage->Destroy();
124 - (void)listWithBlock:(
void (^)(NSArray<ShakaStoredContent *> *,
ShakaPlayerError *))block {
125 auto results = _storage->List();
130 auto results = _storage->Remove(content_uri.UTF8String);
134 - (void)removeEmeSessionsWithBlock:(
void (^)(BOOL,
ShakaPlayerError *))block {
135 auto results = _storage->RemoveEmeSessions();
140 auto results = _storage->Store(uri.UTF8String);
144 - (void)store:(NSString *)uri
145 withAppMetadata:(NSDictionary<NSString *, NSString *> *)data
147 auto results = _storage->Store(uri.UTF8String, ToUnorderedMap(data));
152 - (void)configure:(const NSString *)namePath withBool:(BOOL)value {
153 _storage->Configure(namePath.UTF8String, static_cast<bool>(value));
156 - (void)configure:(const NSString *)namePath withDouble:(
double)value {
157 _storage->Configure(namePath.UTF8String, value);
160 - (void)configure:(const NSString *)namePath withString:(const NSString *)value {
161 _storage->Configure(namePath.UTF8String, value.UTF8String);
164 - (void)configureWithDefault:(const NSString *)namePath {
shaka::Storage * _storage
void(^ ShakaPlayerAsyncBlock)(ShakaPlayerError *_Nullable)
std::shared_ptr< shaka::JsManager > ShakaGetGlobalEngine()
id< ShakaPlayerClient > client
AsyncResults< void > Initialize(Client *client=nullptr)
void DispatchObjcEvent(__weak id weak_client, SEL selector, Args... args)
void CallBlockForFuture(This that, AsyncResults< Ret > future, Func block)
const DefaultValueType DefaultValue
std::shared_ptr< shaka::JsManager > _engine