예제 #1
0
        public override async Task ProcessAsync()
        {
            // HTTP URI.
            var url = "http://www.kingcean.net:8080/test/path?a=123&b=hello#nothing/all";
            var uri = HttpUri.Parse(url);

            ConsoleLine.WriteLine(((Uri)uri).ToString());
            ConsoleLine.WriteLine();

            // Query data.
            var query = "{ str: \"abcdefg\", b: true, \"name\": \"hijklmn\", // abcd: efg\n \"value\": \"012345\", \"num\": 67, null: undefined, \"props\": { \"x\": \"o\\tp\\tq\", \"y\": [ 8, 9, { \"z\": \"rst\" } ] } }";
            var q     = QueryData.Parse(query);

            ConsoleLine.WriteLine(q.ToString());
            ConsoleLine.WriteLine();

            // JSON HTTP web client.
            url = "https://github.com/compositejs/datasense/raw/master/package.json";
            var webClient = new JsonHttpClient <NameAndDescription>();
            var resp      = await webClient.SendAsync(new HttpRequestMessage(HttpMethod.Get, url));

            ConsoleLine.WriteLine(resp.Name);
            resp = await webClient.SendAsync(new HttpRequestMessage(HttpMethod.Get, url));

            ConsoleLine.WriteLine(resp.Name);

            //"{ \"access_token\": \"abc\", \"token_type\": \"Bearer\" }"
        }
예제 #2
0
        /// <summary>
        /// Renders a single <see cref="ConsoleLine"/> to a buffer.
        /// </summary>
        /// <param name="builder">Buffer</param>
        /// <param name="line">Line</param>
        /// <param name="timestamp">Reference timestamp for time offset</param>
        public static void RenderLine(StringBuilder builder, ConsoleLine line, DateTime timestamp)
        {
            var offset        = TimeSpan.FromSeconds(line.TimeOffset);
            var isProgressBar = line.ProgressValue.HasValue;

            builder.Append("<div class=\"line").Append(isProgressBar ? " pb" : "").Append("\"");

            if (line.TextColor != null)
            {
                builder.Append(" style=\"color:").Append(line.TextColor).Append("\"");
            }

            if (isProgressBar)
            {
                builder.Append(" data-id=\"").Append(line.Message).Append("\"");
            }

            builder.Append(">");

            builder.Append(Helper.MomentTitle(timestamp + offset, Helper.ToHumanDuration(offset)));

            if (isProgressBar)
            {
                builder.AppendFormat("<div class=\"pv\" style=\"width:{0}%\" data-value=\"{0}\"></div>", line.ProgressValue.Value);
            }
            else
            {
                builder.Append(Helper.HtmlEncode(line.Message));
            }

            builder.Append("</div>");
        }
예제 #3
0
    private void UpdateLogText(bool updateIndex = true)
    {
        if (updateIndex)
        {
            _startingIndex = Mathf.Clamp(_loggedLines.Count - TextsDisplayed, 0, _loggedLines.Count);
        }
        string             text  = "";
        List <ConsoleLine> texts = _isDebug ? _loggedLines : NonDebugTexts;

        for (int i = _startingIndex; i < _startingIndex + TextsDisplayed; i++)
        {
            if (texts.ElementAtOrDefault(i) == null)
            {
                break;
            }
            ConsoleLine lineToAdd = texts[i];
            if (lineToAdd.IsDebug)
            {
                text += "<b><color=red>" + lineToAdd + "</color></b>\n";
            }
            else
            {
                text += lineToAdd + "\n";
            }
        }

        LogText.text = text;
    }
예제 #4
0
    private ConsoleLine NewLine()
    {
        var line = new ConsoleLine(this._IdSequence++);

        this._Lines.Add(line);
        return(line);
    }
예제 #5
0
 internal ProgressBarDto(ConsoleLine line, DateTime referenceTimestamp) : base(line, referenceTimestamp)
 {
     Id   = int.Parse(line.Message, CultureInfo.InvariantCulture);
     Name = line.ProgressName;
     // ReSharper disable once PossibleInvalidOperationException
     Progress = line.ProgressValue.Value;
 }
        public ArchitectureConsoleViewModel()
        {
            AddModuleCommand    = new DelegateCommand(obj => { PrepareCommand(string.Format("AddModule {0}", "value?")); });
            RemoveModuleCommand = new DelegateCommand(obj => { PrepareCommand(string.Format("RemoveModule {0}", "value?")); });
            ViewModuleCommand   = new DelegateCommand(obj => { PrepareCommand(string.Format("ViewModule {0}", "value?")); });

            ExecuteCommand = new DelegateCommand(obj =>
            {
                ConsoleLine        = ConsoleLines.Last();
                ConsoleLine.Status = CommandStatus.None;

                _subscription.SubscribeFirstPublication(Messages.COMMAND_PROCESSED, OnProcessed);

                MessageBus.Instance.Publish(Messages.COMMAND_LINE_SUBMITTED, ConsoleLine.Content);
            });

            ModuleDefinitionCommand = new DelegateCommand(obj =>
            {
                MessageBus.Instance.Publish(Global.Messages.REQUEST_MODULES_VIEW, SelectedLayer);
            });

            _subscription.SubscribeFirstPublication(Global.Messages.REQUEST_ARCHITECTURE_DEPENDENCIES_COMPLETED, obj =>
            {
                var dependencies = obj as ArchitectureDependencies;
                _services        = dependencies.Services;
            });

            _subscription.Subscribe(Global.Messages.REQUEST_ARCHITECTURE_VIEWMODEL, obj => MessageBus.Instance.Publish(Global.Messages.REQUEST_ARCHITECTURE_VIEWMODEL_COMPLETED, this));

            ConsoleLine = new ConsoleLine();
            ConsoleLines.Add(ConsoleLine);
        }
 public void Output_line(ConsoleLine line)
 {
     System.Console.Write(line.Date_string);
     System.Console.Write(",");
     System.Console.Write(line.Amount_string);
     System.Console.Write(",");
     System.Console.WriteLine(line.Description_string);
 }
        public void PrepareCommand(string commandText)
        {
            var consoleLine = new ConsoleLine()
            {
                Content = commandText
            };

            ConsoleLines[ConsoleLines.Count - 1] = consoleLine;
        }
예제 #9
0
        public void AddLine(ConsoleId consoleId, ConsoleLine line)
        {
            if (consoleId == null)
            {
                throw new ArgumentNullException(nameof(consoleId));
            }
            if (line == null)
            {
                throw new ArgumentNullException(nameof(line));
            }
            if (line.IsReference)
            {
                throw new ArgumentException("Cannot add reference directly", nameof(line));
            }

            using (var tran = _connection.CreateWriteTransaction())
            {
                // check if encoded message fits into Set's Value field

                string value;

                if (line.Message.Length > ValueFieldLimit - 36)
                {
                    // pretty sure it won't fit
                    // (36 is an upper bound for JSON formatting, TimeOffset and TextColor)
                    value = null;
                }
                else
                {
                    // try to encode and see if it fits
                    value = JobHelper.ToJson(line);

                    if (value.Length > ValueFieldLimit)
                    {
                        value = null;
                    }
                }

                if (value == null)
                {
                    var referenceKey = Guid.NewGuid().ToString("N");

                    tran.SetRangeInHash(consoleId.ToString(), new[] { new KeyValuePair <string, string>(referenceKey, line.Message) });

                    line.Message     = referenceKey;
                    line.IsReference = true;

                    value = JobHelper.ToJson(line);
                }

                tran.AddToSet(consoleId.ToString(), value);

                tran.Commit();
            }
        }
예제 #10
0
 private async Task WriteIsPrimeAsync(int value)
 {
     ConsoleLine.Write(
         "{0} is {1}a prime number. Prev {2}, next {3}.",
         value,
         Maths.Arithmetic.IsPrime(value) ? string.Empty : "NOT ",
         await Maths.Arithmetic.PreviousPrimeAsync(value),
         await Maths.Arithmetic.NextPrimeAsync(value)
         );
     ConsoleLine.End();
 }
        public void RenderLine_WithNegativeOffset()
        {
            var line = new ConsoleLine()
            {
                TimeOffset = -1.206, Message = "test"
            };
            var builder = new StringBuilder();

            ConsoleRenderer.RenderLine(builder, line, new DateTime(2016, 1, 1, 0, 0, 0, DateTimeKind.Utc));

            Assert.Equal("<div class=\"line\"><span data-moment-title=\"1451606398\">-1.206s</span>test</div>", builder.ToString());
        }
        public void RenderLine_WithColor()
        {
            var line = new ConsoleLine()
            {
                TimeOffset = 0, Message = "test", TextColor = "#ffffff"
            };
            var builder = new StringBuilder();

            ConsoleRenderer.RenderLine(builder, line, new DateTime(2016, 1, 1, 0, 0, 0, DateTimeKind.Utc));

            Assert.Equal("<div class=\"line\" style=\"color:#ffffff\"><span data-moment-title=\"1451606400\">+ <1ms</span>test</div>", builder.ToString());
        }
        public void RenderLine_WithProgressAndColor()
        {
            var line = new ConsoleLine()
            {
                TimeOffset = 0, Message = "3", ProgressValue = 17, TextColor = "#ffffff"
            };
            var builder = new StringBuilder();

            ConsoleRenderer.RenderLine(builder, line, new DateTime(2016, 1, 1, 0, 0, 0, DateTimeKind.Utc));

            Assert.Equal("<div class=\"line pb\" style=\"color:#ffffff\" data-id=\"3\"><span data-moment-title=\"1451606400\">+ <1ms</span><div class=\"pv\" style=\"width:17%\" data-value=\"17\"></div></div>", builder.ToString());
        }
예제 #14
0
        public void AddLine_ShortLineIsAddedToSet()
        {
            var storage = new ConsoleStorage(_connection.Object);
            var line    = new ConsoleLine()
            {
                Message = "test"
            };

            storage.AddLine(_consoleId, line);

            Assert.False(line.IsReference);
            _transaction.Verify(x => x.AddToSet($"console:{_consoleId}", It.IsAny <string>()));
            _transaction.Verify(x => x.SetRangeInHash($"console:refs:{_consoleId}", It.IsAny <IEnumerable <KeyValuePair <string, string> > >()), Times.Never);
        }
예제 #15
0
        public void AddLine_CorrectsTimeOffset()
        {
            var consoleId = new ConsoleId("1", new DateTime(2016, 1, 1, 0, 0, 0, DateTimeKind.Utc));
            var context = new ConsoleContext(consoleId, _storage.Object);

            var line1 = new ConsoleLine() { TimeOffset = 0, Message = "line" };
            var line2 = new ConsoleLine() { TimeOffset = 0, Message = "line" };

            context.AddLine(line1);
            context.AddLine(line2);

            _storage.Verify(x => x.AddLine(It.IsAny<ConsoleId>(), It.IsAny<ConsoleLine>()), Times.Exactly(2));
            Assert.NotEqual(line1.TimeOffset, line2.TimeOffset, 4);
        }
예제 #16
0
 /// <summary>
 /// Disposes this instance.
 /// </summary>
 /// <param name="disposing">true if also dispose the managed resources; otherwise, false.</param>
 protected virtual void Dispose(bool disposing)
 {
     if (!disposing)
     {
         return;
     }
     if (HasDisposed)
     {
         return;
     }
     ConsoleLine.End();
     Arguments = null;
     cancel.Dispose();
     HasDisposed = true;
 }
예제 #17
0
        public void AddLine_ShortLineIsAddedToSet()
        {
            var storage = new ConsoleStorage(_connection.Object);
            var line    = new ConsoleLine()
            {
                Message = "test"
            };

            storage.AddLine(_consoleId, line);

            Assert.False(line.IsReference);
            _connection.Verify(x => x.CreateWriteTransaction(), Times.Once);
            _transaction.Verify(x => x.AddToSet(_consoleId.GetSetKey(), It.IsAny <string>(), It.IsAny <double>()));
            _transaction.Verify(x => x.SetRangeInHash(_consoleId.GetHashKey(), It.IsAny <IEnumerable <KVP> >()), Times.Never);
            _transaction.Verify(x => x.Commit(), Times.Once);
        }
        public void Will_set_date_as_second_console_snippet()
        {
            // Arrange
            var potential_match = new PotentialMatch
            {
                Rankings = new Rankings()
            };
            var console_line = new ConsoleLine {
                Date_string = "10/10/2018"
            };

            // Act
            var console_snippets = console_line.Get_console_snippets(potential_match);

            // Assert
            Assert.AreEqual(console_line.Date_string + ",", console_snippets[1].Text);
        }
예제 #19
0
        public void Read(BinaryReaderBE Reader)
        {
            var lines = Reader.ReadUInt32();

            Lines = new ConsoleLine[lines];
            for (var i = 0; i < lines; i++)
            {
                var consoleLine = new ConsoleLine();
                var length      = Reader.ReadUInt32();
                var unknown     = Reader.ReadByte();
                var length2     = Reader.ReadUInt32();
                var line        = Reader.ReadBytes((int)length);
                consoleLine.Level = Reader.ReadUInt32();
                consoleLine.Line  = Encoding.UTF8.GetString(line);
                Lines[i]          = consoleLine;
            }
        }
        public void Will_set_description_as_fourth_console_snippet()
        {
            // Arrange
            var potential_match = new PotentialMatch
            {
                Rankings = new Rankings()
            };
            var console_line = new ConsoleLine {
                Description_string = "Some description"
            };

            // Act
            var console_snippets = console_line.Get_console_snippets(potential_match);

            // Assert
            Assert.AreEqual(console_line.Description_string, console_snippets[3].Text);
        }
        private void OnProcessed(object obj)
        {
            var commandContext = obj as CommandContext;

            if (commandContext.Status == CommandStatus.Succeeded)
            {
                var currentConsoleLine = ConsoleLine;
                currentConsoleLine.Status = commandContext.Status;

                ConsoleLine = new ConsoleLine();
                ConsoleLines.Add(ConsoleLine);
            }
            else
            {
                ConsoleLines.Last().Status = CommandStatus.Failed;
            }
        }
        public void Will_set_amount_as_third_console_snippet()
        {
            // Arrange
            var potential_match = new PotentialMatch
            {
                Rankings = new Rankings()
            };
            var console_line = new ConsoleLine {
                Amount_string = "�.55"
            };

            // Act
            var console_snippets = console_line.Get_console_snippets(potential_match);

            // Assert
            Assert.AreEqual(console_line.Amount_string + ",", console_snippets[2].Text);
        }
예제 #23
0
        public void AddLine_ProgressBarIsAddedToSet_AndProgressIsUpdated()
        {
            var storage = new ConsoleStorage(_connection.Object);
            var line    = new ConsoleLine()
            {
                Message       = "1",
                ProgressValue = 10
            };

            storage.AddLine(_consoleId, line);

            Assert.False(line.IsReference);
            _connection.Verify(x => x.CreateWriteTransaction(), Times.Once);
            _transaction.Verify(x => x.AddToSet(_consoleId.GetSetKey(), It.IsAny <string>(), It.IsAny <double>()));
            _transaction.Verify(x => x.SetRangeInHash(_consoleId.GetHashKey(), It2.AnyIs <KVP>(p => p.Key == "progress")));
            _transaction.Verify(x => x.Commit(), Times.Once);
        }
        public void WillSetDateTextColourAsWhite_IfRankingsAreNull()
        {
            // Arrange
            var potential_match = new PotentialMatch
            {
                Rankings = null
            };
            var console_line = new ConsoleLine {
                Date_string = "10/10/2018"
            };

            // Act
            var console_snippets = console_line.Get_console_snippets(potential_match);

            // Assert
            Assert.AreEqual(ConsoleColour.White, console_snippets[1].Text_colour);
        }
        public void Will_set_index_as_first_console_snippet()
        {
            // Arrange
            var index           = 23;
            var potential_match = new PotentialMatch
            {
                Rankings = new Rankings()
            };
            var console_line = new ConsoleLine {
                Index = index
            };

            // Act
            var console_snippets = console_line.Get_console_snippets(potential_match);

            // Assert
            Assert.AreEqual($"{index}. ", console_snippets[0].Text);
        }
예제 #26
0
        public void AddLine_LongLineIsAddedToHash_AndReferenceIsAddedToSet()
        {
            var storage = new ConsoleStorage(_connection.Object);
            var line    = new ConsoleLine()
            {
                Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor " +
                          "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " +
                          "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure " +
                          "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. " +
                          "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
            };

            storage.AddLine(_consoleId, line);

            Assert.True(line.IsReference);
            _transaction.Verify(x => x.AddToSet($"console:{_consoleId}", It.IsAny <string>()));
            _transaction.Verify(x => x.SetRangeInHash($"console:refs:{_consoleId}", It.IsAny <IEnumerable <KeyValuePair <string, string> > >()));
        }
        public void Will_set_index_text_colour_as_white()
        {
            // Arrange
            var index           = 23;
            var potential_match = new PotentialMatch
            {
                Rankings = new Rankings()
            };
            var console_line = new ConsoleLine {
                Index = index
            };

            // Act
            var console_snippets = console_line.Get_console_snippets(potential_match);

            // Assert
            Assert.AreEqual(ConsoleColour.White, console_snippets[0].Text_colour);
        }
        public void Will_set_date_colour_to_green_if_rankings_are_null()
        {
            // Arrange
            var index           = 23;
            var potential_match = new PotentialMatch
            {
                Rankings = new Rankings()
            };
            var console_line = new ConsoleLine {
                Index = index
            };

            // Act
            var console_snippets = console_line.Get_console_snippets(potential_match);

            // Assert
            Assert.AreEqual($"{index}. ", console_snippets[0].Text);
        }
        public void WillSetAmountTextColourAsWhite_IfRankingsAreNull()
        {
            // Arrange
            var potential_match = new PotentialMatch
            {
                Rankings     = null,
                Amount_match = false // AmountMatch should be ignored - AmountRanking is used instead
            };
            var console_line = new ConsoleLine {
                Amount_string = "�.55"
            };

            // Act
            var console_snippets = console_line.Get_console_snippets(potential_match);

            // Assert
            Assert.AreEqual(ConsoleColour.White, console_snippets[2].Text_colour);
        }
예제 #30
0
        public void AddLine(ConsoleLine line)
        {
            if (line == null)
            {
                throw new ArgumentNullException(nameof(line));
            }

            line.TimeOffset = Math.Round((DateTime.UtcNow - _consoleId.DateValue).TotalSeconds, 3);

            if (_lastTimeOffset >= line.TimeOffset)
            {
                // prevent duplicate lines collapsing
                line.TimeOffset = _lastTimeOffset + 0.0001;
            }

            _lastTimeOffset = line.TimeOffset;

            _storage.AddLine(_consoleId, line);
        }
예제 #31
0
        private CommandStatus Execute(ConsoleLine line)
        {
            if (line?.Content == null)
            {
                return CommandStatus.Failed;
            }

            var tokens = line.Content.Split(' ');

            if (!(tokens.Count() > 1))
            {
                return CommandStatus.Failed;
            }

            var isValidInstruction = ValidateInstruction(tokens[0]);

            if (!isValidInstruction)
            {
                return CommandStatus.Failed;
            }

            var isValidParameter = ValidateParameter(tokens[1]);

            if (!isValidParameter)
            {
                return CommandStatus.Failed;
            }

            var layerName = line.Content.Remove(line.Content.IndexOf(tokens[0]), tokens[0].Length).Trim();

            SelectedLayer = new Layer() { Id = layerName, Modules = new ObservableCollection<Module>() };
            Layers.Add(SelectedLayer);
            _services.AddLayer(SelectedLayer);

            return CommandStatus.Succeeded;
        }
예제 #32
0
        private void AppendToBuffer(ConsoleLine line)
        {
            lock (m_buffer) {
                if (m_isNewLine) {
                    PushToBuffer (ConsoleLine.Empty);
                    m_isNewLine = false;
                }

                var merged = m_buffer [BUF_SIZE - 1].Line + line.Line;
                var lines = SplitLine(merged);

                m_buffer [BUF_SIZE - 1] = new ConsoleLine(line.Color, lines [0]);
                m_isNewLine = lines.Length > 1;

                for (int i = 1; i < lines.Length; i++) {
                    PushToBuffer (new ConsoleLine(line.Color, lines [i]));
                }
                DrawBuffer ();
            }
        }
예제 #33
0
 private void PushToBuffer(ConsoleLine line)
 {
     for (int idx = 0; idx < BUF_SIZE - 1; idx++) {
         m_buffer [idx] = m_buffer [idx + 1];
     }
     m_buffer [BUF_SIZE - 1] = line;
 }