Example #1
0
        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);
        }
Example #2
0
 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);
 }
Example #3
0
 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;
     }
 }
Example #4
0
 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");
     }
 }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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;
        }