public void BeforeEach() { searchResultModel = Substitute.For <ISearchResultModel>(); highlightFilters = Substitute.For <IFiltersList>(); selectionManager = Substitute.For <ISelectionManager>(); messagesSource = Substitute.For <IMessagesSource>(); colorTheme = Substitute.For <IColorTheme>(); wordSelection = new WordSelection(); isRawMessagesMode = false; viewSize = 3; highlightFilters.FilteringEnabled.Returns(true); colorTheme.HighlightingColors.Returns(ImmutableArray.CreateRange(Enumerable.Range( (int)FilterAction.IncludeAndColorizeFirst, FilterAction.IncludeAndColorizeLast - FilterAction.IncludeAndColorizeFirst + 1) .Select(i => MakeHightlightingColor((FilterAction)i)) )); msg1 = new Message(0, 1, null, new MessageTimestamp(), new StringSlice("test message 1"), SeverityFlag.Info); msg2 = new Message(0, 1, null, new MessageTimestamp(), new StringSlice("test message 2"), SeverityFlag.Info); msgWithMultilineText = new Message(0, 1, null, new MessageTimestamp(), new StringSlice( @"2019/03/27 06:27:52.143 T#1 I app: model creation finished import { imock, instance, when, anything, verify, resetCalls, MockPropertyPolicy, deepEqual } from 'ts-mockito'; import * as expect from 'expect'; import { Map, OrderedSet } from 'immutable'; import { ChangeNotification } from '../../../../client/model/utils'; import { PodStore, Pod } from '../../../../client/model/pod/store'; import { MeetingSession } from '../../../../client/model/meeting/impl/meeting/meetingSession'; import { Meeting, MeetingParticipant, LocalMeetingParticipant } from '../../../../client/model/meeting'; import { Conversation, ConversationStore, StreamId } from '../../../../client/model/conversation/store'; import { MeetingStartupOptions, Meeting as MeetingBase, MediaDevices, ParticipantTracks, ScreenTrack } from '../../../../client/model/meeting'; import { Protocol } from '../../../../client/model/meeting/protocol'; import { MeetingImpl } from '../../../../client/model/meeting/impl/meeting/impl/meetingImpl'; import { RtcManager, RtcManagerConfig } from '../../../../client/model/rtcManager'; import { MeetingAnalytics, LeaveSources } from '../../../../client/model/analytics'; import { MeetingParticipants } from '../../../../client/model/meeting/impl/meeting/meetingParticipants'; import { UncaughtExceptionsTrap } from '../../../utils/uncaughtExceptionsTrap'; import { AutoResetEvent, waiter } from '../../../utils/promise-utils'; import { MeetingLocalMedia } from '../../../../client/model/meeting/impl/media/meetingLocalMedia'; import { MeetingRemoteMedia } from '../../../../client/model/meeting/impl/media/meetingRemoteMedia'; import { LolexClock, install } from 'lolex'; import { RtcTokenProvider } from '../../../../client/model/meeting/impl/protocol/impl/rtcTokenProviderImpl'; import { User, UserStore, CurrentUser, UserId } from '../../../../client/model/users/store'; import { fireAndForget } from '../../../utils/promise-utils'; import { RtcSettingsStore, RtcSettings } from '../../../../client/model/settings/store'; import { GeoRouter } from '../../../../client/model/georouting/geoRouter'; import { UserBackend } from '../../../../client/model/users/backend'; describe('MeetingV2', () => { let meeting: Meeting;" ), SeverityFlag.Info); }
public SourceBuffer(IMessagesSource src, Diagnostics diagnostics, MessageTextGetter displayTextGetter) { this.source = src; this.diagnostics = diagnostics; this.displayTextGetter = displayTextGetter; }
public DisplayLine(IMessage msg, int lineIndex, int linesCount, MessageTextGetter displayTextGetter, IMessagesSource source, int index = -1) { Message = msg; LineIndex = lineIndex; TotalLinesInMessage = linesCount; DisplayTextGetter = displayTextGetter; var msgLen = msg.EndPosition - msg.Position; if (linesCount > 1) { var lineLen = msgLen / (double)linesCount; LineOffsetBegin = lineLen * lineIndex; LineOffsetEnd = (lineIndex + 1) * lineLen; if (lineIndex == linesCount - 1) { // this it to ensure the offset is strictly equal to the beginning of next message. // generic formula with floating point arithmetics leads to inequality. LineOffsetEnd = msgLen; } } else { LineOffsetBegin = 0; LineOffsetEnd = msgLen; } Index = index; Source = source; }
public SourceBuffer(IMessagesSource src) { this.source = src; }
static async Task <ScreenBufferMessagesRange> GetScreenBufferLines( IMessagesSource src, long startFrom, int maxCount, EnumMessagesFlag flags, bool rawLogMode, CancellationToken cancellation, bool doNotCountFirstMessage = false ) { var backward = (flags & EnumMessagesFlag.Backward) != 0; var lines = new List <DisplayLine>(); var loadedMessages = 0; var linesToIgnore = 0; await src.EnumMessages(startFrom, msg => { var messagesLinesCount = msg.GetDisplayText(rawLogMode).GetLinesCount(); if (backward) { for (int i = messagesLinesCount - 1; i >= 0; --i) { lines.Add(new DisplayLine(msg, i, messagesLinesCount)); } } else { for (int i = 0; i < messagesLinesCount; ++i) { lines.Add(new DisplayLine(msg, i, messagesLinesCount)); } } ++loadedMessages; if (doNotCountFirstMessage && loadedMessages == 1) { linesToIgnore = lines.Count; } return((lines.Count - linesToIgnore) < maxCount); }, flags | EnumMessagesFlag.IsActiveLogPositionHint, LogProviderCommandPriority.RealtimeUserAction, cancellation); cancellation.ThrowIfCancellationRequested(); var firstRead = lines.FirstOrDefault(); if (backward) { lines.Reverse(); } var badPosition = backward ? src.PositionsRange.Begin : src.PositionsRange.End; ScreenBufferMessagesRange ret; ret.Lines = lines; ret.BeginPosition = lines.Count > 0 ? lines[0].Message.Position : badPosition; if (lines.Count == 0) { ret.EndPosition = badPosition; } else { ret.EndPosition = lines[lines.Count - 1].Message.EndPosition; } return(ret); }
bool IScreenBuffer.ContainsSource(IMessagesSource source) { return(buffers.ContainsKey(source)); }