mirror of
https://github.com/logos-messaging/nim-sds.git
synced 2026-01-04 07:03:09 +00:00
33 lines
938 B
Nim
33 lines
938 B
Nim
# adapted from https://github.com/waku-org/nwaku/blob/master/waku/common/protobuf.nim
|
|
|
|
{.push raises: [].}
|
|
|
|
import libp2p/protobuf/minprotobuf
|
|
import libp2p/varint
|
|
|
|
export minprotobuf, varint
|
|
|
|
type
|
|
ProtobufErrorKind* {.pure.} = enum
|
|
DecodeFailure
|
|
MissingRequiredField
|
|
|
|
ProtobufError* = object
|
|
case kind*: ProtobufErrorKind
|
|
of DecodeFailure:
|
|
error*: minprotobuf.ProtoError
|
|
of MissingRequiredField:
|
|
field*: string
|
|
|
|
ProtobufResult*[T] = Result[T, ProtobufError]
|
|
|
|
converter toProtobufError*(err: minprotobuf.ProtoError): ProtobufError =
|
|
case err
|
|
of minprotobuf.ProtoError.RequiredFieldMissing:
|
|
ProtobufError(kind: ProtobufErrorKind.MissingRequiredField, field: "unknown")
|
|
else:
|
|
ProtobufError(kind: ProtobufErrorKind.DecodeFailure, error: err)
|
|
|
|
proc missingRequiredField*(T: type ProtobufError, field: string): T =
|
|
ProtobufError(kind: ProtobufErrorKind.MissingRequiredField, field: field)
|