Skip to content

Commit b6ef80a

Browse files
Rename and fix lint errors
1 parent 6868a6e commit b6ef80a

18 files changed

+306
-302
lines changed

README.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
# ilp-protocol-btp3
2-
ilp-x module provides an asynchronous request-response framework for communicating BTPv3 packets between clients and server over an
3-
underlying gRPC bidirectional stream.
1+
# ilp-transport-grpc
2+
ilp-transport-grpc module provides an asynchronous request-response framework for communicating ILP packets between clients and a server over an underlying gRPC bidirectional stream.
43

54

65
#Server
76
```javascript
8-
const server = new BtpServer({}, {
9-
log: createLogger('btp-server'),
7+
const server = new GrpcTransportServer({}, {
8+
log: createLogger('grpc-server'),
109
authenticate: () => Promise.resolve({ id: 'test' })
1110
})
1211

@@ -32,7 +31,7 @@ client.on('request', (data) => {
3231

3332
const response = await client.request({
3433
protocol: 'ilp',
35-
contentType: BtpMessageContentType.ApplicationOctetStream,
34+
contentType: FrameContentType.ApplicationOctetStream,
3635
payload: Buffer.from('Hello?')
3736
})
3837
```

dist/example/client.js

Lines changed: 7 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/example/client.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/example/server.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/example/server.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/example/client.ts

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
import {createConnection, BtpMessageContentType, BtpPacketType, BtpErrorCode, BtpErrorMessagePacket} from '../lib'
1+
import { createConnection, FrameType, TransportErrorCode, ErrorFrame, FrameContentType } from '../lib'
22
import UUID from '../lib/uuid'
33

44
(async () => {
55
const client = await createConnection('127.0.0.1:5001', {
6-
headers: {
7-
authorization: 'Bearer TOKEN'
8-
},
96
accountId: 'matt',
107
accountInfo: {
118
relation: 'child',
@@ -14,21 +11,25 @@ import UUID from '../lib/uuid'
1411
}
1512
})
1613

17-
client.on('error', (data: any) => {
14+
client.on('error', (data: any) => {
1815
console.log(data)
1916
})
2017

21-
client.on('request', (data: any) => {
18+
client.on('request', (data: any) => {
2219
console.log(data)
2320
})
2421

2522
const errorPacket = {
2623
id: new UUID().toString(),
2724
correlationId: new UUID().toString(),
28-
type: BtpPacketType.ERROR,
29-
code: BtpErrorCode.UnknownCorrelationId,
25+
type: FrameType.ERROR,
26+
code: TransportErrorCode.UnknownCorrelationId,
3027
message: `No request found with id: ${new UUID().toString()}`
31-
} as BtpErrorMessagePacket
28+
} as ErrorFrame
3229

33-
// const resp = await client._send(errorPacket, () => null)
30+
const resp = await client.message({
31+
protocol: 'test',
32+
contentType: FrameContentType.TextPlain,
33+
payload: Buffer.from('TEST')
34+
})
3435
})()

src/example/server.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
import { BtpError, BtpStream, BtpServer, BtpMessage, BtpMessageContentType } from '../lib'
1+
import { TransportError, GrpcTransport, GrpcTransportServer, MessagePayload, FrameContentType } from '../lib'
22
import { default as createLogger } from 'ilp-logger'
33

4-
const server = new BtpServer({}, {
5-
log: createLogger('btp-server'),
4+
const server = new GrpcTransportServer({}, {
5+
log: createLogger('grpc-server'),
66
authenticate: () => Promise.resolve({ id: 'test' })
77
})
88
server.on('listening', () => {
99
console.log('Listening...')
1010
})
1111

12-
server.on('connection', (stream: BtpStream) => {
12+
server.on('connection', (stream: GrpcTransport) => {
1313

1414
const { accountId, accountInfo } = stream
1515

1616
console.log(`CONNECTION: state=${stream.state}`)
1717

18-
stream.on('message', (message: BtpMessage) => {
18+
stream.on('message', (message: MessagePayload) => {
1919
console.log(`MESSAGE (protocol=${message.protocol}): ${message.payload.toString()}`)
2020
})
2121

22-
stream.on('request', (message: BtpMessage, replyCallback: (reply: BtpMessage | BtpError | Promise<BtpMessage | BtpError>) => void) => {
22+
stream.on('request', (message: MessagePayload, replyCallback: (reply: MessagePayload | TransportError | Promise<MessagePayload | TransportError>) => void) => {
2323
console.log(`REQUEST (protocol=${message.protocol}): ${message.payload.toString()}`)
2424
replyCallback(new Promise((respond) => {
2525
setTimeout(() => {
2626
respond({
2727
protocol: 'ilp',
28-
contentType: BtpMessageContentType.ApplicationOctetStream,
28+
contentType: FrameContentType.ApplicationOctetStream,
2929
payload: Buffer.from('Goodbye!')
3030
})
3131
}, 100)

src/lib/account.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export interface AccountInfo {
2+
relation: 'parent' | 'peer' | 'child',
3+
assetCode: string,
4+
assetScale: number,
5+
}
6+
7+
/**
8+
* An asset/currency including the code used to identify it (e.g. ISO4017 currency code) and scale
9+
*/
10+
export interface AssetInfo {
11+
scale: number
12+
code: string
13+
}

src/lib/error.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
1-
import { BtpErrorMessage } from './packet'
1+
import { ErrorPayload } from './packet'
22

3-
export enum BtpErrorCode {
3+
export enum TransportErrorCode {
44
UnreachableError = 'T00', // Message can't be processed at this time
55
NotAcceptedError = 'F00', // Generic error at remote
66
Unauthorized = 'F01', // Connection has not been authorized, use a sub-protocol to auth
77
DuplicateIdError = 'F02', // Same ID used for different messages
88
UnknownProtocolError = 'F03', // Unrecognized sub-protocol
99
UnknownCorrelationId = 'F04' // Got a response/error/ack with a correlation id that doesn't match any prev sent messages
1010
}
11-
export namespace BtpErrorCode {
12-
export function getName (code: BtpErrorCode): string {
11+
export namespace TransportErrorCode {
12+
export function getName (code: TransportErrorCode): string {
1313
switch (code) {
14-
case BtpErrorCode.UnreachableError:
14+
case TransportErrorCode.UnreachableError:
1515
return 'UnreachableError'
16-
case BtpErrorCode.NotAcceptedError:
16+
case TransportErrorCode.NotAcceptedError:
1717
return 'NotAcceptedError'
18-
case BtpErrorCode.Unauthorized:
18+
case TransportErrorCode.Unauthorized:
1919
return 'Unauthorized'
20-
case BtpErrorCode.DuplicateIdError:
20+
case TransportErrorCode.DuplicateIdError:
2121
return 'DuplicateIdError'
22-
case BtpErrorCode.UnknownProtocolError:
22+
case TransportErrorCode.UnknownProtocolError:
2323
return 'UnknownProtocolError'
24-
case BtpErrorCode.UnknownCorrelationId:
24+
case TransportErrorCode.UnknownCorrelationId:
2525
return 'UnknownCorrelationId'
2626
}
27-
throw new Error('Unknown BtpErrorCode')
27+
throw new Error('Unknown Error Code')
2828
}
2929
}
3030

31-
export class BtpError extends Error {
32-
constructor (code: BtpErrorCode, message?: string) {
31+
export class TransportError extends Error {
32+
constructor (code: TransportErrorCode, message?: string) {
3333
super(`${code}: ${message}`)
34-
Error.captureStackTrace(this, BtpError)
35-
this.name = BtpErrorCode.getName(code)
34+
Error.captureStackTrace(this, TransportError)
35+
this.name = TransportErrorCode.getName(code)
3636
}
3737
}
3838

39-
export function btpErrorFromMessage (message: BtpErrorMessage): BtpError {
40-
return new BtpError(message.code, message.message)
39+
export function transportErrorFromMessage (message: ErrorPayload): TransportError {
40+
return new TransportError(message.code, message.message)
4141
}
42-
export function btpErrorToString (error: BtpError) {
42+
export function transportErrorToString (error: TransportError) {
4343
return JSON.stringify({
44-
code: `${BtpErrorCode[error.name]} ${error.name}`,
44+
code: `${TransportErrorCode[error.name]} ${error.name}`,
4545
message: error.message,
4646
stack: error.stack || '-'
4747
})

src/lib/grpc.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import {
2+
ClientDuplexStream,
3+
loadPackageDefinition,
4+
ServerDuplexStream,
5+
ChannelCredentials,
6+
ServiceError,
7+
Metadata,
8+
ServiceDefinition
9+
} from 'grpc'
10+
11+
import { Frame } from './packet'
12+
13+
const PROTO_PATH = __dirname + '/../../src/lib/transport.proto'
14+
const protoLoader = require('@grpc/proto-loader')
15+
const packageDefinition = protoLoader.loadSync(
16+
PROTO_PATH,
17+
{keepCase: true,
18+
longs: String,
19+
enums: String,
20+
defaults: true,
21+
oneofs: true
22+
})
23+
const protoDescriptor = loadPackageDefinition(packageDefinition)
24+
export const TransportService = protoDescriptor.transport.TransportService as TransportService
25+
26+
interface TransportService {
27+
new (address: string, credentials: ChannelCredentials): TransportServiceInstance
28+
service: ServiceDefinition<TransportServiceInstance>
29+
}
30+
31+
export interface TransportServiceInstance {
32+
Authenticate: (message: AuthMessage, callback: (error: ServiceError | null, responseMessage: AuthResponse | null) => void) => void
33+
MessageStream: (meta: Metadata) => DuplexStream
34+
}
35+
36+
export interface AuthMessage {
37+
id: string
38+
}
39+
40+
export interface AuthResponse {
41+
id: string
42+
}
43+
44+
export type DuplexStream = ClientDuplexStream< Frame, Frame> & ServerDuplexStream< Frame, Frame>

0 commit comments

Comments
 (0)