Warp/docs/api/1.1/buffer.md

145 lines
2.4 KiB
Markdown
Raw Normal View History

# Buffer <Badge type="tip" text="module" />
For efficient data serialization and schema definition with optimized packing.
## Getting the Buffer Object
```lua
local Buffer = Warp.Buffer()
```
## Schema System <Badge type="tip" text="v1.1" />
Define strict data schemas for optimized serialization and type safety.
### Available Schema Types
```lua
{
-- Basic types
"boolean",
"string",
"nil",
-- Numeric types
2026-02-14 07:32:35 +00:00
"u8",
"u16",
"u32",
"i8",
"i16",
"i32",
"f16",
"f32",
"f64",
-- Roblox types
"buffer"
2026-02-14 07:32:35 +00:00
"vector2",
"vector3",
"cframe",
"color3",
"instance",
-- other types
"optional",
"array",
"map",
"struct",
}
```
## Writer and Reader Functions
### `.createWriter`
Create a new buffer writer for serializing data.
::: code-group
2026-02-13 07:58:54 +00:00
```luau [Variable]
(
capacity: number? -- Optional initial capacity (default: 64)
): Writer
```
2026-02-13 07:58:54 +00:00
```luau [Example]
local Buffer = Warp.Buffer()
local writer = Buffer.createWriter(256) -- Pre-allocate 256 bytes
```
:::
### `.build`
Build the final buffer for transmission.
::: code-group
2026-02-13 07:58:54 +00:00
```luau [Variable]
(
writer: Writer
): buffer -- Returns buffer
```
2026-02-13 07:58:54 +00:00
```luau [Example]
local Buffer = Warp.Buffer()
local writer = Buffer.createWriter()
-- Write some data
Buffer.packValue(writer, "Hello World")
Buffer.packValue(writer, 12345)
-- Build final buffer
local finalBuffer = Buffer.build(writer)
print(buffer.len(finalBuffer))
```
:::
### `.buildWithRefs`
Build the final buffer with instance references for transmission.
::: code-group
2026-02-13 07:58:54 +00:00
```luau [Variable]
(
writer: Writer
): (buffer, { Instance }?) -- Returns buffer and optional instance references
```
2026-02-13 07:58:54 +00:00
```luau [Example]
local Buffer = Warp.Buffer()
local writer = Buffer.createWriter()
-- Write some data with instances
Buffer.packValue(writer, workspace.Part)
Buffer.packValue(writer, game.Players.LocalPlayer)
-- Build final buffer
local finalBuffer, refs = Buffer.buildWithRefs(writer)
print(buffer.len(finalBuffer), refs)
```
:::
### `.reset`
Reset a writer for reuse, clearing all data.
::: code-group
2026-02-13 07:58:54 +00:00
```luau [Variable]
(
writer: Writer
)
```
2026-02-13 07:58:54 +00:00
```luau [Example]
local Buffer = Warp.Buffer()
local writer = Buffer.createWriter()
-- Use writer for first batch
Buffer.writeEvents(writer, events1)
local buffer1 = Buffer.build(writer)
-- Reset and reuse for second batch
Buffer.reset(writer)
Buffer.writeEvents(writer, events2)
local buffer2 = Buffer.build(writer)
```
:::