reckfellENGINE

StreamPeer

Базовый API байтового потока и типизированного бинарного ввода-вывода.

На этой странице
class StreamPeerReckfellSharpНаследует RefCounted

StreamPeer — абстрактная основа. Для данных в памяти используйте StreamPeerBuffer, для сети — подходящий доступный транспорт. Поток не создаёт границы сообщений автоматически: согласуйте формат, длины, порядок байтов и обработку частичных операций.

GetData/GetPartialData возвращают пару Error и байтов; PutPartialData — Error и число отправленных байтов. Числовые getter/setter и строковые сокращения не дают такого отдельного статуса. Не считайте числовое значение доказательством успешного чтения; неполное поле нужно сначала собрать и проверить.

BigEndian меняет последующие числовые операции, не содержимое готового массива. UTF-8 длины задаются байтами, а не C# string.Length. Длины внешних данных ограничивайте своим протоколом.

Полный пример проверяемого сообщения приведён в StreamPeerBuffer.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Свойства1

BigEndianСвойство
# BigEndian
C#
public bool BigEndian { get; set; }

Порядок байтов последующих числовых операций и префиксов длин. false по умолчанию — little-endian; true — big-endian. Изменение не переставляет ранее записанные байты и не меняет порядок raw-массива PutData.

Методы37

Get16short
# Get16
C#
public short Get16();

Читает 2 байта в формате signed 16-bit. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает short

Прочитанное значение C# типа short. Это не пара с Error; значение не проверяет успешность чтения.

Get32int
# Get32
C#
public int Get32();

Читает 4 байта в формате signed 32-bit. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает int

Прочитанное значение C# типа int. Это не пара с Error; значение не проверяет успешность чтения.

Get64long
# Get64
C#
public long Get64();

Читает 8 байт в формате signed 64-bit. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает long

Прочитанное значение C# типа long. Это не пара с Error; значение не проверяет успешность чтения.

Get8sbyte
# Get8
C#
public sbyte Get8();

Читает 1 байт в формате signed 8-bit. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает sbyte

Прочитанное значение C# типа sbyte. Это не пара с Error; значение не проверяет успешность чтения.

GetAvailableBytesint
# GetAvailableBytes
C#
public int GetAvailableBytes();

Возвращает число доступных для чтения байтов по реализации потока. Это не размер следующего сообщения и не гарантия наличия полного поля/пакета. Для StreamPeerBuffer это GetSize()-GetPosition().

Возвращает int

Доступное число байтов. У StreamPeerBuffer после Resize с курсором за концом возможно отрицательное значение — сначала исправьте позицию.

GetDataReckfell.Collections.Array
# GetData
C#
public Reckfell.Collections.Array GetData(int bytes);

Пытается прочитать заданное число байтов и возвращает пару [Error, byte[]]. Проверяйте Error до использования данных. На сокетном потоке операция может ожидать недостающие байты; в StreamPeerBuffer короткое чтение возвращает ошибку, но уже сдвигает курсор на доступную часть.

Параметры
ИмяТипПо умолчанию
bytesint—
bytes

Неотрицательное число байтов для чтения. До вызова проверьте верхний лимит своего протокола.

Возвращает Reckfell.Collections.Array

Array из двух Variant: [код Error, packed-массив байтов]. В C# извлеките byte[] после проверки кода. При ошибке содержимое не следует считать полным или безопасно инициализированным.

GetDoubledouble
# GetDouble
C#
public double GetDouble();

Читает 8 байт в формате binary64. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает double

Прочитанное значение C# типа double. Это не пара с Error; значение не проверяет успешность чтения.

GetFloatfloat
# GetFloat
C#
public float GetFloat();

Читает 4 байта в формате binary32. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает float

Прочитанное значение C# типа float. Это не пара с Error; значение не проверяет успешность чтения.

GetHalffloat
# GetHalf
C#
public float GetHalf();

Читает 2 байта в формате binary16. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным. Формат binary16 имеет меньшую точность/диапазон, чем C# float.

Возвращает float

Прочитанное значение C# типа float. Это не пара с Error; значение не проверяет успешность чтения.

GetPartialDataReckfell.Collections.Array
# GetPartialData
C#
public Reckfell.Collections.Array GetPartialData(int bytes);

Читает до указанного числа байтов без требования получить их все за вызов. Возвращает [Error, byte[]]; при успехе массив имеет фактически полученную длину. Собирайте неполное сообщение в своём буфере.

Параметры
ИмяТипПо умолчанию
bytesint—
bytes

Неотрицательное число байтов для чтения. До вызова проверьте верхний лимит своего протокола.

Возвращает Reckfell.Collections.Array

Array [код Error, packed-массив байтов]. При Error.Ok длина массива равна фактически прочитанному числу байтов; при ошибке массив пуст.

GetStringstring
# GetString
C#
public string GetString(int bytes = -1);

Читает простую строку парного формата PutString. При bytes<0 сначала читает 32-битную длину, иначе использует точное число байтов без префикса. Для Unicode выбирайте UTF-8 пару. Длины внешнего ввода ограничивайте до выделения памяти.

Параметры
ИмяТипПо умолчанию
bytesint-1
bytes

Число байтов строки. Отрицательное значение читает длину из 32-битного префикса; неотрицательное читает ровно столько байтов без префикса.

Возвращает string

Полученная строка. Пустая строка сама по себе не различает пустое содержимое и отказ чтения.

GetU16ushort
# GetU16
C#
public ushort GetU16();

Читает 2 байта в формате unsigned 16-bit. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает ushort

Прочитанное значение C# типа ushort. Это не пара с Error; значение не проверяет успешность чтения.

GetU32uint
# GetU32
C#
public uint GetU32();

Читает 4 байта в формате unsigned 32-bit. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает uint

Прочитанное значение C# типа uint. Это не пара с Error; значение не проверяет успешность чтения.

GetU64ulong
# GetU64
C#
public ulong GetU64();

Читает 8 байт в формате unsigned 64-bit. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает ulong

Прочитанное значение C# типа ulong. Это не пара с Error; значение не проверяет успешность чтения.

GetU8byte
# GetU8
C#
public byte GetU8();

Читает 1 байт в формате unsigned 8-bit. При ширине больше байта учитывает BigEndian. Не возвращает Error: заранее обеспечьте полное поле; после недостаточного/неудачного чтения числовой результат нельзя считать достоверным.

Возвращает byte

Прочитанное значение C# типа byte. Это не пара с Error; значение не проверяет успешность чтения.

GetUtf8Stringstring
# GetUtf8String
C#
public string GetUtf8String(int bytes = -1);

Читает строку UTF-8. При bytes<0 сам читает 32-битный префикс; при заданном числе читает только указанные байты. Не передавайте длину в символах C#. Метод не возвращает отдельный Error; для строгого внешнего формата контролируйте длину и декодирование явно.

Параметры
ИмяТипПо умолчанию
bytesint-1
bytes

Число байтов строки. Отрицательное значение читает длину из 32-битного префикса; неотрицательное читает ровно столько байтов без префикса.

Возвращает string

Полученная строка. Пустая строка сама по себе не различает пустое содержимое и отказ чтения.

GetVarVariant
# GetVar
C#
public Variant GetVar(bool allowObjects = false);

Читает двоичный Variant с префиксом длины, записанный парным PutVar. Это не JSON. Проверяйте доверенность, размер и ожидаемый тип данных; метод сам не задаёт прикладной лимит пакета и не возвращает отдельный Error.

Параметры
ИмяТипПо умолчанию
allowObjectsboolfalse
allowObjects

По умолчанию false. true разрешает восстановление объектов при декодировании; не включайте для недоверенного содержимого. Это не проверка схемы и не песочница.

Возвращает Variant

Декодированный Variant; Nil может быть данными либо результатом отказа с диагностикой.

IsBigEndianEnabledbool
# IsBigEndianEnabled
C#
public bool IsBigEndianEnabled();

Возвращает тот же флаг, что BigEndian; не определяет порядок байтов уже загруженных данных.

Возвращает bool

Текущее значение BigEndian; false означает little-endian.

Put16void
# Put16
C#
public void Put16(short value);

Пишет 2 байта в формате signed 16-bit. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valueshort—
value

Значение для формата signed 16-bit, 2 байта. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

Put32void
# Put32
C#
public void Put32(int value);

Пишет 4 байта в формате signed 32-bit. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valueint—
value

Значение для формата signed 32-bit, 4 байта. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

Put64void
# Put64
C#
public void Put64(long value);

Пишет 8 байт в формате signed 64-bit. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valuelong—
value

Значение для формата signed 64-bit, 8 байт. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

Put8void
# Put8
C#
public void Put8(sbyte value);

Пишет 1 байт в формате signed 8-bit. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valuesbyte—
value

Значение для формата signed 8-bit, 1 байт. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

PutData2 перегрузки
# PutData · 1/2
C#
public Error PutData(byte[] data);

Передаёт raw-байты без автоматического заголовка, длины или смены порядка. Возвращает Error; на сокетном потоке полная отправка может ожидать. Один вызов не задаёт границы TCP-сообщения.

Параметры
ИмяТипПо умолчанию
databyte[]—
data

Raw-байты для передачи, не текст и не структура с автоматической сериализацией. Количество байтов задаётся длиной массива/span.

Возвращает Error

Error.Ok при успешной полной передаче по контракту реализации; иначе код отказа. Не подтверждает обработку получателем.

# PutData · 2/2
C#
public Error PutData(ReadOnlySpan<byte> data);

Передаёт raw-байты без автоматического заголовка, длины или смены порядка. Возвращает Error; на сокетном потоке полная отправка может ожидать. Один вызов не задаёт границы TCP-сообщения.

Параметры
ИмяТипПо умолчанию
dataReadOnlySpan<byte>—
data

Raw-байты для передачи, не текст и не структура с автоматической сериализацией. Количество байтов задаётся длиной массива/span.

Возвращает Error

Error.Ok при успешной полной передаче по контракту реализации; иначе код отказа. Не подтверждает обработку получателем.

PutDoublevoid
# PutDouble
C#
public void PutDouble(double value);

Пишет 8 байт в формате binary64. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valuedouble—
value

Значение для формата binary64, 8 байт. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

PutFloatvoid
# PutFloat
C#
public void PutFloat(float value);

Пишет 4 байта в формате binary32. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valuefloat—
value

Значение для формата binary32, 4 байта. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

PutHalfvoid
# PutHalf
C#
public void PutHalf(float value);

Пишет 2 байта в формате binary16. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата. Формат binary16 имеет меньшую точность/диапазон, чем C# float.

Параметры
ИмяТипПо умолчанию
valuefloat—
value

Значение для формата binary16, 2 байта. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

PutPartialData2 перегрузки
# PutPartialData · 1/2
C#
public Reckfell.Collections.Array PutPartialData(byte[] data);

Пытается передать часть raw-данных и возвращает [Error, количество]. Проверяйте оба значения и продолжайте с оставшегося участка при необходимости. У StreamPeerBuffer успешная запись обычно принимает весь массив.

Параметры
ИмяТипПо умолчанию
databyte[]—
data

Raw-байты для передачи, не текст и не структура с автоматической сериализацией. Количество байтов задаётся длиной массива/span.

Возвращает Reckfell.Collections.Array

Array [код Error, фактически отправленное число байтов]. Успех не гарантирует отправку всего запроса.

# PutPartialData · 2/2
C#
public Reckfell.Collections.Array PutPartialData(ReadOnlySpan<byte> data);

Пытается передать часть raw-данных и возвращает [Error, количество]. Проверяйте оба значения и продолжайте с оставшегося участка при необходимости. У StreamPeerBuffer успешная запись обычно принимает весь массив.

Параметры
ИмяТипПо умолчанию
dataReadOnlySpan<byte>—
data

Raw-байты для передачи, не текст и не структура с автоматической сериализацией. Количество байтов задаётся длиной массива/span.

Возвращает Reckfell.Collections.Array

Array [код Error, фактически отправленное число байтов]. Успех не гарантирует отправку всего запроса.

PutStringvoid
# PutString
C#
public void PutString(string value);

Пишет ASCII-представление с 32-битным префиксом длины в байтах. Для Unicode используйте PutUtf8String. Префикс зависит от BigEndian; нулевой завершающий байт не является частью полезной строки.

Параметры
ИмяТипПо умолчанию
valuestring—
value

Строка для записи в ASCII. Для кириллицы, emoji и другого Unicode используйте PutUtf8String.

PutU16void
# PutU16
C#
public void PutU16(ushort value);

Пишет 2 байта в формате unsigned 16-bit. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valueushort—
value

Значение для формата unsigned 16-bit, 2 байта. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

PutU32void
# PutU32
C#
public void PutU32(uint value);

Пишет 4 байта в формате unsigned 32-bit. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valueuint—
value

Значение для формата unsigned 32-bit, 4 байта. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

PutU64void
# PutU64
C#
public void PutU64(ulong value);

Пишет 8 байт в формате unsigned 64-bit. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valueulong—
value

Значение для формата unsigned 64-bit, 8 байт. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

PutU8void
# PutU8
C#
public void PutU8(byte value);

Пишет 1 байт в формате unsigned 8-bit. При ширине больше байта учитывает BigEndian. Возвращаемого Error нет; для транспорта с отказами используйте raw-запись с явным контролем результата.

Параметры
ИмяТипПо умолчанию
valuebyte—
value

Значение для формата unsigned 8-bit, 1 байт. Согласуйте тот же формат с читателем; числовой тип сам не задаёт схему сообщения.

PutUtf8Stringvoid
# PutUtf8String
C#
public void PutUtf8String(string value);

Пишет UTF-8 байты с 32-битным префиксом их длины. Для emoji/кириллицы длина не равна C# string.Length. Читать можно GetUtf8String() либо отдельно префикс и GetUtf8String(число_байтов).

Параметры
ИмяТипПо умолчанию
valuestring—
value

Текст для кодирования в UTF-8. Метод сам записывает 32-битную длину в байтах перед содержимым.

PutVarvoid
# PutVar
C#
public void PutVar(Variant value, bool fullObjects = false);

Пишет 32-битную длину и двоичное представление Variant. Это отдельный формат движка, не JSON и не полная сериализация состояния игры. BigEndian влияет на внешний префикс, а не перекодирует внутренний формат Variant.

Параметры
ИмяТипПо умолчанию
valueVariant—
fullObjectsboolfalse
value

Variant для двоичного кодирования. Получатель должен использовать GetVar с согласованным порядком байтов внешнего префикса.

fullObjects

false по умолчанию не сохраняет полное содержимое Object. true включает объектное кодирование; это не перенос владельцев, живого дерева или серверных ресурсов между процессами.

SetBigEndianvoid
# SetBigEndian
C#
public void SetBigEndian(bool enable);

Устанавливает BigEndian для следующих операций. У чтения и записи формата должны совпадать порядок байтов и типы полей.

Параметры
ИмяТипПо умолчанию
enablebool—
enable

true — big-endian, false — little-endian для следующих числовых операций; не автоматическое распознавание входа.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.