mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-02 14:03:06 +00:00
Changes:
modified: .gitmodules
modified: tests/waku_discv5/utils.nim
modified: tests/waku_enr/utils.nim
modified: tests/waku_rln_relay/test_rln_group_manager_onchain.nim
modified: tests/waku_rln_relay/utils.nim
modified: tests/waku_rln_relay/utils_onchain.nim
modified: vendor/nim-chronicles
modified: vendor/nim-eth
modified: vendor/nim-http-utils
modified: vendor/nim-json-rpc
modified: vendor/nim-json-serialization
modified: vendor/nim-libp2p - 1.8.0!
modified: vendor/nim-metrics
new file: vendor/nim-minilru
modified: vendor/nim-nat-traversal
modified: vendor/nim-presto
modified: vendor/nim-secp256k1
modified: vendor/nim-serialization
modified: vendor/nim-stew
modified: vendor/nim-taskpools
modified: vendor/nim-testutils
modified: vendor/nim-toml-serialization
modified: vendor/nim-unicodedb
modified: vendor/nim-unittest2
modified: vendor/nim-web3 - from distinct branch that solves Ethereum ABI issue.
modified: vendor/nim-websock
modified: vendor/nim-zlib
modified: vendor/nimcrypto
modified: waku.nimble
modified: waku/common/enr/builder.nim
modified: waku/common/enr/typed_record.nim
modified: waku/common/utils/nat.nim
modified: waku/discovery/waku_discv5.nim
modified: waku/waku_rln_relay/conversion_utils.nim
modified: waku/waku_rln_relay/group_manager/on_chain/group_manager.nim
modified: waku/waku_rln_relay/rln/wrappers.nim
modified: waku/waku_rln_relay/rln_relay.nim
* Eliminate C compilation issue with chat2bridge due to an overcomplicating import from json_rpc instead of using std/json
* Adapt ENR Record handling to new interface of nim-eth
* Fix chrash in group_manager on_chain
* Fix signature of register and MemberRegister to UInt256, check transaction success in register
* Upgrade json-rpc and serialization
* Update to match latest enr and nat interface
* Using of extracted result of contract macro - with necessary adaption
* Bump nim-chornicles, nim-libp2p, nimcrypto
* Bump nim-web3, nim-eth and deps - on_chain/group_manager.nim adaption
* Added status-im/nim-minilru submodule required by latest nim-eth
Fixing tests.
* group_manager: adapt smart contract param types
* update web3 vendor
* bump vendors for v0.35.0
* protobuf.nim: fix compilation error after nim-libp2p bump
* changes to make it compile after rebase from master
---------
Co-authored-by: NagyZoltanPeter <113987313+NagyZoltanPeter@users.noreply.github.com>
65 lines
1.7 KiB
Nim
65 lines
1.7 KiB
Nim
# Extensions for libp2p's protobuf library implementation
|
|
|
|
{.push raises: [].}
|
|
|
|
import std/options, libp2p/protobuf/minprotobuf, libp2p/varint
|
|
|
|
export minprotobuf, varint
|
|
|
|
## Custom errors
|
|
|
|
type
|
|
ProtobufErrorKind* {.pure.} = enum
|
|
DecodeFailure
|
|
MissingRequiredField
|
|
InvalidLengthField
|
|
|
|
ProtobufError* = object
|
|
case kind*: ProtobufErrorKind
|
|
of DecodeFailure:
|
|
error*: minprotobuf.ProtoError
|
|
of MissingRequiredField, InvalidLengthField:
|
|
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)
|
|
|
|
proc invalidLengthField*(T: type ProtobufError, field: string): T =
|
|
ProtobufError(kind: ProtobufErrorKind.InvalidLengthField, field: field)
|
|
|
|
## Extension methods
|
|
|
|
proc write3*(proto: var ProtoBuffer, field: int, value: auto) =
|
|
when value is Option:
|
|
if value.isSome():
|
|
proto.write(field, value.get())
|
|
else:
|
|
proto.write(field, value)
|
|
|
|
proc finish3*(proto: var ProtoBuffer) =
|
|
if proto.buffer.len > 0:
|
|
proto.finish()
|
|
else:
|
|
proto.offset = 0
|
|
|
|
proc `==`*(a: zint64, b: zint64): bool =
|
|
int64(a) == int64(b)
|
|
|
|
proc `$`*(err: ProtobufError): string =
|
|
case err.kind
|
|
of DecodeFailure:
|
|
return $err.error ## assume that ProtoError is pure
|
|
of MissingRequiredField:
|
|
return "MissingRequiredField " & err.field
|
|
of InvalidLengthField:
|
|
return "InvalidLengthField " & err.field
|