Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions src/Marten.AspNetCore/QueryableExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static async Task WriteSingle<T>(
int onFoundStatus = 200
)
{
var stream = new MemoryStream();
var stream = Marten.Internal.SharedMemoryStreamManager.GetStream();
var found = await queryable.StreamJsonFirstOrDefault(stream, context.RequestAborted).ConfigureAwait(false);

if (found)
Expand Down Expand Up @@ -82,7 +82,7 @@ public static async Task WriteById<T>(
int onFoundStatus = 200
) where T : class
{
var stream = new MemoryStream();
var stream = Marten.Internal.SharedMemoryStreamManager.GetStream();
var found = await json.StreamById<T>(id, stream, context.RequestAborted).ConfigureAwait(false);
if (found)
{
Expand Down Expand Up @@ -117,7 +117,7 @@ public static async Task WriteById<T>(
int onFoundStatus = 200
) where T : class
{
var stream = new MemoryStream();
var stream = Marten.Internal.SharedMemoryStreamManager.GetStream();
var found = await json.StreamById<T>(id, stream, context.RequestAborted).ConfigureAwait(false);
if (found)
{
Expand Down Expand Up @@ -152,7 +152,7 @@ public static async Task WriteById<T>(
int onFoundStatus = 200
) where T : class
{
var stream = new MemoryStream();
var stream = Marten.Internal.SharedMemoryStreamManager.GetStream();
var found = await json.StreamById<T>(id, stream, context.RequestAborted).ConfigureAwait(false);
if (found)
{
Expand Down Expand Up @@ -187,7 +187,7 @@ public static async Task WriteById<T>(
int onFoundStatus = 200
) where T : class
{
var stream = new MemoryStream();
var stream = Marten.Internal.SharedMemoryStreamManager.GetStream();
var found = await json.StreamById<T>(id, stream, context.RequestAborted).ConfigureAwait(false);
if (found)
{
Expand Down Expand Up @@ -222,7 +222,7 @@ public static async Task WriteById<T>(
int onFoundStatus = 200
) where T : class
{
var stream = new MemoryStream();
var stream = Marten.Internal.SharedMemoryStreamManager.GetStream();
var found = await json.StreamById<T>(id, stream, context.RequestAborted).ConfigureAwait(false);
if (found)
{
Expand Down Expand Up @@ -259,7 +259,7 @@ public static async Task WriteOne<TDoc, TOut>(
int onFoundStatus = 200
) where TDoc : notnull
{
var stream = new MemoryStream();
var stream = Marten.Internal.SharedMemoryStreamManager.GetStream();
var found = await session.StreamJsonOne(query, stream, context.RequestAborted).ConfigureAwait(false);
if (found)
{
Expand Down
4 changes: 2 additions & 2 deletions src/Marten/Internal/Sessions/QuerySession.Json.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public Task<int> StreamJsonMany<TDoc, TOut>(ICompiledQuery<TDoc, TOut> query, St
public async Task<string?> ToJsonOne<TDoc, TOut>(ICompiledQuery<TDoc, TOut> query,
CancellationToken token = default) where TDoc : notnull
{
var stream = new MemoryStream();
var stream = SharedMemoryStreamManager.GetStream();
var count = await StreamJsonOne(query, stream, token).ConfigureAwait(false);
if (!count)
{
Expand All @@ -46,7 +46,7 @@ public Task<int> StreamJsonMany<TDoc, TOut>(ICompiledQuery<TDoc, TOut> query, St
public async Task<string> ToJsonMany<TDoc, TOut>(ICompiledQuery<TDoc, TOut> query,
CancellationToken token = default) where TDoc : notnull
{
var stream = new MemoryStream();
var stream = SharedMemoryStreamManager.GetStream();
await StreamJsonOne(query, stream, token).ConfigureAwait(false);
stream.Position = 0;
return await stream.ReadAllTextAsync().ConfigureAwait(false);
Expand Down
14 changes: 14 additions & 0 deletions src/Marten/Internal/SharedMemoryStreamManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.IO;
using Microsoft.IO;

namespace Marten.Internal;

public static class SharedMemoryStreamManager
{
private static readonly RecyclableMemoryStreamManager Manager = new();

public static MemoryStream GetStream()
{
return Manager.GetStream();
}
}
10 changes: 5 additions & 5 deletions src/Marten/Linq/MartenLinqQueryable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -270,7 +270,7 @@ public NpgsqlCommand ToPreviewCommand(FetchType fetchType)

public async Task<string> ToJsonArray(CancellationToken token)
{
var stream = new MemoryStream();
var stream = Internal.SharedMemoryStreamManager.GetStream();
await StreamJsonArray(stream, token).ConfigureAwait(false);
stream.Position = 0;
return await stream.ReadAllTextAsync().ConfigureAwait(false);
Expand Down Expand Up @@ -298,15 +298,15 @@ public Task<int> StreamJsonSingleOrDefault(Stream destination, CancellationToken

public async Task<string> ToJsonFirst(CancellationToken token)
{
var stream = new MemoryStream();
var stream = Internal.SharedMemoryStreamManager.GetStream();
await StreamJsonFirst(stream, token).ConfigureAwait(false);
stream.Position = 0;
return await stream.ReadAllTextAsync().ConfigureAwait(false);
}

public async Task<string?> ToJsonFirstOrDefault(CancellationToken token)
{
var stream = new MemoryStream();
var stream = Internal.SharedMemoryStreamManager.GetStream();
var actual = await StreamJsonFirstOrDefault(stream, token).ConfigureAwait(false);
if (actual == 0)
{
Expand All @@ -319,15 +319,15 @@ public async Task<string> ToJsonFirst(CancellationToken token)

public async Task<string> ToJsonSingle(CancellationToken token)
{
var stream = new MemoryStream();
var stream = Internal.SharedMemoryStreamManager.GetStream();
await StreamJsonSingle(stream, token).ConfigureAwait(false);
stream.Position = 0;
return await stream.ReadAllTextAsync().ConfigureAwait(false);
}

public async Task<string?> ToJsonSingleOrDefault(CancellationToken token)
{
var stream = new MemoryStream();
var stream = Internal.SharedMemoryStreamManager.GetStream();
var count = await StreamJsonSingleOrDefault(stream, token).ConfigureAwait(false);
if (count == 0)
{
Expand Down
1 change: 1 addition & 0 deletions src/Marten/Marten.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
<PackageReference Include="JasperFx" Version="1.17.0" />
<PackageReference Include="JasperFx.Events" Version="1.19.1" />
<PackageReference Include="JasperFx.RuntimeCompiler" Version="4.3.2" />
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<!-- This is forced by Npgsql peer dependency -->
<PackageReference Include="Npgsql.Json.NET" Version="9.0.4" />
Expand Down
Loading