public void Add(IIdentifier id, IStreamedData data)
        {
            _storage.Add(new IdentifierStringToLowerBased(id.IdentyString), data);
            var storedData = _storage.Datas.First(sd => sd.Id.IdentyString == id.IdentyString);

            _dataIdentifiers.Value.Add(new StreamableDataWithIdSimple(new IdentifierStringToLowerBased(id.IdentyString), storedData.Data));             // data must be taken from storage after adding
        }
Beispiel #2
0
        public IStreamedData Add(IIdentifier id, IStreamedData data, Action <double> progressChangeAction)
        {
            var newlyStoredData = _streamedDataStorage.Add(id, data, progressChangeAction);

            _streamedDatas.Add(new PsnDataRelayStream(newlyStoredData, id));
            return(newlyStoredData);
        }
Beispiel #3
0
        public PsnDataFaultReasonStorageFtpStream(IStreamedData relayOnStream, IIdentifier id)
        {
            _relayOnStream = relayOnStream;
            _id            = id;
            _faultReason   = new Lazy <string>(() => {
                var buffer = new byte[10];
                using (var stream = _relayOnStream.GetStreamForReading()) {
                    stream.Read(buffer, 0, 10);
                }

                var result = string.Empty;
                result    += "Номер протокола: 0x" + buffer[0].ToString("X2") + buffer[1].ToString("X2") + Environment.NewLine;
                result    += "Причина создания дампа: "
                             + buffer[3].ToString("X2") + " "
                             + buffer[4].ToString("X2") + " "
                             + buffer[5].ToString("X2") + " "
                             + buffer[6].ToString("X2") + " "
                             + "  "
                             + buffer[7].ToString("X2") + " "
                             + buffer[8].ToString("X2") + " "
                             + buffer[9].ToString("X2") + " "
                             + buffer[10].ToString("X2");
                return(result);
            });
        }
Beispiel #4
0
        public sealed override IStreamedData ExecuteInMemory(IStreamedData input)
        {
            var sequenceInput = ArgumentUtility.CheckNotNullAndType <StreamedSequence>("input", input);

            var executeMethod = s_executeMethod.MakeGenericMethod(sequenceInput.DataInfo.ResultItemType);

            return((StreamedValue)InvokeExecuteMethod(executeMethod, sequenceInput));
        }
Beispiel #5
0
        public PsnDataRelayStream(IStreamedData relayOnStream, IIdentifier id)
        {
            _relayOnStream = relayOnStream;
            Id             = id;

            var handler = new PsnBinHandlerMappedLite(GetStreamForReading);

            _psnDataHandler     = handler;
            _psnDataHandlerBack = handler;

            PagesInformation   = new PsnDataPagedHandlerRelay(handler);
            _loadedTrendsCount = 0;
        }
Beispiel #6
0
        public void Add(IIdentifier id, IStreamedData data)
        {
            var filename = Path.Combine(_directoryPath, id.IdentyString);

            if (File.Exists(filename))
            {
                throw new Exception("File allready exists " + filename);
            }
            using (var dst = File.Create(filename)) {
                using (var src = data.GetStreamForReading()) {
                    src.CopyTo(dst);
                }
            }
        }
Beispiel #7
0
        /// <inheritdoc />
        public sealed override IStreamedData ExecuteInMemory(IStreamedData input)
        {
            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }
            if (!(input is StreamedSequence streamedSequence))
            {
                throw new ArgumentException($"{nameof(input)} must be of type {typeof(StreamedSequence)}");
            }

            var executeMethod = ExecuteMethod.MakeGenericMethod(streamedSequence.DataInfo.ResultItemType);

            return((AsyncStreamedValue)InvokeExecuteMethod(executeMethod, streamedSequence));
        }
Beispiel #8
0
        public IStreamedData Add(IIdentifier id, IStreamedData data, Action <double> progressChangeAction)
        {
            var saveFilename = Path.Combine(_path, "PSN." + id + ".data.bin");

            if (File.Exists(saveFilename))
            {
                throw new Exception("Ћог с такими данными уже сохранен в репозитории");
            }

            using (var s = data.GetStreamForReading()) {
                using (var d = File.Create(saveFilename)) {
                    s.CopyToWithProgress(d, progressChangeAction);
                }
            }
            return(new StreamedFile(saveFilename));
        }
Beispiel #9
0
        /// <summary>
        /// Invokes a given generic method on an <see cref="IStreamedData"/> input via Reflection. Use this to implement
        /// <see cref="ExecuteInMemory(IStreamedData)"/> by defining a strongly typed, generic variant
        /// of <see cref="ExecuteInMemory(IStreamedData)"/>; then invoke that strongly typed
        /// variant via  <see cref="InvokeGenericExecuteMethod{TInput,TResult}"/>.
        /// </summary>
        /// <typeparam name="TInput">The type of <see cref="IStreamedData"/> expected as an input to <paramref name="genericExecuteCaller"/>.</typeparam>
        /// <typeparam name="TResult">The type of <see cref="IStreamedData"/> expected as the output of <paramref name="genericExecuteCaller"/>.</typeparam>
        /// <param name="input">The input <see cref="IStreamedData"/> object to invoke the method on..</param>
        /// <param name="genericExecuteCaller">A delegate holding exactly one public generic method with exactly one generic argument. This method is
        /// called via Reflection on the given <paramref name="input"/> argument.</param>
        /// <returns>The result of invoking the method in <paramref name="genericExecuteCaller"/> on <paramref name="input"/>.</returns>
        /// <example>
        /// The <see cref="CountResultOperator"/> uses this method as follows:
        /// <code>
        /// public IStreamedData ExecuteInMemory (IStreamedData input)
        /// {
        ///   ArgumentUtility.CheckNotNull ("input", input);
        ///   return InvokeGenericExecuteMethod&lt;StreamedSequence, StreamedValue&gt; (input, ExecuteInMemory&lt;object&gt;);
        /// }
        ///
        /// public StreamedValue ExecuteInMemory&lt;T&gt; (StreamedSequence input)
        /// {
        ///   var sequence = input.GetTypedSequence&lt;T&gt; ();
        ///   var result = sequence.Sequence.Count ();
        ///   return new StreamedValue (result);
        /// }
        /// </code>
        /// </example>
        protected TResult InvokeGenericExecuteMethod <TInput, TResult>(IStreamedData input, Func <TInput, TResult> genericExecuteCaller)
            where TInput : IStreamedData
            where TResult : IStreamedData
        {
            var method = genericExecuteCaller.Method;

            if (!method.IsGenericMethod || method.GetGenericArguments().Length != 1)
            {
                throw new ArgumentException(
                          "Method to invoke ('" + method.Name + "') must be a generic method with exactly one generic argument.",
                          "genericExecuteCaller");
            }

            var closedGenericMethod = input.DataInfo.MakeClosedGenericExecuteMethod(method.GetGenericMethodDefinition());

            return((TResult)InvokeExecuteMethod(closedGenericMethod, input));
        }
Beispiel #10
0
 public IStreamedData Add(IIdentifier id, IStreamedData sourceData, Action <double> progressChangeAction)
 {
     progressChangeAction(0.0);
     using (var zipFile = CreateZipFileInstance(_zipFilename))
     {
         var saveFilename = "PSN." + id + ".data.bin";
         if (zipFile.ContainsEntry(saveFilename))
         {
             throw new Exception("Ћог с такими данными уже сохранен в репозитории");
         }
         progressChangeAction(25.0);
         using (var stream = sourceData.GetStreamForReading()) {
             progressChangeAction(50.0);
             zipFile.UpdateEntry(saveFilename, stream);
             progressChangeAction(75.0);
             zipFile.Save();                     // Ќевозможно использовать вне блока using
         }
         progressChangeAction(100.0);
         return(new PsnDataRelayStream(new StreamedZippedFile(_zipFilename, saveFilename), id));
     }
 }
 public override IStreamedData ExecuteInMemory(IStreamedData input)
 {
     throw new NotImplementedException();
 }
 public override IStreamedData ExecuteInMemory(IStreamedData input)
 {
     return input;
 }
Beispiel #13
0
 public StreamableDataWithIdSimple(IIdentifier id, IStreamedData data)
 {
     _id   = id;
     _data = data;
 }
Beispiel #14
0
 /// <summary>
 /// Создает новый экземпляр хранилища
 /// </summary>
 /// <param name="streamReadableObj">Объект, читающий данные из потока (для чтения данных из хранилища)</param>
 /// <param name="streamWritableObj">Объект, записывающий данные в поток (для записи данных в хранилище)</param>
 public PsnDataFaultReasonStorageXDocument(IStreamedData streamReadableObj, IStreamedDataWritable streamWritableObj)
 {
     _streamReadableObject = streamReadableObj;
     _streamWritableObject = streamWritableObj;
 }
Beispiel #15
0
 public StreamReadableObjectBasedOnData(IStreamedData data)
 {
     _data = data;
 }
Beispiel #16
0
 public IStreamedData Add(IIdentifier id, IStreamedData data, Action <double> progressChangeAction)
 {
     throw new Exception("На устройство нельзя добавлять логи");
 }
 /// <summary>
 /// Создает новый экземпляр хранилища
 /// </summary>
 /// <param name="streamReadableObj">Объект, читающий данные из потока (для чтения данных из хранилища)</param>
 /// <param name="streamWritableObj">Объект, записывающий данные в поток (для записи данных в хранилище)</param>
 public PsnDataCustomConfigurationsStorageXDocument(IStreamedData streamReadableObj, IStreamedDataWritable streamWritableObj)
 {
     _streamReadableObject = streamReadableObj;
     _streamWritableObject = streamWritableObj;
 }
 public override IStreamedData ExecuteInMemory(IStreamedData input)
 {
     return(input);
 }
Beispiel #19
0
 public IStreamedData Add(IIdentifier id, IStreamedData data, Action <double> progressChangeAction)
 {
     throw new Exception("Операция добавления данных не поддерживается данным хранилищем");
 }
Beispiel #20
0
 public override IStreamedData ExecuteInMemory(IStreamedData input)
 {
     ArgumentUtility.CheckNotNull("input", input);
     return(InvokeGenericExecuteMethod <StreamedSequence, StreamedValue> (input, ExecuteInMemory <object>));
 }
Beispiel #21
0
 public new TResult InvokeGenericExecuteMethod <TSource, TResult> (IStreamedData input, Func <TSource, TResult> genericMethodCaller)
     where TSource : IStreamedData
     where TResult : IStreamedData
 {
     return(base.InvokeGenericExecuteMethod(input, genericMethodCaller));
 }
Beispiel #22
0
 /// <summary>
 /// Создает новый экземпляр хранилища
 /// </summary>
 /// <param name="streamReadableObj">Объект для чтения данных из хранилища</param>
 /// <param name="streamWritableObj">Объект для записи данных в хранилище</param>
 public PsnDataInformationStorageXDocument(IStreamedData streamReadableObj, IStreamedDataWritable streamWritableObj)
 {
     _streamReadableObject = streamReadableObj;
     _streamWritableObject = streamWritableObj;
 }
Beispiel #23
0
 public override IStreamedData ExecuteInMemory(IStreamedData input)
 {
     return(InvokeGenericExecuteMethod <StreamedSequence, StreamedSequence>(input, ExecuteInMemory <object>));
 }
Beispiel #24
0
 public StreamReadableObjectRelaySubStream(IStreamedData relayOnStreamed, long beginPositionInStream, long streamLength)
 {
     _streamReadableObject  = relayOnStreamed;
     _beginPositionInStream = beginPositionInStream;
     _streamLength          = streamLength;
 }
Beispiel #25
0
 /// <summary>
 /// Executes this result operator in memory, on a given input. Executing result operators in memory should only be
 /// performed if the target query system does not support the operator.
 /// </summary>
 /// <param name="input">The input for the result operator. This must match the type of <see cref="IStreamedData"/> expected by the operator.</param>
 /// <returns>The result of the operator.</returns>
 public abstract IStreamedData ExecuteInMemory(IStreamedData input);
 public IStreamedData Add(IIdentifier id, IStreamedData data, Action <double> progressChangeAction)
 {
     throw new NotImplementedException();
 }
Beispiel #27
0
 public override IStreamedData ExecuteInMemory(IStreamedData input)
 {
     throw new NotImplementedException();
 }
 public void Add(IIdentifier id, IStreamedData data)
 {
     throw new NotSupportedException("Cannot add data to storage, operation is not supported");
 }