2 Commits
Author SHA1 Message Date
Artёm Mishin 74e28d9672 chore: Update 2025-05-26 05:04:39 +03:00
Artёm Mishin 0218c2131f chore: Update 2025-05-26 04:34:59 +03:00
3 changed files with 85 additions and 0 deletions

No files matched your search

+48
View File
@@ -30,6 +30,54 @@ type byteBuffer struct {
writerCursor Cursor writerCursor Cursor
} }
func (b *byteBuffer) WriteShortByteArray(data []byte) error {
if len(data) > 0xFFFF {
return ErrOutOfBounds.CreateEmpty()
}
if b.RemainingWriterBytes() < 2+len(data) {
return ErrOutOfBounds.CreateEmpty()
}
if err := b.WriteShortLE(int16(len(data))); err != nil {
return err
}
n, err := b.Write(data)
if err != nil {
return err
}
if n != len(data) {
return ErrOutOfBounds.CreateEmpty()
}
return nil
}
func (b *byteBuffer) WriteByteArray(data []byte) error {
if len(data) > 0xFFFFFFFF {
return ErrOutOfBounds.CreateEmpty()
}
if b.RemainingWriterBytes() < 4+len(data) {
return ErrOutOfBounds.CreateEmpty()
}
if err := b.WriteIntLE(int32(len(data))); err != nil {
return err
}
n, err := b.Write(data)
if err != nil {
return err
}
if n != len(data) {
return ErrOutOfBounds.CreateEmpty()
}
return nil
}
func (b *byteBuffer) WriteShortString(s string) error {
return b.WriteByteArray([]byte(s))
}
func (b *byteBuffer) WriteString(s string) error {
return b.WriteByteArray([]byte(s))
}
func (b *byteBuffer) ReadShortByteArray() ([]byte, error) { func (b *byteBuffer) ReadShortByteArray() ([]byte, error) {
if b.RemainingReaderBytes() < 2 { if b.RemainingReaderBytes() < 2 {
return nil, ErrOutOfBounds.CreateEmpty() return nil, ErrOutOfBounds.CreateEmpty()
+36
View File
@@ -2,8 +2,44 @@ package uio
type Sink interface { type Sink interface {
Write(src []byte) (n int, err error) Write(src []byte) (n int, err error)
WriteFully(src []byte) error
} }
type BufferedSink interface { type BufferedSink interface {
Sink Sink
WriteByte(b byte) error
WriteUByte(b uint8) error
WriteShortLE(v int16) error
WriteShortBE(v int16) error
WriteIntLE(v int32) error
WriteIntBE(v int32) error
WriteLongLE(v int64) error
WriteLongBE(v int64) error
WriteUShortLE(v uint16) error
WriteUShortBE(v uint16) error
WriteUIntLE(v uint32) error
WriteUIntBE(v uint32) error
WriteULongLE(v uint64) error
WriteULongBE(v uint64) error
WriteFloatLE(v float32) error
WriteFloatBE(v float32) error
WriteDoubleLE(v float64) error
WriteDoubleBE(v float64) error
// WriteShortByteArray writes a size-prefixed byte array.
// Structure: [ShortLE : size][size bytes data]
WriteShortByteArray(data []byte) error
// WriteByteArray writes a size-prefixed byte array.
// Structure: [IntLE : size][size bytes data]
WriteByteArray(data []byte) error
WriteShortString(s string) error
WriteString(s string) error
} }
+1
View File
@@ -2,6 +2,7 @@ package uio
type Source interface { type Source interface {
Read(dst []byte) (n int, err error) Read(dst []byte) (n int, err error)
ReadFully(dst []byte) error
} }
type BufferedSource interface { type BufferedSource interface {