@libp2p/gossipsub
Version:
A typescript implementation of gossipsub
35 lines (31 loc) • 765 B
text/typescript
import type { RPC } from '../message/rpc.js'
/**
* Create a gossipsub RPC object
*/
export function createGossipRpc (messages: RPC.Message[] = [], control?: Partial<RPC.ControlMessage>): RPC {
return {
subscriptions: [],
messages,
control: control !== undefined
? {
graft: control.graft ?? [],
prune: control.prune ?? [],
ihave: control.ihave ?? [],
iwant: control.iwant ?? [],
idontwant: control.idontwant ?? []
}
: undefined
}
}
export function ensureControl (rpc: RPC): Required<RPC> {
if (rpc.control === undefined) {
rpc.control = {
graft: [],
prune: [],
ihave: [],
iwant: [],
idontwant: []
}
}
return rpc as Required<RPC>
}