Skip to content

Commit

Permalink
include radius in type 0 payload
Browse files Browse the repository at this point in the history
  • Loading branch information
ScottyPoi committed Jan 14, 2025
1 parent 15819b3 commit 222d61c
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 26 deletions.
58 changes: 32 additions & 26 deletions packages/portalnetwork/src/networks/network.ts
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@ export abstract class BaseNetwork extends EventEmitter {
case PingPongPayloadExtensions.CLIENT_INFO_RADIUS_AND_CAPABILITIES: {
payload = ClientInfoAndCapabilities.serialize({
ClientInfo: encodeClientInfo(this.portal.clientInfo),
DataRadius: this.nodeRadius,
Capabilities: this.capabilities,
})
break
Expand Down Expand Up @@ -323,10 +324,11 @@ export abstract class BaseNetwork extends EventEmitter {
)
switch (type) {
case PingPongPayloadExtensions.CLIENT_INFO_RADIUS_AND_CAPABILITIES: {
const { ClientInfo, Capabilities } = ClientInfoAndCapabilities.deserialize(payload)
const { ClientInfo, Capabilities, DataRadius } = ClientInfoAndCapabilities.deserialize(payload)
this.logger.extend('PONG')(
`Client ${shortId(enr.nodeId)} is ${decodeClientInfo(ClientInfo).clientName} node with capabilities: ${Capabilities}`,
)
this.routingTable.updateRadius(enr.nodeId, DataRadius)
break
}
case PingPongPayloadExtensions.BASIC_RADIUS_PAYLOAD: {
Expand Down Expand Up @@ -374,38 +376,42 @@ export abstract class BaseNetwork extends EventEmitter {
}
const { type, payload } = CustomPayloadExtensionsFormat.deserialize(pingMessage.customPayload)
let pongPayload: Uint8Array
switch (type) {
case PingPongPayloadExtensions.CLIENT_INFO_RADIUS_AND_CAPABILITIES: {
pongPayload = this.pingPongPayload(type)
break
}
case PingPongPayloadExtensions.BASIC_RADIUS_PAYLOAD: {
const { dataRadius } = BasicRadius.deserialize(payload)
this.routingTable.updateRadius(src.nodeId, dataRadius)
pongPayload = this.pingPongPayload(type)
break
}
case PingPongPayloadExtensions.HISTORY_RADIUS_PAYLOAD: {
if (this.networkId !== NetworkId.HistoryNetwork) {
if (this.capabilities.includes(type)) {
switch (type) {
case PingPongPayloadExtensions.CLIENT_INFO_RADIUS_AND_CAPABILITIES: {
const { DataRadius } = ClientInfoAndCapabilities.deserialize(payload)
this.routingTable.updateRadius(src.nodeId, DataRadius)
pongPayload = this.pingPongPayload(type)
break
}
case PingPongPayloadExtensions.BASIC_RADIUS_PAYLOAD: {
const { dataRadius } = BasicRadius.deserialize(payload)
this.routingTable.updateRadius(src.nodeId, dataRadius)
pongPayload = this.pingPongPayload(type)
break
}
case PingPongPayloadExtensions.HISTORY_RADIUS_PAYLOAD: {
const { dataRadius } = HistoryRadius.deserialize(payload)
this.routingTable.updateRadius(src.nodeId, dataRadius)
pongPayload = this.pingPongPayload(type)
break
}
default: {
pongPayload = ErrorPayload.serialize({
errorCode: 0,
message: hexToBytes(
fromAscii('HISTORY_RADIUS extension not supported on this network'),
fromAscii(`${this.constructor.name} does not support PING extension type: ${type}`),
),
})
} else {
const { dataRadius } = HistoryRadius.deserialize(payload)
this.routingTable.updateRadius(src.nodeId, dataRadius)
pongPayload = this.pingPongPayload(type)
}
break
}
default: {
pongPayload = ErrorPayload.serialize({
errorCode: 0,
message: hexToBytes(fromAscii(`Unsupported PING extension type: ${type}`)),
})
}
} else {
pongPayload = ErrorPayload.serialize({
errorCode: 0,
message: hexToBytes(
fromAscii(`${this.constructor.name} does not support PING extension type: ${type}`),
),
})
}
const customPayload = CustomPayloadExtensionsFormat.serialize({
type,
Expand Down
3 changes: 3 additions & 0 deletions packages/portalnetwork/src/wire/payloadExtensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,11 @@ export const MAX_CAPABILITIES_LENGTH = 400

export const Capabilities = new ListBasicType(PingPongPayloadType, MAX_CAPABILITIES_LENGTH)

export const DataRadius = new UintBigintType(32)

export const ClientInfoAndCapabilities = new ContainerType({
ClientInfo,
DataRadius,
Capabilities
})

Expand Down

0 comments on commit 222d61c

Please sign in to comment.