Give IncomingRequests a port instead of the Session it drives
Test / lint (pull_request) Successful in 23s
Test / test (18) (pull_request) Successful in 31s
Test / test (20) (pull_request) Successful in 37s
Test / test (22) (pull_request) Successful in 32s
Test / test (24) (pull_request) Successful in 34s
Test / test (26) (pull_request) Successful in 37s
Mirror / push (push) Successful in 5s
Test / lint (pull_request) Successful in 23s
Test / test (18) (pull_request) Successful in 31s
Test / test (20) (pull_request) Successful in 37s
Test / test (22) (pull_request) Successful in 32s
Test / test (24) (pull_request) Successful in 34s
Test / test (26) (pull_request) Successful in 37s
Mirror / push (push) Successful in 5s
This commit is contained in:
+24
-4
@@ -1,9 +1,10 @@
|
||||
import type { ErrorName } from './defs/errors.ts';
|
||||
import type { IncomingDeps } from './incoming-requests.ts';
|
||||
import type { MessageDlr } from './dlr-merger.ts';
|
||||
import type { ParamValue } from './defs/types.ts';
|
||||
import type { PduObject, PduObjectInput, TlvInputs } from './pdu.ts';
|
||||
import type { PduRefusedError } from './pdu-refusal.ts';
|
||||
import type { BindType, CloseOptions, LinkEnd, ReconnectOptions, SendOptions, SessionEvents, SessionOptions } from './session-options.ts';
|
||||
import type { BindType, CloseOptions, LinkEnd, OnRequest, ReconnectOptions, SendOptions, SessionEvents, SessionOptions } from './session-options.ts';
|
||||
import type { Result, VoidResult } from './result.ts';
|
||||
import type { SendSmsOptions, SendSmsResult } from './send-sms.ts';
|
||||
import type { SmppLog } from './log.ts';
|
||||
@@ -23,6 +24,7 @@ import { isResp, objToPdu, pduReturn } from './pdu.ts';
|
||||
import { refusalAnswer } from './pdu-refusal.ts';
|
||||
import { guardedLog } from './log.ts';
|
||||
import { submitSms, unsent } from './send-sms.ts';
|
||||
import { createSms } from './sms.ts';
|
||||
import { ConcatReference } from './udh.ts';
|
||||
|
||||
export type {
|
||||
@@ -118,14 +120,12 @@ export class Session extends EventEmitter<SessionEvents> {
|
||||
timeout: defaults.dlrMergeTimeout,
|
||||
});
|
||||
this.incoming = new IncomingRequests({
|
||||
deps: this.incomingDeps(options.onRequest),
|
||||
dlrMerger: this.dlrMerger,
|
||||
log: this.log,
|
||||
maxOctets: options.maxOctets,
|
||||
maxReassembly: options.maxReassembly,
|
||||
onRequest: options.onRequest,
|
||||
reassemblyTimeout: options.reassemblyTimeout,
|
||||
sendPastDrain: input => this.outgoing.pastDrain(input, {}),
|
||||
session: this,
|
||||
smsIdFormat: options.smsIdFormat,
|
||||
systemId: options.systemId,
|
||||
});
|
||||
@@ -245,6 +245,26 @@ export class Session extends EventEmitter<SessionEvents> {
|
||||
return drained;
|
||||
}
|
||||
|
||||
private incomingDeps(onRequest: OnRequest | undefined): IncomingDeps {
|
||||
return {
|
||||
answer: (pduObj, status, params) => this.sendReturn(pduObj, status, params),
|
||||
bindAllows: cmdName => this.bindAllows(cmdName),
|
||||
boundAs: () => this.boundAs,
|
||||
createSms: (input, handlers) => createSms({ ...input, session: this }, handlers),
|
||||
linkEnd: () => this.linkEnd,
|
||||
offerSms: sms => this.emit('sms', sms),
|
||||
onRequest: onRequest && (pduObj => onRequest(this, pduObj)),
|
||||
// A peer that has said it is finished will not answer what we still have outstanding.
|
||||
peerUnbound: () => this.close({ signal: AbortSignal.abort() }),
|
||||
reportDlr: (dlr, pduObj) => { this.emit('dlr', dlr, pduObj); },
|
||||
reportError: err => { this.emit('sessionError', err); },
|
||||
reportMessageDlr: merged => { this.emit('messageDlr', merged); },
|
||||
send: input => this.send(input),
|
||||
sendPastDrain: input => this.outgoing.pastDrain(input, {}),
|
||||
smsListeners: () => this.listenerCount('sms'),
|
||||
};
|
||||
}
|
||||
|
||||
private transportFor(sock: Socket): PduTransport {
|
||||
return new PduTransport({
|
||||
log: this.log,
|
||||
|
||||
Reference in New Issue
Block a user