예제 #1
0
        public void Serialize <T>(IStreamWriter writer, T valueObj, object contextObject)
        {
            Type type = typeof(T);

            //todo: can be optimized with static generic caching
            Serialize(writer, valueObj, type, contextObject);
        }
예제 #2
0
        public static void WriteTypeMetaInfo(IStreamWriter writer, ITypeStructure typeItem, bool writeTypeMetaPrefix = true)
        {
            if (writeTypeMetaPrefix)
            {
                writer.WriteUInt8(ValueItem.TypeMetaInfo);
            }
            writer.WriteUInt8(SingleTypeDescr);

            Type type = typeItem.RuntimeType;

            writer.WriteString(type.Assembly.GetName().Name);

            writer.WriteString(type.FullName);

            short itemCount = (short)typeItem.Items.Count;

            writer.WriteInt16(itemCount);


            for (int i = 0; i < itemCount; i++)
            {
                var memberItem = typeItem.Items[i];

                writer.WriteInt16((short)memberItem.Type);  // ItemType Enum
                writer.WriteUInt32(memberItem.TypeId);      // TypeId (Type Hash)
                writer.WriteString(memberItem.Name);        // Property Name
                writer.WriteBool(memberItem.IsNullable);    // Nullable Flag
            }
        }
예제 #3
0
 public TvdbV2(ITvdbSeries series, ITvdbSearch search, ITvdbUpdate update, IStreamWriter streamWriter)
 {
     this.series       = series;
     this.search       = search;
     this.update       = update;
     this.streamWriter = streamWriter;
 }
예제 #4
0
 public void printNewspaper(IStreamWriter streamWriter)
 {
     for (int i = 0; i < Pages.Count; i++)
     {
         Pages[i].printPage(streamWriter);
     }
 }
예제 #5
0
        public static void SerializeConnect(IStreamWriter writer, ConnectCommand connect)
        {
            VersionSerializer.SerializeVersion(writer, connect.ProtocolVersion);
            var realm = connect.Realm;

            writer.WriteString(realm);
        }
예제 #6
0
        public async void Generete_Test()
        {
            List <string> expectedData = new List <string>
            {
                @"f\bla\ra\t.dat",
                @"books\csharp\csharp.pdf",
                @"proj\tools\utils.cpp",
                @"proj\timer\main.cpp"
            };

            int expectedLength = 4;

            IDirectory iDirectory = Substitute.For <IDirectory>();

            iDirectory.GetFilesAsync("", SearchOption.AllDirectories).Returns(expectedData);

            IFileFilter iFileFilter = Substitute.For <IFileFilter>();

            iFileFilter.GetFilteredFiles(iDirectory).Returns(expectedData.ToArray());


            ResultGenerator resultGenerator = new ResultGenerator(iDirectory, iFileFilter);
            IStreamWriter   actual          = await resultGenerator.Generate();


            Assert.Equal(expectedLength, actual.Data.Length);
            Assert.Equal(expectedData.ToArray(), actual.Data);
        }
예제 #7
0
        private static void WriteString(IStreamWriter writer, string data)
        {
            if (data == null)
            {
                writer.Write(NullLengthFlag); // String length
            }
            else
            {
                var sLen = data.Length;
                if (sLen == 0)
                {
                    writer.Write(0); // String length
                }
                else
                {
                    if (sLen > MaxAllowedStringLength)
                    {
                        throw new Exception(SerializationErrors.StringLengthExceededAllowedLimit);
                    }

                    var bytes = Encoding.UTF8.GetBytes(data);

                    var bLen = bytes.Length;
                    writer.Write(bLen); // Byte array length

                    if (bLen > 1)
                    {
                        writer.Write(sLen);
                    }

                    writer.Write(bytes);
                }
            }
        }
예제 #8
0
        public async Task Connect(IStreamWriter writer)
        {
            var tags = new [] { "first", "second", "third" };

            await Task.Run(async() =>
            {
                for (; ;)
                {
                    _logger.Information(
                        "Pushing tags '{tags}'",
                        string.Join(", ", tags.Select(_ => _)));
                    var dataPoints = tags.Select(_ => new TagDataPoint(
                                                     (Tag)_,
                                                     //Value = (Measurement<float>)_random.NextDouble()
                                                     //Value = (Measurement<double>)_random.NextDouble()
                                                     //Value = new Vector2 { X = (float)_random.NextDouble(), Y = (float)_random.NextDouble() }
                                                     new Vector3 {
                        X = (float)_random.NextDouble(), Y = (float)_random.NextDouble(), Z = (float)_random.NextDouble()
                    }
                                                     ));
                    await writer.Write(dataPoints);

                    await Task.Delay(1000);
                }
            });
        }
예제 #9
0
파일: ByteItem.cs 프로젝트: bennil/ioctalk
 public override void WriteValue(IStreamWriter writer, ISerializeContext context, object value)
 {
     NullableWrite(writer, value, () =>
     {
         writer.WriteUInt8((byte)value);
     });
 }
예제 #10
0
        public void SetInputStream(EncoderNode encoder, int index)
        {
            System.Diagnostics.Debug.Assert(mEncoderInput == null);

            mEncoderInput = encoder.GetInputSink(index);
            if (mEncoderInput == null)
                encoder.SetInputSource(index, this);
        }
예제 #11
0
 private static void WriteIfBufferIsFull(IStreamWriter <T> dataWriter, T[] buffer, ref int numSlicesBuffered)
 {
     if (numSlicesBuffered == buffer.Length)
     {
         dataWriter.Write(buffer, 0, numSlicesBuffered);
         numSlicesBuffered = 0;
     }
 }
예제 #12
0
 public static void SerializeStreamData(IStreamWriter stream, StreamDataCommand command)
 {
     ChannelIdSerializer.SerializeChannelId(stream, command.Channel);
     StreamOffsetSerializer.SerializeStreamOffset(stream, command.Offset);
     stream.WriteBool(command.IsAtEndPosition);
     stream.WriteLength((ushort)command.Payload.Length);
     stream.WriteOctets(command.Payload);
 }
예제 #13
0
        public void Serialize(IStreamWriter writer, object obj, Type type, object contextObject)
        {
            serializeContext.Reset(contextObject);

            IValueItem structure = GetByType(type, serializeContext);

            structure.WriteValue(writer, serializeContext, obj);
        }
        public ExperimentHistory(string filePath, IStreamWriter streamWriter, Experiment experiment)
        {
            _filePath = filePath;
            _streamWriter = streamWriter;
            _experiment = experiment;

            _data = new List<Tuple<Game, Users>>();
        }
예제 #15
0
 public void SetInputStream(EncoderNode encoder, int index)
 {
     mConnectionOutputToEncoderInput = encoder.GetInputSink(index);
     if (mConnectionOutputToEncoderInput == null)
     {
         encoder.SetInputSource(index, this);
     }
 }
예제 #16
0
 public override void WriteValue(IStreamWriter writer, ISerializeContext context, object value)
 {
     NullableWrite(writer, value, () =>
     {
         TimeSpan time = (TimeSpan)value;
         writer.WriteInt64(time.Ticks);
     });
 }
예제 #17
0
 public void TestInititalize()
 {
     _streamFactoryMock = Substitute.For <IStreamFactory>();
     _streamFactoryMock.Create().Returns(new MemoryStream());
     _dateTimeProviderMock = Substitute.For <IDateTimeProvider>();
     _dateTimeProviderMock.UtcNow.Returns(DateTime.UtcNow.ToString());
     _streamWriterMock = Substitute.For <IStreamWriter>();
 }
예제 #18
0
        public override void SetOutputSink(int index, IStreamWriter stream)
        {
            if (index != 0)
            {
                throw new ArgumentOutOfRangeException(nameof(index));
            }

            mStream.SetOutputSink(stream);
        }
예제 #19
0
 public override void WriteValue(IStreamWriter writer, ISerializeContext context, object value)
 {
     NullableWrite(writer, value, () =>
     {
         Guid guid = (Guid)value;
         var seg   = new ArraySegment <byte>(guid.ToByteArray());
         writer.WriteBytes(seg);
     });
 }
예제 #20
0
        public override void WriteValue(IStreamWriter writer, ISerializeContext context, object value)
        {
            NullableWrite(writer, value, () =>
            {
                DateTime dt = (DateTime)value;

                writer.WriteInt64(dt.Ticks);
            });
        }
 protected void SetUp()
 {
     mocks            = new Mockery();
     mockStreamWriter = mocks.NewMock <IStreamWriter>();
     mockDateTime     = mocks.NewMock <IDateTime>();
     exceptionStorer  = new ExceptionStorer();
     workerThreadLoopCompleteSignal = new AutoResetEvent(false);
     testFileMetricLogger           = new FileMetricLogger('|', new LoopingWorkerThreadBufferProcessor(10, true), true, mockStreamWriter, mockDateTime, exceptionStorer);
 }
예제 #22
0
        /// <summary>
        /// Writes the value.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="value">The value.</param>
        public override void WriteValue(IStreamWriter writer, ISerializeContext context, object value)
        {
            NullableWrite(writer, value, () =>
            {
                string stringValue = (string)value;

                writer.WriteString(stringValue);
            });
        }
예제 #23
0
 private static void SaveBunnies(IStreamWriter streamWriter, IList <IBunny> bunnies)
 {
     using (streamWriter)
     {
         foreach (var bunny in bunnies)
         {
             streamWriter.WriteLine(bunny.ToString());
         }
     }
 }
예제 #24
0
        public void SetInputStream(EncoderNode encoder, int index)
        {
            System.Diagnostics.Debug.Assert(mEncoderInput == null);

            mEncoderInput = encoder.GetInputSink(index);
            if (mEncoderInput == null)
            {
                encoder.SetInputSource(index, this);
            }
        }
예제 #25
0
        private static async Task GenerateResultToFile()
        {
            IDirectory  iDirectory  = new FileManager(startDirectory);
            IFileFilter iFileFilter = new FilterManager(filterBy);

            ResultGenerator resultGenerator = new ResultGenerator(iDirectory, iFileFilter);
            IStreamWriter   sWriter         = await resultGenerator.Generate();

            sWriter.WriteToFile(resultFile);
        }
예제 #26
0
 public static void Write <T>(this IStreamWriter <T> writer, IInStream <T> inStream, T[] buffer)
 {
     using (var reader = inStream.GetReader())
     {
         while (!reader.Eos)
         {
             int numSlicesRead = reader.Read(buffer, 0, buffer.Length);
             writer.Write(buffer, 0, numSlicesRead);
         }
     }
 }
예제 #27
0
        /// <summary>
        /// Write enum type meta infos
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="type"></param>
        public static void WriteTypeMetaInfo(IStreamWriter writer, Type type)
        {
            writer.WriteUInt8(ValueItem.TypeMetaInfo);
            writer.WriteUInt8(SingleTypeDescr);


            writer.WriteString(type.Assembly.GetName().Name);

            writer.WriteString(type.FullName);

            // Write 0 items (only type specification in case of enum)
            writer.WriteInt16(0);
        }
예제 #28
0
        public void Write(IStreamWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.Write(Major.ToBytes());
            writer.Write(MajorRevision.ToBytes());
            writer.Write(Minor.ToBytes());
            writer.Write(MinorRevision.ToBytes());
            writer.Write(ProcessId.ToBytes());
        }
예제 #29
0
        public override void SetOutputSink(int index, IStreamWriter stream)
        {
            if (index != 0)
                throw new ArgumentOutOfRangeException(nameof(index));

            if (stream == null)
                throw new ArgumentNullException(nameof(stream));

            if (mOutput != null)
                throw new InvalidOperationException();

            mOutput = stream;
        }
예제 #30
0
 public void SetFileProperties(IFileProperties fileInfo)
 {
     try
     {
         _extendedStreamReader = _fileHelper.GetExtendedStreamReader(_originalFileProperties.OriginalFilePath);
     }
     catch (System.IO.DirectoryNotFoundException)
     {
         //if we can't find the directory, we read from the embedded base64 in the sdlxliff file
         _extendedStreamReader = _fileHelper.GetExtendedStreamReader(_originalFileProperties.DependencyFiles.First().CurrentFilePath);
     }
     _streamWriter       = _fileHelper.GetStreamWriter(_nativeFileProperties.OutputFilePath);
     _lineParsingSession = _lineParser.StartLineParsingSession();
 }
예제 #31
0
        public override void WriteValue(IStreamWriter writer, ISerializeContext context, object value)
        {
            NullableWrite(writer, value, () =>
            {
                decimal decVal = (decimal)value;

                int[] bits = Decimal.GetBits(decVal);

                writer.WriteInt32(bits[0]);
                writer.WriteInt32(bits[1]);
                writer.WriteInt32(bits[2]);
                writer.WriteInt32(bits[3]);
            });
        }
예제 #32
0
        public void Queue(IStreamWriter writer, bool isReliable)
        {
            Assert.NotNull(writer, "writer");

            if (isReliable)
            {
                reliable.Enqueue(writer);
            }
            else
            {
                unreliable.Enqueue(writer);
            }

            Context.NetworkQueue.Add(this);
        }
예제 #33
0
 public void WriteToRequest(IStreamWriter writer)
 {
   if (_contentLength < 0) GetLength();
   _content.Position = 0;
   writer.Write(_content);
   foreach (var file in _upload.Files)
   {
     writer.Write(file.Header, 0, file.Header.Length);
     var stream = file.GetStream(_async);
     writer.Write(stream);
     writer.Promise.Always(() => stream.Dispose());
     writer.Write(13, 10);
   }
   writer.Write(_finalBytes, 0, _finalBytes.Length);
 }
        private void WriteRows(IStreamWriter writer,
                               Person person)
        {
            var row = new object[1, 8];

            row[0, 0] = person.FirstName;
            row[0, 1] = person.SecondName;
            row[0, 2] = person.LastName;
            row[0, 3] = person.Sex;
            row[0, 4] = person.YearOfBirth;
            row[0, 5] = person.Education;
            row[0, 6] = person.Profession;
            row[0, 7] = person.HasExperienceInSport;

            writer.Write(row);
        }
        private void WriteHeader(IStreamWriter writer)
        {
            // Вывести заголовок

            var header = new object[1, 8];

            header[0, 0] = "Имя";
            header[0, 1] = "Отчество";
            header[0, 2] = "Фамилия";
            header[0, 3] = "Пол";
            header[0, 4] = "Год рождения";
            header[0, 5] = "Образование";
            header[0, 6] = "Профессия";
            header[0, 7] = "Опыт занятия спортом";

            writer.Write(header);
        }
예제 #36
0
        private static void WriteBytes(IStreamWriter writer, byte[] data)
        {
            if (data == null)
            {
                writer.Write(NullLengthFlag);
            }
            else
            {
                var bLen = data.Length;

                writer.Write(bLen);
                if (bLen > 0)
                {
                    writer.Write(data);
                }
            }
        }
예제 #37
0
        public Task EncodeAsync(IStreamReader input, IStreamWriter output, CancellationToken ct = default(CancellationToken))
        {
            lock (mSyncObject)
            {
                if (mDisposeTask != null)
                    throw new OperationCanceledException();

                // TODO: make this wait async as well
                while (mRunning)
                {
                    Monitor.Wait(mSyncObject);

                    if (mDisposeTask != null)
                        throw new OperationCanceledException();
                }

                mRunning = true;
            }

            var task = Task.Run(async delegate {
                var result = mEncoder.Lzma2Enc_Encode(new AsyncOutputProvider(output), new AsyncInputProvider(input), null);
                if (result != LZMA.Master.LZMA.SZ_OK)
                    throw new InvalidOperationException();

                await output.CompleteAsync().ConfigureAwait(false);
            });

            mEncoderTask = task.ContinueWith(delegate {
                lock (mSyncObject)
                {
                    System.Diagnostics.Debug.Assert(mRunning);
                    mRunning = false;
                    Monitor.PulseAll(mSyncObject);
                }
            }, CancellationToken.None, TaskContinuationOptions.DenyChildAttach, TaskScheduler.Default);

            return task;
        }
 public PersonInfoSaver(string filePath, IStreamWriter streamWriter)
 {
     this.filePath = filePath;
     this.streamWriter = streamWriter;
 }
        private static void WriteHeader(IStreamWriter writer, List<Question> questions)
        {
            // Вывести заголовок

            var questionCount = questions.Count;

            var header = new object[1, 30 + questionCount];

            header[0, 0] = "Дата удара";
            header[0, 1] = "Время удара";
            header[0, 2] = "Игра";
            header[0, 3] = "Номер удара в игре";
            header[0, 4] = "Попадание";
            header[0, 5] = "Баллы";
            header[0, 6] = "Промах игрока, м";
            header[0, 7] = "Промах игрока, с (задержка удара)";
            header[0, 8] = "Задержка реакции игрока, с";
            header[0, 9] = "Позиция шара, м";
            header[0, 10] = "Размер шара, м";
            header[0, 11] = "Позиция лунки, м";
            header[0, 12] = "Размер лунки, м";
            header[0, 13] = "Баллы при попадании";
            header[0, 14] = "Баллы при промахе";
            header[0, 15] = "Цвет цели";
            header[0, 16] = "Скорость мяча, м/с";
            header[0, 17] = "Задержка удара, с";
            header[0, 18] = "Баллы в начале игры";
            header[0, 19] = "Показывать баллы";
            header[0, 20] = "Показывать ошибку";
            header[0, 21] = "Звук";
            header[0, 22] = "Соревнование";
            header[0, 23] = "Попадание соперника";
            header[0, 24] = "Баллы соперника";
            header[0, 25] = "Промах соперника, м";
            header[0, 26] = "Вероятность попадания при попадании игрока";
            header[0, 27] = "Вероятность попадания при промахе игрока";
            header[0, 28] = "Показывать баллы соперника";
            header[0, 29] = "Ошибка игрока, м";

            for (int i = 0; i < questionCount; i++)
            {
                header[0, 30 + i] = questions[i].Id;
            }

            writer.Write(header);
        }
        private static void WriteRows(IStreamWriter writer, List<Tuple<Game, Users>> data, List<Question> questions)
        {
            var questionCount = questions.Count;

            foreach (var item in data)
            {
                var game = item.Item1;
                var users = item.Item2;

                var strikeNumber = 0;

                var user = users.FirstOrDefault(t => t.UserInfo.UserType == UserTypeEnum.User);

                if (user == null) throw new NullReferenceException("user");

                var bot = users.FirstOrDefault(t => t.UserInfo.UserType == UserTypeEnum.Bot);

                var rows = new object[user.Strikes.Count, 30 + questionCount];

                var i = 0;

                foreach (var userStrike in user.Strikes)
                {
                    var strikeInfo = userStrike.StrikeInfo;

                    rows[i, 0] = userStrike.DateTime.ToShortDateString();
                    rows[i, 1] = userStrike.DateTime.ToLongTimeString();
                    rows[i, 2] = game.Title;
                    rows[i, 3] = ++strikeNumber;
                    rows[i, 4] = userStrike.IsHit;
                    rows[i, 5] = userStrike.GetScore();
                    rows[i, 6] = userStrike.MissDistance;
                    rows[i, 7] = userStrike.MissTime;
                    rows[i, 8] = Math.Round(userStrike.BeforeStrikeTimeSpan.TotalSeconds, 3);
                    rows[i, 9] = userStrike.StartBallPosition.X;
                    rows[i, 10] = strikeInfo.Ball.Size;
                    rows[i, 11] = userStrike.StartHolePosition.X;
                    rows[i, 12] = strikeInfo.Hole.Size;
                    rows[i, 13] = strikeInfo.Hole.HitScore;
                    rows[i, 14] = strikeInfo.Hole.MissScore;
                    rows[i, 15] = strikeInfo.Hole.Color;
                    rows[i, 16] = strikeInfo.Model.Velocity;
                    rows[i, 17] = strikeInfo.Model.Delay;
                    rows[i, 18] = user.UserInfo.Score;
                    rows[i, 19] = game.ShowUserScore;
                    rows[i, 20] = game.ShowError;
                    rows[i, 21] = game.PlaySounds;
                    rows[i, 22] = game.Type == GameTypeEnum.Competition;

                    if (bot != null)
                    {
                        var userStrikeIndex = user.Strikes.IndexOf(userStrike);

                        if (bot.Strikes.Count > userStrikeIndex)
                        {
                            var botStrike = bot.Strikes[userStrikeIndex];

                            rows[i, 23] = botStrike.IsHit;
                            rows[i, 24] = botStrike.GetScore();
                            rows[i, 25] = botStrike.MissDistance;

                            var uniformRandomCompetitor = strikeInfo.CompetitorModel as UniformCompetitorModel;
                            if (uniformRandomCompetitor != null)
                            {
                                rows[i, 26] = uniformRandomCompetitor.BotHitProbabilityIfUserHit;
                                rows[i, 27] = uniformRandomCompetitor.BotHitProbabilityIfUserMiss;
                            }

                            rows[i, 28] = game.ShowBotScore;
                        }
                    }

                    rows[i, 29] = userStrike.ErrorDistance;

                    // Запись ответов на вопросы
                    for (int j = 0; j < questionCount; j++)
                    {
                        var id = questions[j].Id;

                        var response = userStrike.Responses.FirstOrDefault(t => t.QuestionId == id);

                        if (response != null)
                        {
                            rows[i, 30 + j] = response.Value;
                        }
                    }

                    i++;
                }

                writer.Write(rows);
            }
        }
 public XmlDocumentWriter(IStreamWriter streamWriter)
 {
     _streamWriter = streamWriter;
 }
예제 #42
0
 internal AsyncOutputProvider(IStreamWriter stream)
 {
     mStream = stream;
 }
예제 #43
0
        public void Queue(IStreamWriter writer, bool isReliable)
        {
            Assert.NotNull(writer, "writer");

            if (isReliable)
            {
                reliable.Enqueue(writer);
            }
            else
            {
                unreliable.Enqueue(writer);
            }

            Context.NetworkQueue.Add(this);
        }
예제 #44
0
 public override void SetOutputSink(int index, IStreamWriter stream)
 {
     throw new InternalFailureException();
 }
예제 #45
0
        public override void SetOutputSink(int index, IStreamWriter stream)
        {
            if (index != 0)
                throw new ArgumentOutOfRangeException(nameof(index));

            mStream.SetOutputSink(stream);
        }
예제 #46
0
 public void SetOutputSink(IStreamWriter output)
 {
     System.Diagnostics.Debug.Assert(mOutput == null && output != null);
     mOutput = output;
 }
예제 #47
0
 public void SetInputStream(EncoderNode encoder, int index)
 {
     mConnectionOutputToEncoderInput = encoder.GetInputSink(index);
     if (mConnectionOutputToEncoderInput == null)
         encoder.SetInputSource(index, this);
 }
예제 #48
0
 public abstract void SetOutputSink(int index, IStreamWriter stream);