Skip to content

Commit 847d0ef

Browse files
committed
client: protocol type improvements
1 parent 1b52c89 commit 847d0ef

File tree

5 files changed

+19
-19
lines changed

5 files changed

+19
-19
lines changed

packages/client/lib/net/protocol/boundprotocol.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { EventEmitter } from 'events'
2-
import { Protocol } from '../protocol/protocol'
2+
import { Message, Protocol } from '../protocol/protocol'
33
import { Peer } from '../peer/peer'
44
import { Sender } from './sender'
55
import { Config } from '../../config'
@@ -31,7 +31,7 @@ export class BoundProtocol extends EventEmitter {
3131
private versions: number[]
3232
private timeout: number
3333
private _status: any
34-
private resolvers: Map<string, any>
34+
private resolvers: Map<string | number, any>
3535

3636
/**
3737
* Create bound protocol
@@ -80,9 +80,9 @@ export class BoundProtocol extends EventEmitter {
8080
* @param {Object} message message object
8181
* @emits message
8282
*/
83-
handle(incoming: any) {
83+
handle(incoming: Message) {
8484
const messages = this.protocol.messages
85-
const message = messages.find((m: any) => m.code === incoming.code)
85+
const message = messages.find((m) => m.code === incoming.code)
8686
if (!message) {
8787
return
8888
}
@@ -117,16 +117,16 @@ export class BoundProtocol extends EventEmitter {
117117
* @param name message name
118118
* @param args message arguments
119119
*/
120-
send(name: string, args?: any): any {
120+
send(name: string, args?: any) {
121121
const messages = this.protocol.messages
122-
const message = messages.find((m: any) => m.name === name)
122+
const message = messages.find((m) => m.name === name)
123123
if (message) {
124124
const encoded = this.protocol.encode(message, args)
125125
this.sender.sendMessage(message.code, encoded)
126-
return message
127126
} else {
128127
throw new Error(`Unknown message: ${name}`)
129128
}
129+
return message
130130
}
131131

132132
/**
@@ -143,14 +143,14 @@ export class BoundProtocol extends EventEmitter {
143143
resolve: null,
144144
reject: null,
145145
}
146-
if (this.resolvers.get(message.response)) {
146+
if (this.resolvers.get(message.response!)) {
147147
throw new Error(`Only one active request allowed per message type (${name})`)
148148
}
149-
this.resolvers.set(message.response, resolver)
149+
this.resolvers.set(message.response!, resolver)
150150
return new Promise((resolve, reject) => {
151151
resolver.timeout = setTimeout(() => {
152152
resolver.timeout = null
153-
this.resolvers.delete(message.response)
153+
this.resolvers.delete(message.response!)
154154
reject(new Error(`Request timed out after ${this.timeout}ms`))
155155
}, this.timeout)
156156
resolver.resolve = resolve
@@ -163,9 +163,9 @@ export class BoundProtocol extends EventEmitter {
163163
* corresponding response message.
164164
*/
165165
addMethods() {
166-
const messages = this.protocol.messages.filter((m: any) => m.response)
166+
const messages = this.protocol.messages.filter((m) => m.response)
167167
for (const message of messages) {
168-
const name = message.name as string
168+
const name = message.name
169169
const camel = name[0].toLowerCase() + name.slice(1)
170170
;(this as any)[camel] = async (args: any[]) =>
171171
this.request(name, args).catch((error: Error) => {

packages/client/lib/net/protocol/lesprotocol.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ export class LesProtocol extends Protocol {
130130
* Messages defined by this protocol
131131
* @type {Protocol~Message[]}
132132
*/
133-
get messages(): any {
133+
get messages(): Message[] {
134134
return messages
135135
}
136136

@@ -161,8 +161,8 @@ export class LesProtocol extends Protocol {
161161
txRelay: 1,
162162
'flowControl/BL': new BN(this.flow.bl).toArrayLike(Buffer),
163163
'flowControl/MRR': new BN(this.flow.mrr).toArrayLike(Buffer),
164-
'flowControl/MRC': Object.entries(this.flow.mrc).map(([name, { base, req }]: any) => {
165-
const { code }: any = messages.find((m) => m.name === name)
164+
'flowControl/MRC': Object.entries(this.flow.mrc).map(([name, { base, req }]) => {
165+
const { code } = messages.find((m) => m.name === name)!
166166
return [code, base, req]
167167
}),
168168
}

packages/client/lib/net/protocol/protocol.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export interface ProtocolOptions {
1414
export type Message = {
1515
name: string
1616
code: number
17+
payload?: any
1718
// TODO: check semantics of this field
1819
response?: number
1920
// TODO: check if this should be optional

packages/client/test/integration/fullethereumservice.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ tape('[Integration:FullEthereumService]', async (t) => {
3434
t.ok(headers![1].hash().equals(hash), 'handled GetBlockHeaders')
3535
const bodies = await peer.eth!.getBlockBodies([hash])
3636
t.deepEquals(bodies, [[[], []]], 'handled GetBlockBodies')
37-
await peer.eth!.send('NewBlockHashes', [[hash, new BN(2)]])
37+
peer.eth!.send('NewBlockHashes', [[hash, new BN(2)]])
3838
t.pass('handled NewBlockHashes')
3939
await destroy(server, service)
4040
t.end()

packages/client/test/net/protocol/boundprotocol.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,16 @@ tape('[BoundProtocol]', (t) => {
7676
peer,
7777
sender,
7878
})
79-
t.notOk(bound.handle({}), 'missing message.code')
8079
bound.once('error', (err: any) => {
8180
t.ok(/error0/.test(err.message), 'decode error')
8281
})
8382
td.when(protocol.decode(testMessage, '1')).thenThrow(new Error('error0'))
84-
bound.handle({ code: 0x01, payload: '1' })
83+
bound.handle({ name: 'TestMessage', code: 0x01, payload: '1' })
8584
bound.once('message', (message: any) => {
8685
t.deepEquals(message, { name: 'TestMessage', data: 2 }, 'correct message')
8786
})
8887
td.when(protocol.decode(testMessage, '2')).thenReturn(2)
89-
bound.handle({ code: 0x01, payload: '2' })
88+
bound.handle({ name: 'TestMessage', code: 0x01, payload: '2' })
9089
t.end()
9190
})
9291

0 commit comments

Comments
 (0)