@mega-yfue/eufy-sdk / RawDpWriter
Class: RawDpWriter
Builds one protobuf message body, field by field.
A field's number and shape are given at the call site, which is the same contract the reader offers in reverse. Nothing here validates that a field number suits the message being built — this layer does not know what message that is, and the capability that does states it in its own field-number table.
Zero-valued fields are the caller's decision, not this writer's. proto3 omits them by default and a device reads an absent field as its zero, so emitting 0 explicitly and omitting it usually mean the same thing — but not always, and only the capability knows which. int therefore writes exactly what it is given, and omitting the call is what leaves the field absent.
Constructors
Constructor
new RawDpWriter(): RawDpWriter;Returns
RawDpWriter
Methods
bool()
bool(field, value): this;A boolean field, on protobuf's own terms: 1 or 0 in a varint.
Parameters
field
number
value
boolean
Returns
this
bytes()
bytes(field, value): this;A length-delimited field carrying raw bytes — a string, a blob, or a message built elsewhere.
Parameters
field
number
value
Uint8Array<ArrayBufferLike> | readonly number[]
Returns
this
finish()
finish(): string;The finished DP value: varint(bodyLength) ++ body, base64-encoded.
This is the envelope RawDpCodec.decode unwraps, so a value produced here and read back through the codec is a genuine round-trip rather than two implementations of the same guess.
Returns
string
int()
int(field, value): this;A varint-valued field (int32, uint32, bool, an enum member).
Parameters
field
number
value
number
Returns
this
sint()
sint(field, value): this;A signed varint field (sint32, sint64), ZigZag-encoded — see zigzag.
Parameters
field
number
value
number
Returns
this
sub()
sub(field, build): this;A nested sub-message, built by build into a writer of its own.
The sub-message is emitted even when build writes nothing into it. That is not an oversight: an EMPTY sub-message is how these protocols say "this subsystem exists and is in its zero state", as opposed to saying nothing about it, and the readers on the other side of this file depend on the distinction. Omitting the call is what says nothing about it.
Parameters
field
number
build
(w) => void
Returns
this
toBytes()
toBytes(): readonly number[];The message body on its own, unframed — for nesting into another writer.
Returns
readonly number[]