# ConnectionFrameHelper Methods

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.messaging.connectionframehelper/)

## ReadFrameAsync(ConnectionContext, CancellationToken, int) {#readframeasync-microsoft-aspnetcore-connections-connectioncontext-system-threadi-6e73b438}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.messaging.connectionframehelper/methods/readframeasync-microsoft-aspnetcore-connections-connectioncontext-system-threadi-6e73b438/)

[Source](https://github.com/dotnet/orleans/blob/c9649c32492ebefacecd89d6fdef918adede6cdf/src/Orleans.Core/Networking/ConnectionFrameHelper.cs#L49-L111)

```csharp
public static ValueTask<(byte FrameType, byte[] Payload)> ConnectionFrameHelper.ReadFrameAsync(ConnectionContext connection, CancellationToken cancellationToken, int maxFrameLength = 1048576)
```

Reads a single frame from the connection.

### Parameters

- `connection` (`ConnectionContext`)
- `cancellationToken` (`CancellationToken`)
- `maxFrameLength` (`int`)

## ReadLengthPrefixedString(byte[], int) {#readlengthprefixedstring-byte-array-1-ref-int-970582d4}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.messaging.connectionframehelper/methods/readlengthprefixedstring-byte-array-1-ref-int-970582d4/)

[Source](https://github.com/dotnet/orleans/blob/c9649c32492ebefacecd89d6fdef918adede6cdf/src/Orleans.Core/Networking/ConnectionFrameHelper.cs#L173-L188)

```csharp
public static string ReadLengthPrefixedString(byte[] data, ref int offset)
```

Reads a length-prefixed UTF-8 string from a payload byte array.

### Parameters

- `data` (`byte[]`)
- `offset` (`int`)

## WriteFrameAsync(ConnectionContext, byte, Action&lt;IBufferWriter&lt;byte&gt;&gt;, CancellationToken) {#writeframeasync-microsoft-aspnetcore-connections-connectioncontext-byte-system-a-84768933}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.messaging.connectionframehelper/methods/writeframeasync-microsoft-aspnetcore-connections-connectioncontext-byte-system-a-84768933/)

[Source](https://github.com/dotnet/orleans/blob/c9649c32492ebefacecd89d6fdef918adede6cdf/src/Orleans.Core/Networking/ConnectionFrameHelper.cs)

```csharp
public static ValueTask WriteFrameAsync(ConnectionContext connection, byte frameType, Action<IBufferWriter<byte>> writePayload, CancellationToken cancellationToken)
```

Writes a frame using zero-copy framing via `Orleans.Runtime.Messaging.PrefixingBufferWriter`. The `writePayload` delegate writes payload directly into the transport pipe buffer.

### Parameters

- `connection` (`ConnectionContext`)
- `frameType` (`byte`)
- `writePayload` (`Action<IBufferWriter<byte>>`)
- `cancellationToken` (`CancellationToken`)

## WriteFrameAsync(ConnectionContext, byte, byte[], CancellationToken) {#writeframeasync-microsoft-aspnetcore-connections-connectioncontext-byte-byte-arr-b67188ba}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.messaging.connectionframehelper/methods/writeframeasync-microsoft-aspnetcore-connections-connectioncontext-byte-byte-arr-b67188ba/)

[Source](https://github.com/dotnet/orleans/blob/c9649c32492ebefacecd89d6fdef918adede6cdf/src/Orleans.Core/Networking/ConnectionFrameHelper.cs)

```csharp
public static ValueTask WriteFrameAsync(ConnectionContext connection, byte frameType, byte[] payload, CancellationToken cancellationToken)
```

Writes a frame with the given type and raw payload bytes.

### Parameters

- `connection` (`ConnectionContext`)
- `frameType` (`byte`)
- `payload` (`byte[]`)
- `cancellationToken` (`CancellationToken`)

## WriteLengthPrefixedString(IBufferWriter&lt;byte&gt;, string) {#writelengthprefixedstring-system-buffers-ibufferwriter-byte-string-993def94}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.core/orleans.runtime.messaging.connectionframehelper/methods/writelengthprefixedstring-system-buffers-ibufferwriter-byte-string-993def94/)

[Source](https://github.com/dotnet/orleans/blob/c9649c32492ebefacecd89d6fdef918adede6cdf/src/Orleans.Core/Networking/ConnectionFrameHelper.cs#L154-L166)

```csharp
public static void WriteLengthPrefixedString(IBufferWriter<byte> writer, string value)
```

Writes a length-prefixed UTF-8 string (4-byte LE length + bytes) into a buffer.

### Parameters

- `writer` (`IBufferWriter<byte>`)
- `value` (`string`)
