Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
74e28d9672 | ||
|
|
0218c2131f |
No files matched your search
@@ -30,6 +30,54 @@ type byteBuffer struct {
|
||||
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) {
|
||||
if b.RemainingReaderBytes() < 2 {
|
||||
return nil, ErrOutOfBounds.CreateEmpty()
|
||||
|
||||
@@ -2,8 +2,44 @@ package uio
|
||||
|
||||
type Sink interface {
|
||||
Write(src []byte) (n int, err error)
|
||||
WriteFully(src []byte) error
|
||||
}
|
||||
|
||||
type BufferedSink interface {
|
||||
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
|
||||
}
|
||||
Reference in new issue
Block a user