public RoadNodesToZipArchiveWriter(RecyclableMemoryStreamManager manager, Encoding encoding) { _manager = manager ?? throw new ArgumentNullException(nameof(manager)); _encoding = encoding ?? throw new ArgumentNullException(nameof(encoding)); }
public RequestResponseLoggingMiddleware(RequestDelegate next, Action <HttpContext, RequestProfilerModel> requestResponseHandler) { _next = next; _recyclableMemoryStreamManager = new RecyclableMemoryStreamManager(); _requestResponseHandler = requestResponseHandler; }
public RequestResponseLoggingMiddleware(ILoggerFactory loggerFactory, RequestDelegate next) { this.logger = loggerFactory.CreateLogger <RequestResponseLoggingMiddleware>(); this.next = next; this.recyclableMemoryStreamManager = new RecyclableMemoryStreamManager(); }
public FileChunkController(RecyclableMemoryStreamManager recyclableMemoryStreamManager, WorkerQueueContainer workerQueueContainer) { _recyclableMemoryStreamManager = recyclableMemoryStreamManager; _workerQueueContainer = workerQueueContainer; }
public FastStreamVsMemoryStreamWithBinaryWriter() { this._manager = new RecyclableMemoryStreamManager(); this._hugeArrayPool = ArrayPool <byte> .Create(int.MaxValue, 10); }
public RequestResponseLoggingMiddleware(RequestDelegate next, ILoggerFactory loggerFactory) { _next = next; _recyclableMemoryStreamManager = new RecyclableMemoryStreamManager(); _logger = loggerFactory.CreateLogger <RequestResponseLoggingMiddleware>(); }
public RequestInterceptionMiddleware(RequestDelegate next, RecyclableMemoryStreamManager manager, ILoggerFactory loggerFactory) { _next = next; _manager = manager; _logger = loggerFactory.CreateLogger <RequestInterceptionMiddleware>(); }
public LoggerMiddleware(RequestDelegate next, ILogger logger) { this.next = next ?? throw new ArgumentNullException(nameof(next)); this.logger = logger; streamManager = new RecyclableMemoryStreamManager(); }
public ImageTransformerV4() { _streamManager = new RecyclableMemoryStreamManager(); }
public BlobClientReadWriteTestProvider(RecyclableMemoryStreamManager recyclableMemoryStreamManager) { EnsureArg.IsNotNull(recyclableMemoryStreamManager, nameof(recyclableMemoryStreamManager)); _recyclableMemoryStreamManager = recyclableMemoryStreamManager; }
/// <summary> /// Creates a new instance of an LogResponseMiddleware class, and initializes it with the specified arguments. /// </summary> /// <param name="next"></param> /// <param name="logger"></param> public LogResponseMiddleware(RequestDelegate next, ILogger <LogResponseMiddleware> logger) { _next = next; _logger = logger; _recyclableMemoryStreamManager = new RecyclableMemoryStreamManager(); }
public BilibiliComicOperator(INetworkAdapter networkAdapter, RecyclableMemoryStreamManager recyclableMemoryStreamManager) { this.networkAdapter = networkAdapter; this.recyclableMemoryStreamManager = recyclableMemoryStreamManager; }
public TranscoderTests() { _recyclableMemoryStreamManager = new RecyclableMemoryStreamManager(); _transcoder = new Transcoder(_recyclableMemoryStreamManager, NullLogger <Transcoder> .Instance); }
public StreamImageConverter(RecyclableMemoryStreamManager recyclableMemoryStreamManager) { this.recyclableMemoryStreamManager = recyclableMemoryStreamManager; }
public void AllMultiplesUpToMaxCanBePooled() { const int BlockSize = 100; const int LargeBufferMultiple = 1000; const int MaxBufferSize = 8000; for (var size = LargeBufferMultiple; size <= MaxBufferSize; size += LargeBufferMultiple) { var memMgr = new RecyclableMemoryStreamManager(BlockSize, LargeBufferMultiple, MaxBufferSize) {AggressiveBufferReturn = this.AggressiveBufferRelease}; var buffer = memMgr.GetLargeBuffer(size, DefaultTag); Assert.That(memMgr.LargePoolFreeSize, Is.EqualTo(0)); Assert.That(memMgr.LargePoolInUseSize, Is.EqualTo(size)); memMgr.ReturnLargeBuffer(buffer, DefaultTag); Assert.That(memMgr.LargePoolFreeSize, Is.EqualTo(size)); Assert.That(memMgr.LargePoolInUseSize, Is.EqualTo(0)); } }
public static void Clear() => _manager = null;
/// <summary> /// Initializes a new instance of the <see cref="AzureBlobStorageImageResolver"/> class. /// </summary> /// <param name="blob">The Azure blob.</param> /// <param name="memoryStreamManager"> /// The recyclable memorystream manager used for managing pooled stream /// buffers independently from image buffer pooling. /// </param> public AzureBlobStorageImageResolver(BlobClient blob, RecyclableMemoryStreamManager memoryStreamManager) { this.blob = blob; this.memoryStreamManager = memoryStreamManager; }
public RoadSegmentLaneAttributeRecordProjection(RecyclableMemoryStreamManager manager, Encoding encoding) { if (manager == null) { throw new ArgumentNullException(nameof(manager)); } if (encoding == null) { throw new ArgumentNullException(nameof(encoding)); } When <Envelope <ImportedRoadSegment> >((context, envelope, token) => { if (envelope.Message.Lanes.Length == 0) { return(Task.CompletedTask); } var laneRecords = envelope.Message .Lanes .Select(lane => { var laneDirectionTranslation = RoadSegmentLaneDirection.Parse(lane.Direction).Translation; return(new RoadSegmentLaneAttributeRecord { Id = lane.AttributeId, RoadSegmentId = envelope.Message.Id, DbaseRecord = new RoadSegmentLaneAttributeDbaseRecord { RS_OIDN = { Value = lane.AttributeId }, WS_OIDN = { Value = envelope.Message.Id }, WS_GIDN = { Value = $"{envelope.Message.Id}_{lane.AsOfGeometryVersion}" }, AANTAL = { Value = lane.Count }, RICHTING = { Value = laneDirectionTranslation.Identifier }, LBLRICHT = { Value = laneDirectionTranslation.Name }, VANPOS = { Value = (double)lane.FromPosition }, TOTPOS = { Value = (double)lane.ToPosition }, BEGINTIJD = { Value = lane.Origin.Since }, BEGINORG = { Value = lane.Origin.OrganizationId }, LBLBGNORG = { Value = lane.Origin.Organization }, }.ToBytes(manager, encoding) }); }); return(context.RoadSegmentLaneAttributes.AddRangeAsync(laneRecords, token)); }); When <Envelope <RoadNetworkChangesBasedOnArchiveAccepted> >(async(context, envelope, token) => { foreach (var change in envelope.Message.Changes.Flatten()) { switch (change) { case RoadSegmentAdded segment: if (segment.Lanes.Length != 0) { var lanes = segment .Lanes .Select(lane => { var laneDirectionTranslation = RoadSegmentLaneDirection.Parse(lane.Direction).Translation; return(new RoadSegmentLaneAttributeRecord { Id = lane.AttributeId, RoadSegmentId = segment.Id, DbaseRecord = new RoadSegmentLaneAttributeDbaseRecord { RS_OIDN = { Value = lane.AttributeId }, WS_OIDN = { Value = segment.Id }, WS_GIDN = { Value = $"{segment.Id}_{lane.AsOfGeometryVersion}" }, AANTAL = { Value = lane.Count }, RICHTING = { Value = laneDirectionTranslation.Identifier }, LBLRICHT = { Value = laneDirectionTranslation.Name }, VANPOS = { Value = (double)lane.FromPosition }, TOTPOS = { Value = (double)lane.ToPosition }, BEGINTIJD = { Value = LocalDateTimeTranslator.TranslateFromWhen(envelope.Message.When) }, BEGINORG = { Value = envelope.Message.OrganizationId }, LBLBGNORG = { Value = envelope.Message.Organization } }.ToBytes(manager, encoding) }); }); await context.RoadSegmentLaneAttributes.AddRangeAsync(lanes); } // case RoadSegmentModified segment: // if (segment.Lanes.Length == 0) // { // context.RoadSegmentLaneAttributes.RemoveRange( // context // .RoadSegmentLaneAttributes // .Local.Where(a => a.RoadSegmentId == segment.Id) // .Concat(await context // .RoadSegmentLaneAttributes // .Where(a => a.RoadSegmentId == segment.Id) // .ToArrayAsync(token) // )); // } // else // { // var currentSet = context // .RoadSegmentLaneAttributes // .Local.Where(a => a.RoadSegmentId == segment.Id) // .Concat(await context // .RoadSegmentLaneAttributes // .Where(a => a.RoadSegmentId == segment.Id) // .ToArrayAsync(token) // ).ToDictionary(a => a.Id); // var nextSet = segment // .Lanes // .Select(lane => // { // var laneDirectionTranslation = RoadSegmentLaneDirection.Parse(lane.Direction).Translation; // return new RoadSegmentLaneAttributeRecord // { // Id = lane.AttributeId, // RoadSegmentId = segment.Id, // DbaseRecord = new RoadSegmentLaneAttributeDbaseRecord // { // RS_OIDN = {Value = lane.AttributeId}, // WS_OIDN = {Value = segment.Id}, // WS_GIDN = {Value = $"{segment.Id}_{lane.AsOfGeometryVersion}"}, // AANTAL = {Value = lane.Count}, // RICHTING = {Value = laneDirectionTranslation.Identifier}, // LBLRICHT = {Value = laneDirectionTranslation.Name}, // VANPOS = {Value = (double) lane.FromPosition}, // TOTPOS = {Value = (double) lane.ToPosition}, // // TODO: This should come from the event // BEGINTIJD = {Value = null}, // BEGINORG = {Value = null}, // LBLBGNORG = {Value = null} // }.ToBytes(manager, encoding) // }; // }) // .ToDictionary(a => a.Id); // context.RoadSegmentLaneAttributes.Synchronize(currentSet, nextSet, (current, next) => // { // current.DbaseRecord = next.DbaseRecord; // }); // } break; } } }); }
public RoadSegmentRecordProjection(RecyclableMemoryStreamManager manager, Encoding encoding) { if (manager == null) { throw new ArgumentNullException(nameof(manager)); } if (encoding == null) { throw new ArgumentNullException(nameof(encoding)); } When <Envelope <ImportedRoadSegment> >(async(context, envelope, token) => { var geometry = GeometryTranslator.FromGeometryMultiLineString(BackOffice.Core.GeometryTranslator.Translate(envelope.Message.Geometry)); var polyLineMShapeContent = new PolyLineMShapeContent(geometry); var statusTranslation = RoadSegmentStatus.Parse(envelope.Message.Status).Translation; var morphologyTranslation = RoadSegmentMorphology.Parse(envelope.Message.Morphology).Translation; var categoryTranslation = RoadSegmentCategory.Parse(envelope.Message.Category).Translation; var geometryDrawMethodTranslation = RoadSegmentGeometryDrawMethod.Parse(envelope.Message.GeometryDrawMethod).Translation; var accessRestrictionTranslation = RoadSegmentAccessRestriction.Parse(envelope.Message.AccessRestriction).Translation; await context.RoadSegments.AddAsync( new RoadSegmentRecord { Id = envelope.Message.Id, ShapeRecordContent = polyLineMShapeContent.ToBytes(manager, encoding), ShapeRecordContentLength = polyLineMShapeContent.ContentLength.ToInt32(), BoundingBox = RoadSegmentBoundingBox.From(polyLineMShapeContent.Shape), DbaseRecord = new RoadSegmentDbaseRecord { WS_OIDN = { Value = envelope.Message.Id }, WS_UIDN = { Value = $"{envelope.Message.Id}_{envelope.Message.Version}" }, WS_GIDN = { Value = $"{envelope.Message.Id}_{envelope.Message.GeometryVersion}" }, B_WK_OIDN = { Value = envelope.Message.StartNodeId }, E_WK_OIDN = { Value = envelope.Message.EndNodeId }, STATUS = { Value = statusTranslation.Identifier }, LBLSTATUS = { Value = statusTranslation.Name }, MORF = { Value = morphologyTranslation.Identifier }, LBLMORF = { Value = morphologyTranslation.Name }, WEGCAT = { Value = categoryTranslation.Identifier }, LBLWEGCAT = { Value = categoryTranslation.Name }, LSTRNMID = { Value = envelope.Message.LeftSide.StreetNameId }, LSTRNM = { Value = envelope.Message.LeftSide.StreetName }, RSTRNMID = { Value = envelope.Message.RightSide.StreetNameId }, RSTRNM = { Value = envelope.Message.RightSide.StreetName }, BEHEER = { Value = envelope.Message.MaintenanceAuthority.Code }, LBLBEHEER = { Value = envelope.Message.MaintenanceAuthority.Name }, METHODE = { Value = geometryDrawMethodTranslation.Identifier }, LBLMETHOD = { Value = geometryDrawMethodTranslation.Name }, OPNDATUM = { Value = envelope.Message.RecordingDate }, BEGINTIJD = { Value = envelope.Message.Origin.Since }, BEGINORG = { Value = envelope.Message.Origin.OrganizationId }, LBLBGNORG = { Value = envelope.Message.Origin.Organization }, TGBEP = { Value = accessRestrictionTranslation.Identifier }, LBLTGBEP = { Value = accessRestrictionTranslation.Name } }.ToBytes(manager, encoding) }, token); }); When <Envelope <RoadNetworkChangesBasedOnArchiveAccepted> >(async(context, envelope, token) => { foreach (var message in envelope.Message.Changes.Flatten()) { switch (message) { case RoadSegmentAdded segment: var geometry = GeometryTranslator.FromGeometryMultiLineString(BackOffice.Core.GeometryTranslator.Translate(segment.Geometry)); var polyLineMShapeContent = new PolyLineMShapeContent(geometry); var statusTranslation = RoadSegmentStatus.Parse(segment.Status).Translation; var morphologyTranslation = RoadSegmentMorphology.Parse(segment.Morphology).Translation; var categoryTranslation = RoadSegmentCategory.Parse(segment.Category).Translation; var geometryDrawMethodTranslation = RoadSegmentGeometryDrawMethod.Parse(segment.GeometryDrawMethod).Translation; var accessRestrictionTranslation = RoadSegmentAccessRestriction.Parse(segment.AccessRestriction).Translation; await context.RoadSegments.AddAsync( new RoadSegmentRecord { Id = segment.Id, ShapeRecordContent = polyLineMShapeContent.ToBytes(manager, encoding), ShapeRecordContentLength = polyLineMShapeContent.ContentLength.ToInt32(), BoundingBox = RoadSegmentBoundingBox.From(polyLineMShapeContent.Shape), DbaseRecord = new RoadSegmentDbaseRecord { WS_OIDN = { Value = segment.Id }, WS_UIDN = { Value = $"{segment.Id}_{segment.Version}" }, WS_GIDN = { Value = $"{segment.Id}_{segment.GeometryVersion}" }, B_WK_OIDN = { Value = segment.StartNodeId }, E_WK_OIDN = { Value = segment.EndNodeId }, STATUS = { Value = statusTranslation.Identifier }, LBLSTATUS = { Value = statusTranslation.Name }, MORF = { Value = morphologyTranslation.Identifier }, LBLMORF = { Value = morphologyTranslation.Name }, WEGCAT = { Value = categoryTranslation.Identifier }, LBLWEGCAT = { Value = categoryTranslation.Name }, LSTRNMID = { Value = segment.LeftSide.StreetNameId }, // TODO: Where does this come from? LSTRNM = { Value = null }, RSTRNMID = { Value = segment.RightSide.StreetNameId }, // TODO: Where does this come from? RSTRNM = { Value = null }, BEHEER = { Value = segment.MaintenanceAuthority.Code }, LBLBEHEER = { Value = segment.MaintenanceAuthority.Name }, METHODE = { Value = geometryDrawMethodTranslation.Identifier }, LBLMETHOD = { Value = geometryDrawMethodTranslation.Name }, OPNDATUM = { Value = LocalDateTimeTranslator.TranslateFromWhen(envelope.Message.When) }, BEGINTIJD = { Value = LocalDateTimeTranslator.TranslateFromWhen(envelope.Message.When) }, BEGINORG = { Value = envelope.Message.OrganizationId }, LBLBGNORG = { Value = envelope.Message.Organization }, TGBEP = { Value = accessRestrictionTranslation.Identifier }, LBLTGBEP = { Value = accessRestrictionTranslation.Name } }.ToBytes(manager, encoding) }, token); break; } } }); }
public MemoryStreamManager(RecyclableMemoryStreamManager recyclableMemoryStreamManager) { this.recyclableMemoryStreamManager = recyclableMemoryStreamManager; }
/// <summary> /// Creates a new instance. This class is also used to shareable a context across all instance that are created below one Cluster instance. /// One configuration instance per Cluster instance. /// </summary> internal Configuration(Policies policies, ProtocolOptions protocolOptions, PoolingOptions poolingOptions, SocketOptions socketOptions, ClientOptions clientOptions, IAuthProvider authProvider, IAuthInfoProvider authInfoProvider, QueryOptions queryOptions, IAddressTranslator addressTranslator, IReadOnlyDictionary <string, IExecutionProfile> executionProfiles, MetadataSyncOptions metadataSyncOptions, IEndPointResolver endPointResolver, IDriverMetricsProvider driverMetricsProvider, DriverMetricsOptions metricsOptions, string sessionName, GraphOptions graphOptions, Guid?clusterId, string appVersion, string appName, MonitorReportingOptions monitorReportingOptions, TypeSerializerDefinitions typeSerializerDefinitions, ISessionFactory sessionFactory = null, IRequestOptionsMapper requestOptionsMapper = null, IStartupOptionsFactory startupOptionsFactory = null, IInsightsSupportVerifier insightsSupportVerifier = null, IRequestHandlerFactory requestHandlerFactory = null, IHostConnectionPoolFactory hostConnectionPoolFactory = null, IRequestExecutionFactory requestExecutionFactory = null, IConnectionFactory connectionFactory = null, IControlConnectionFactory controlConnectionFactory = null, IPrepareHandlerFactory prepareHandlerFactory = null, ITimerFactory timerFactory = null, IObserverFactoryBuilder observerFactoryBuilder = null, IInsightsClientFactory insightsClientFactory = null) { AddressTranslator = addressTranslator ?? throw new ArgumentNullException(nameof(addressTranslator)); QueryOptions = queryOptions ?? throw new ArgumentNullException(nameof(queryOptions)); GraphOptions = graphOptions ?? new GraphOptions(); ClusterId = clusterId ?? Guid.NewGuid(); ApplicationVersion = appVersion ?? Configuration.DefaultApplicationVersion; ApplicationName = appName ?? Configuration.FallbackApplicationName; ApplicationNameWasGenerated = appName == null; Policies = policies; ProtocolOptions = protocolOptions; PoolingOptions = poolingOptions; SocketOptions = socketOptions; ClientOptions = clientOptions; AuthProvider = authProvider; AuthInfoProvider = authInfoProvider; StartupOptionsFactory = startupOptionsFactory ?? new StartupOptionsFactory(ClusterId, ApplicationVersion, ApplicationName); SessionFactory = sessionFactory ?? new SessionFactory(); RequestOptionsMapper = requestOptionsMapper ?? new RequestOptionsMapper(); MetadataSyncOptions = metadataSyncOptions?.Clone() ?? new MetadataSyncOptions(); DnsResolver = new DnsResolver(); EndPointResolver = endPointResolver ?? new EndPointResolver(DnsResolver, protocolOptions); MetricsOptions = metricsOptions ?? new DriverMetricsOptions(); MetricsProvider = driverMetricsProvider ?? new NullDriverMetricsProvider(); SessionName = sessionName; MetricsEnabled = driverMetricsProvider != null; TypeSerializers = typeSerializerDefinitions?.Definitions; ObserverFactoryBuilder = observerFactoryBuilder ?? (MetricsEnabled ? (IObserverFactoryBuilder) new MetricsObserverFactoryBuilder() : new NullObserverFactoryBuilder()); RequestHandlerFactory = requestHandlerFactory ?? new RequestHandlerFactory(); HostConnectionPoolFactory = hostConnectionPoolFactory ?? new HostConnectionPoolFactory(); RequestExecutionFactory = requestExecutionFactory ?? new RequestExecutionFactory(); ConnectionFactory = connectionFactory ?? new ConnectionFactory(); ControlConnectionFactory = controlConnectionFactory ?? new ControlConnectionFactory(); PrepareHandlerFactory = prepareHandlerFactory ?? new PrepareHandlerFactory(); TimerFactory = timerFactory ?? new TaskBasedTimerFactory(); RequestOptions = RequestOptionsMapper.BuildRequestOptionsDictionary(executionProfiles, policies, socketOptions, clientOptions, queryOptions, GraphOptions); ExecutionProfiles = BuildExecutionProfilesDictionary(executionProfiles, RequestOptions); MonitorReportingOptions = monitorReportingOptions ?? new MonitorReportingOptions(); InsightsSupportVerifier = insightsSupportVerifier ?? Configuration.DefaultInsightsSupportVerifier; InsightsClientFactory = insightsClientFactory ?? Configuration.DefaultInsightsClientFactory; // Create the buffer pool with 16KB for small buffers and 256Kb for large buffers. // The pool does not eagerly reserve the buffers, so it doesn't take unnecessary memory // to create the instance. BufferPool = new RecyclableMemoryStreamManager(16 * 1024, 256 * 1024, ProtocolOptions.MaximumFrameLength); Timer = new HashedWheelTimer(); }
public ProjectionTestServices() { MemoryStreamManager = new RecyclableMemoryStreamManager(); }
public GlobalExceptionMiddleware(RequestDelegate requestDelegate) { _requestDelegate = requestDelegate; _recyclableMemoryStreamManager = new RecyclableMemoryStreamManager(); }
public HitomiNozomiIndexReader(IHttpClientFactory http, RecyclableMemoryStreamManager memory) { _http = http.CreateClient(nameof(HitomiNozomiIndexReader)); _memory = memory; }
public RoadSegmentEuropeanRoadAttributeRecordProjection(RecyclableMemoryStreamManager manager, Encoding encoding) { if (manager == null) { throw new ArgumentNullException(nameof(manager)); } if (encoding == null) { throw new ArgumentNullException(nameof(encoding)); } When <Envelope <ImportedRoadSegment> >((context, envelope, token) => { if (envelope.Message.PartOfEuropeanRoads.Length == 0) { return(Task.CompletedTask); } var europeanRoadAttributes = envelope.Message .PartOfEuropeanRoads .Select(europeanRoad => new RoadSegmentEuropeanRoadAttributeRecord { Id = europeanRoad.AttributeId, RoadSegmentId = envelope.Message.Id, DbaseRecord = new RoadSegmentEuropeanRoadAttributeDbaseRecord { EU_OIDN = { Value = europeanRoad.AttributeId }, WS_OIDN = { Value = envelope.Message.Id }, EUNUMMER = { Value = europeanRoad.Number }, BEGINTIJD = { Value = europeanRoad.Origin.Since }, BEGINORG = { Value = europeanRoad.Origin.OrganizationId }, LBLBGNORG = { Value = europeanRoad.Origin.Organization }, }.ToBytes(manager, encoding) }); return(context.AddRangeAsync(europeanRoadAttributes, token)); }); When <Envelope <RoadNetworkChangesBasedOnArchiveAccepted> >(async(context, envelope, token) => { foreach (var change in envelope.Message.Changes.Flatten()) { switch (change) { case RoadSegmentAddedToEuropeanRoad europeanRoad: await context.RoadSegmentEuropeanRoadAttributes.AddAsync(new RoadSegmentEuropeanRoadAttributeRecord { Id = europeanRoad.AttributeId, RoadSegmentId = europeanRoad.SegmentId, DbaseRecord = new RoadSegmentEuropeanRoadAttributeDbaseRecord { EU_OIDN = { Value = europeanRoad.AttributeId }, WS_OIDN = { Value = europeanRoad.SegmentId }, EUNUMMER = { Value = europeanRoad.Number }, BEGINTIJD = { Value = LocalDateTimeTranslator.TranslateFromWhen(envelope.Message.When) }, BEGINORG = { Value = envelope.Message.OrganizationId }, LBLBGNORG = { Value = envelope.Message.Organization } }.ToBytes(manager, encoding) }); break; } } }); }
private static async Task TestRandomInner(HybridCache cache, TestParams options, ITestLoggerFactory loggerFactory, CancellationToken cancellationToken) { var data = new byte[options.FileSize]; var dataSegment = new ArraySegment <byte>(data); var contentType = "application/octet-stream"; async Task <Tuple <string, ArraySegment <byte> > > DataProvider(CancellationToken token) { if (options.CreationTaskDelay.Ticks > 0) { await Task.Delay(options.CreationTaskDelay, cancellationToken); } if (options.CreationThreadSleep.Ticks > 0) { Thread.Sleep(options.CreationThreadSleep); } return(new Tuple <string, ArraySegment <byte> >(contentType, dataSegment)); } var random = new Random(options.Seed); var tasks = new List <Task <Tuple <TimeSpan, string> > >(); var swTotal = Stopwatch.StartNew(); for (var wave = 0; wave < options.RequestWaves; wave++) { if (wave != 0) { Thread.Sleep(options.RequestWavesIntermission); } Console.Write("Wave {0}, {1} requests...", wave + 1, options.RequestCountPerWave); var sw = Stopwatch.StartNew(); var memoryStreamManager = new RecyclableMemoryStreamManager(Math.Max(2, options.FileSize), 2, options.FileSize * 2 + 2); for (var ix = 0; ix < options.RequestCountPerWave; ix++) { Func <Task <Tuple <TimeSpan, string> > > task = async() => { var whichFile = random.Next(options.FileCount); var key = BitConverter.GetBytes(whichFile); var itemSw = Stopwatch.StartNew(); var cacheResult = await cache.GetOrCreateBytes(key, DataProvider, cancellationToken, options.RetrieveContentType); if (cacheResult.Data != null) { await using (cacheResult.Data) { await using var ms = memoryStreamManager.GetStream(); await cacheResult.Data.CopyToAsync(ms, cancellationToken); } } itemSw.Stop(); return(new Tuple <TimeSpan, string>(itemSw.Elapsed, cacheResult.Status)); }; if (options.Synchronous) { var result = await task(); tasks.Add(Task.FromResult(result)); } else { tasks.Add(Task.Run(task, cancellationToken)); } } await Task.WhenAll(tasks); sw.Stop(); var swAsync = Stopwatch.StartNew(); await cache.AwaitEnqueuedTasks(); swAsync.Stop(); Console.WriteLine("completed in {0}, plus {1} for async tasks. ", sw.Elapsed, swAsync.Elapsed); PrintDiskUtilization(options); } swTotal.Stop(); Console.WriteLine("Completed all waves in {0}", swTotal.Elapsed); Console.WriteLine(); // Accumulate results var resultCounts = new Dictionary <string, int>(); var resultTimes = new Dictionary <string, List <TimeSpan> >(); foreach (var t in tasks) { var key = t.Result.Item2; if (resultCounts.TryGetValue(key, out var value)) { resultCounts[key] = value + 1; } else { resultCounts[key] = 1; resultTimes[key] = new List <TimeSpan>(); } resultTimes[key].Add(t.Result.Item1); } foreach (var pair in resultCounts.OrderByDescending(p => p.Value)) { Console.WriteLine("{0} - {1} occurrences - {2}kb - 1st percentile {3} 5th percentile = {4} 50th percentile = {5} 95th percentile = {6} 99th percentile = {7}", pair.Key, pair.Value, pair.Value * options.FileSize / 1000, GetPercentile(resultTimes[pair.Key], 0.01f), GetPercentile(resultTimes[pair.Key], 0.05f), GetPercentile(resultTimes[pair.Key], 0.5f), GetPercentile(resultTimes[pair.Key], 0.95f), GetPercentile(resultTimes[pair.Key], 0.99f)); } var logCounts = new Dictionary <string, int>(); var logEntryCount = 0; foreach (var e in loggerFactory.Sink.LogEntries) { logEntryCount++; var key = e.OriginalFormat; if (logCounts.TryGetValue(key, out var value)) { logCounts[key] = value + 1; } else { logCounts[key] = 1; } } foreach (var pair in logCounts) { var percent = pair.Value * 100.0 / logEntryCount; Console.WriteLine("{0:00.00}% ({1} of {2}) log entries were {3}", percent, pair.Value, logEntryCount, pair.Key); } }
/// <summary> /// Initializes a new instance of the <see cref="RequestResponseLoggingMiddleware"/> class. /// </summary> /// <param name="next">The next.</param> public RequestResponseLoggingMiddleware(RequestDelegate next) { _next = next; _recyclableMemoryStreamManager = new RecyclableMemoryStreamManager(); }
public PacketPackager(RecyclableMemoryStreamManager memoryStreamMgr) { _memoryStreamMgr = memoryStreamMgr; }
public void GlobalSetup() { this.data = new byte[this.Length]; this.data2 = new byte[this.Length]; this.memoryManager = new RecyclableMemoryStreamManager(); }
public RetrieveTransactionResourceTests(HttpIntegrationTestFixture <Startup> fixture) { _client = fixture.Client; _recyclableMemoryStreamManager = fixture.RecyclableMemoryStreamManager; }
public RoadNodeRecordProjection(RecyclableMemoryStreamManager manager, Encoding encoding) { if (manager == null) { throw new ArgumentNullException(nameof(manager)); } if (encoding == null) { throw new ArgumentNullException(nameof(encoding)); } When <Envelope <ImportedRoadNode> >(async(context, envelope, token) => { var typeTranslation = RoadNodeType.Parse(envelope.Message.Type).Translation; var dbaseRecord = new RoadNodeDbaseRecord { WK_OIDN = { Value = envelope.Message.Id }, WK_UIDN = { Value = envelope.Message.Id + "_" + envelope.Message.Version }, TYPE = { Value = typeTranslation.Identifier }, LBLTYPE = { Value = typeTranslation.Name }, BEGINTIJD = { Value = envelope.Message.Origin.Since }, BEGINORG = { Value = envelope.Message.Origin.OrganizationId }, LBLBGNORG = { Value = envelope.Message.Origin.Organization } }; var point = GeometryTranslator.FromGeometryPoint(Core.GeometryTranslator.Translate(envelope.Message.Geometry)); var pointShapeContent = new PointShapeContent(point); await context.RoadNodes.AddAsync(new RoadNodeRecord { Id = envelope.Message.Id, ShapeRecordContent = pointShapeContent.ToBytes(manager, encoding), ShapeRecordContentLength = pointShapeContent.ContentLength.ToInt32(), DbaseRecord = dbaseRecord.ToBytes(manager, encoding), BoundingBox = RoadNodeBoundingBox.From(pointShapeContent.Shape) }, token); }); When <Envelope <RoadNetworkChangesBasedOnArchiveAccepted> >(async(context, envelope, token) => { foreach (var message in envelope.Message.Changes.Flatten()) { switch (message) { case RoadNodeAdded node: var typeTranslation = RoadNodeType.Parse(node.Type).Translation; var dbaseRecord = new RoadNodeDbaseRecord { WK_OIDN = { Value = node.Id }, WK_UIDN = { Value = node.Id + "_0" }, // 1? TYPE = { Value = typeTranslation.Identifier }, LBLTYPE = { Value = typeTranslation.Name }, BEGINTIJD = { Value = LocalDateTimeTranslator.TranslateFromWhen(envelope.Message.When) }, BEGINORG = { Value = envelope.Message.OrganizationId }, LBLBGNORG = { Value = envelope.Message.Organization } }; var point = GeometryTranslator.FromGeometryPoint(Core.GeometryTranslator.Translate(node.Geometry)); var pointShapeContent = new PointShapeContent(point); await context.RoadNodes.AddAsync(new RoadNodeRecord { Id = node.Id, ShapeRecordContent = pointShapeContent.ToBytes(manager, encoding), ShapeRecordContentLength = pointShapeContent.ContentLength.ToInt32(), DbaseRecord = dbaseRecord.ToBytes(manager, encoding), BoundingBox = RoadNodeBoundingBox.From(pointShapeContent.Shape) }, token); break; } } }); }
private void TestDroppingLargeBuffer(long maxFreeLargeBufferSize) { const int BlockSize = 100; const int LargeBufferMultiple = 1000; const int MaxBufferSize = 8000; for (var size = LargeBufferMultiple; size <= MaxBufferSize; size += LargeBufferMultiple) { var memMgr = new RecyclableMemoryStreamManager(BlockSize, LargeBufferMultiple, MaxBufferSize) { AggressiveBufferReturn = this.AggressiveBufferRelease, MaximumFreeLargePoolBytes = maxFreeLargeBufferSize }; var buffers = new List<byte[]>(); //Get one extra buffer var buffersToRetrieve = (maxFreeLargeBufferSize > 0) ? (maxFreeLargeBufferSize / size + 1) : 10; for (var i = 0; i < buffersToRetrieve; i++) { buffers.Add(memMgr.GetLargeBuffer(size, DefaultTag)); } Assert.That(memMgr.LargePoolInUseSize, Is.EqualTo(size * buffersToRetrieve)); Assert.That(memMgr.LargePoolFreeSize, Is.EqualTo(0)); foreach (var buffer in buffers) { memMgr.ReturnLargeBuffer(buffer, DefaultTag); } Assert.That(memMgr.LargePoolInUseSize, Is.EqualTo(0)); if (maxFreeLargeBufferSize > 0) { Assert.That(memMgr.LargePoolFreeSize, Is.LessThanOrEqualTo(maxFreeLargeBufferSize)); } else { Assert.That(memMgr.LargePoolFreeSize, Is.EqualTo(buffersToRetrieve * size)); } } }