public IndexInfo GetIndexInfo() { IndexInfo ret = new IndexInfo(); ret.startTime = t_s; ret.endTime = t_e; ret.isSealed = isSealed; ret.indexHash = IndexHash; ret.chunkListHash = chunkListHash; return(ret); }
protected Byte[] GetDataToHash() { byte[] data = { }; data = data.Concat(BitConverter.GetBytes(startTime)).Concat(BitConverter.GetBytes(duration)).ToArray(); for (int i = 0; i < index_infos.Count; ++i) { IndexInfo ii = index_infos[i]; data = data.Concat(BitConverter.GetBytes(ii.startTime)).ToArray(); data = data.Concat(BitConverter.GetBytes(ii.endTime)).ToArray(); data = data.Concat(ii.indexHash).ToArray(); } return(data); }
public FileDataStream(Logger Log, FqStreamID FQSID, int num, CallerInfo Ci, LocationInfo Li, StreamFactory.StreamOp op, StreamFactory.StreamSecurityType type, CompressionType ctype, int ChunkSizeForUpload, int UploadThreadPoolSize, string prkey, string pukey, MetaDataService.ACLEntry key_md, IndexInfo ii, bool alreadyExists = true) : base(Log, FQSID, num, Ci, Li, op, type, ctype, ChunkSizeForUpload, UploadThreadPoolSize, prkey, pukey, key_md, ii, alreadyExists: alreadyExists) { remoteRead = false; // if remote stream, read op. fetch valueFile when needed for get queries if (this.synchronizer != null && streamop == StreamFactory.StreamOp.Read) { remoteRead = true; } }
protected void VerifyIntegrity(IndexInfo ii, bool alreadyExists) { // Verify intergrity if (logger != null) { logger.Log("Start ValueDataStream Verify Integrity"); } if ((VerifyIndex(ii.indexHash) == false) || (VerifyChunkListHash(ii.chunkListHash) == false)) { throw new InvalidDataException("Couldn't verify metadata integrity/freshness for segment"); } if (logger != null) { logger.Log("End ValueDataStream Verify Integrity"); } }
protected void FetchAndFillIndex(IndexInfo ii, bool alreadyExists = true) { if (alreadyExists == true) { if (logger != null) { logger.Log("Start ValueDataStream Fetch Data At Open"); } CreateSync(SynchronizeDirection.Download); Sync(); if (logger != null) { logger.Log("End ValueDataStream Fetch Data At Open"); } // Index related t_s = ii.startTime; t_e = ii.endTime; isSealed = ii.isSealed; if (logger != null) { logger.Log("Start ValueDataStream Build Index"); } if (!isSealed) { if (FillIndex() == false) { throw new InvalidDataException("Couldn't fill index for stream"); } } else { BuildIndexHeader(); } if (logger != null) { logger.Log("End ValueDataStream Build Index"); } if (streamtype == StreamFactory.StreamSecurityType.Secure) { VerifyIntegrity(ii, alreadyExists); } } }
public ValueDataStream(Logger Log, FqStreamID FQSID, int num, CallerInfo Ci, LocationInfo Li, StreamFactory.StreamOp op, StreamFactory.StreamSecurityType type, CompressionType ctype, int ChunkSizeForUpload, int UploadThreadPoolSize, string prkey, string pukey, MetaDataService.ACLEntry key_md, IndexInfo ii, bool alreadyExists = true) { Initialize(Log, FQSID, num, Ci, Li, op, type, ctype, ChunkSizeForUpload, UploadThreadPoolSize); if (streamtype == StreamFactory.StreamSecurityType.Secure) { // Key related OwnerPriKey = prkey; OwnerPubKey = pukey; acl_md = key_md; } if (logger != null) { logger.Log("End ValueDataStream Init DataStructures"); } // Fetch data FetchAndFillIndex(ii, alreadyExists); // Reset sync to upload if (op == StreamFactory.StreamOp.Write) { CreateSync(SynchronizeDirection.Upload); } isClosed = false; if (logger != null) { logger.Log("Start ValueDataStream ReadFromDisk Open"); } OpenStream(); if (logger != null) { logger.Log("End ValueDataStream ReadFromDisk Open"); } disposed = false; }