public Task <BroadcastStoreMessage> GetStore(Signature signature) { if (signature == null) { throw new ArgumentNullException(nameof(signature)); } var broadcastMetadata = _coreManager.GetBroadcastMetadata(signature, "Store"); if (broadcastMetadata == null) { return(Task.FromResult <BroadcastStoreMessage>(null)); } // Cache { if (_cache_Stores.TryGetValue(broadcastMetadata, out var result)) { return(Task.FromResult(result)); } } return(Task.Run(() => { try { var stream = _coreManager.VolatileGetStream(broadcastMetadata.Metadata, 1024 * 1024 * 32); if (stream == null) { return null; } var content = ContentConverter.FromStream <StoreContent>(stream, 0); if (content == null) { return null; } var result = new BroadcastStoreMessage( broadcastMetadata.Certificate.GetSignature(), broadcastMetadata.CreationTime, content); _cache_Stores[broadcastMetadata] = result; return result; } catch (Exception e) { Log.Error(e); } return null; })); }
public Task <BroadcastStoreMessage> GetStore(Signature signature, DateTime?creationTimeLowerLimit) { if (signature == null) { throw new ArgumentNullException(nameof(signature)); } var BroadcastClue = _coreManager.GetBroadcastClue(signature, "Store"); if (BroadcastClue == null) { return(Task.FromResult <BroadcastStoreMessage>(null)); } if (creationTimeLowerLimit != null && BroadcastClue.CreationTime <= creationTimeLowerLimit) { return(Task.FromResult <BroadcastStoreMessage>(null)); } return(Task.Run(() => { try { var stream = _coreManager.VolatileGetStream(BroadcastClue.Metadata, 1024 * 1024 * 32); if (stream == null) { return null; } var content = ContentConverter.FromStream <StoreContent>(stream, 0); if (content == null) { return null; } var result = new BroadcastStoreMessage( BroadcastClue.Certificate.GetSignature(), BroadcastClue.CreationTime, content); return result; } catch (Exception e) { Log.Error(e); } return null; })); }