[#21] Client: Allows multinenant client

Using one client for several owners

Signed-off-by: Pavel Gross <p.gross@yando.com>
This commit is contained in:
Pavel Gross 2024-08-12 10:46:59 +03:00 committed by Pavel Gross
parent 5d34ac9cab
commit 549ec510c8
3 changed files with 8 additions and 13 deletions

View file

@ -1,6 +1,6 @@
using FrostFS.SDK.ModelsV2;
using System.Collections.Specialized;
using System.IO;
using FrostFS.SDK.ModelsV2;
namespace FrostFS.SDK.ClientV2.Parameters;
@ -30,18 +30,13 @@ public sealed class PrmObjectPut : PrmBase, ISessionToken
/// Overrides default size of the buffer for stream transferring.
/// </summary>
/// <value>Size of the buffer</value>
public int BufferMaxSize { get; set; }
public int BufferMaxSize { get; set; }
/// <summary>
/// Allows to define a buffer for chunks to manage by the memory allocation and releasing.
/// </summary>
public byte[]? CustomBuffer { get; set; }
/// <summary>
/// FrostFS request X-Headers
/// </summary>
public NameValueCollection XHeaders { get; set; } = [];
/// <inheritdoc />
public SessionToken? SessionToken { get; set; }

View file

@ -331,7 +331,7 @@ internal class ObjectServiceProvider(ObjectService.ObjectServiceClient client, C
while (objectLimitSize == 0 || sentBytes < objectLimitSize)
{
// send chanks limited to default or user's settings
// send chunks limited to default or user's settings
var bufferSize = objectLimitSize > 0 ?
(int)Math.Min(objectLimitSize - sentBytes, chunkSize)
: chunkSize;
@ -350,7 +350,7 @@ internal class ObjectServiceProvider(ObjectService.ObjectServiceClient client, C
Chunk = ByteString.CopyFrom(chunkBuffer, 0, bytesCount)
}
};
chunkRequest.Sign(ctx.Key);
await stream.Write(chunkRequest);

View file

@ -2,15 +2,15 @@ using FrostFS.SDK.ModelsV2;
using Grpc.Net.Client;
using System;
using System.Security.Cryptography;
using System.Buffers;
using FrostFS.SDK.Cryptography;
namespace FrostFS.SDK.ClientV2;
public class ClientEnvironment(Client client, ECDsa? key, OwnerId? owner, GrpcChannel channel, ModelsV2.Version version) : IDisposable
{
private ArrayPool<byte> _arrayPool;
internal OwnerId? Owner { get; } = owner;
private ArrayPool<byte> _arrayPool;
internal OwnerId? Owner { get; } = owner;
internal GrpcChannel Channel { get; private set; } = channel;