Example #1
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);
                }
            }
        }
Example #2
0
 public void LogDoorLocked(int LockID)
 {
     W.Write("Log entry: ");
     W.WriteLine($"{DateTime.Now.ToShortTimeString()} {DateTime.Now.ToLongDateString()}");
     W.WriteLine($"Charging station locked using RFID: {LockID}");
     W.WriteLine("-------------------------------------------------------");
     W.Close();
 }
Example #3
0
 public void Write(T value, int stride = 1)
 {
     if (FPosition >= FStreamLength)
     {
         MemoryStreamWriter.Write(value, stride);
     }
     else
     {
         FStreamWriter.Write(value, stride);
     }
     FPosition += stride;
 }
Example #4
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());
        }
 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);
 }
Example #6
0
        public void Write(IStream stream, UserMessage obj)
        {
            if (obj == null)
            {
                throw new ArgumentNullException("obj");
            }

            var orderRequested = obj as OrderRequested;

            if (orderRequested != null)
            {
                _orderRequestedStreamWriter.Write(stream, orderRequested);
            }
            else
            {
                var orderAssigned = obj as OrdersAssigned;
                if (orderAssigned != null)
                {
                    _orderAssignedStreamWriter.Write(stream, orderAssigned);
                }
                else
                {
                    throw new NotSupportedException(string.Format("Unknown obj type {0}", obj.GetType()));
                }
            }
        }
        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);
                }
            });
        }
Example #8
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);
                }
            }
        }
 private static void WriteIfBufferIsFull(IStreamWriter <T> dataWriter, T[] buffer, ref int numSlicesBuffered)
 {
     if (numSlicesBuffered == buffer.Length)
     {
         dataWriter.Write(buffer, 0, numSlicesBuffered);
         numSlicesBuffered = 0;
     }
 }
        public void DrawFrame(Frame frame)
        {
            string str = "";

            //...

            _writer.Write(str);
        }
Example #11
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);
         }
     }
 }
        public HashValue Sign(IUser user, HashValue previousHash, UserMessage message)
        {
            using (var stream = _streamFactory.Create())
            {
                stream.Write("Client {0} after {1} ask for ", user, previousHash);
                _messageStreamWriter.Write(stream, message);

                var hash = _hashProvider.GetHashOfStream(stream);
                return(hash);
            }
        }
        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);
        }
Example #15
0
        private void WriteData(IStreamWriter writer, TypeCode dataTypeCd, object data)
        {
            switch (dataTypeCd)
            {
            case TypeCode.Boolean:
                writer.Write((bool)data);
                break;

            case TypeCode.Byte:
                writer.Write((byte)data);
                break;

            case TypeCode.Char:
                writer.Write((char)data);
                break;

            case TypeCode.DateTime:
                writer.Write(((DateTime)data).Ticks);
                break;

            case TypeCode.DBNull:
                writer.Write(NullFlag);
                break;

            case TypeCode.Decimal:
                writer.Write((decimal)data);
                break;

            case TypeCode.Double:
                writer.Write((double)data);
                break;

            case TypeCode.Empty:
                writer.Write(NullFlag);
                break;

            case TypeCode.Int16:
                writer.Write((short)data);
                break;

            case TypeCode.Int32:
                writer.Write((int)data);
                break;

            case TypeCode.Int64:
                writer.Write((long)data);
                break;

            case TypeCode.SByte:
                writer.Write((sbyte)data);
                break;

            case TypeCode.Single:
                writer.Write((float)data);
                break;

            case TypeCode.String:
                WriteString(writer, (string)data);
                break;

            case TypeCode.UInt16:
                writer.Write((ushort)data);
                break;

            case TypeCode.UInt32:
                writer.Write((uint)data);
                break;

            case TypeCode.UInt64:
                writer.Write((ulong)data);
                break;

            default:
            {
                using (var dataStream = new ChunkedStream())
                {
                    GetSerializer().Serialize(data, dataStream);

                    writer.Write((int)dataStream.Length);

                    dataStream.Position = 0;
                    dataStream.CopyTo(writer.BaseStream);
                }
            }
            break;
            }
        }
Example #16
0
 /// <summary>
 /// Writes a sequence of items to the current stream and advances
 /// the current position within this stream by the number of items written.
 /// Use the stride parameter to control advancing of the position after one item has been written.
 /// </summary>
 /// <param name="writer">The writer to use for writing.</param>
 /// <param name="segment">The array segment to copy from.</param>
 /// <param name="stride">The stride by which the position is advanced after writing one item.</param>
 /// <returns>
 /// The total number of items written to the stream.
 /// This can be less than the number of items requested if end of the stream has been reached.
 /// </returns>
 public static int Write <T>(this IStreamWriter <T> writer, ArraySegment <T> segment, int stride = 1)
 {
     return(writer.Write(segment.Array, segment.Offset, segment.Count, stride));
 }
Example #17
0
 private void Flush()
 {
     FStreamWriter.Write(FBuffer, 0, FOffset);
     FOffset = 0;
 }
        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);
            }
        }
Example #20
0
        void DrawFrame(Scene scene, Camera camera)
        {
            var frame = _renderer.RenderFrame(scene, camera);

            _writer.Write(frame);
        }
Example #21
0
        private void Write(IStreamWriter writer, WireMessage message)
        {
            if (message is null)
            {
                writer.Write(NullFlag);
                return;
            }

            var dataTypeCd = Type.GetTypeCode(message.Data?.GetType());

            var buffer = WireBufferCache.Acquire();

            try
            {
                buffer[WireMessageBufferOffsetOf.DataTypeCd]  = (byte)(NotNullFlag + dataTypeCd);
                buffer[WireMessageBufferOffsetOf.MessageType] = (byte)message.MessageType;
                buffer[WireMessageBufferOffsetOf.State]       = (byte)message.State;

                Array.Copy((message.TimeoutMSec ?? int.MinValue).ToBytes(), 0, buffer, WireMessageBufferOffsetOf.TimeoutMSec, WireMessageFieldSizeOf.TimeoutMSec);

                var id = (message.Id ?? WireMessageId.Empty);

                Array.Copy(id.Major.ToBytes(), 0, buffer, WireMessageBufferOffsetOf.IdMajor, WireMessageFieldSizeOf.IdMajor);
                Array.Copy(id.MajorRevision.ToBytes(), 0, buffer, WireMessageBufferOffsetOf.IdMajorRevision, WireMessageFieldSizeOf.IdMajorRevision);
                Array.Copy(id.Minor.ToBytes(), 0, buffer, WireMessageBufferOffsetOf.IdMinor, WireMessageFieldSizeOf.IdMinor);
                Array.Copy(id.MinorRevision.ToBytes(), 0, buffer, WireMessageBufferOffsetOf.IdMinorRevision, WireMessageFieldSizeOf.IdMinorRevision);
                Array.Copy(id.ProcessId.ToBytes(), 0, buffer, WireMessageBufferOffsetOf.IdProcessId, WireMessageFieldSizeOf.IdProcessId);

                writer.Write(buffer, 0, WireMessageSizeOf.ConstantFields);
            }
            finally
            {
                WireBufferCache.Release(buffer);
            }

            WriteString(writer, message.From?.ToString());
            WriteString(writer, message.To?.ToString());

            var header = message.Header;

            if (header == null)
            {
                writer.Write(NullFlag);
            }
            else
            {
                writer.Write(NotNullFlag);
                writer.Write(header.Count);

                foreach (var kv in header)
                {
                    WriteString(writer, kv.Key);
                    WriteString(writer, kv.Value);
                }
            }

            if (message.Exception is null)
            {
                writer.Write(NullFlag);
            }
            else
            {
                writer.Write(NotNullFlag);
                using (var dataStream = new ChunkedStream())
                {
                    GetSerializer().Serialize(message.Exception, dataStream);

                    writer.Write((int)dataStream.Length);

                    dataStream.Position = 0;
                    dataStream.CopyTo(writer.BaseStream);
                }
            }

            WriteData(writer, dataTypeCd, message.Data);
        }