jspurefix
Version:
pure node js fix engine
30 lines (26 loc) • 1.16 kB
text/typescript
import { FixmlEncoder } from '../../buffer/fixml'
import { IJsFixConfig } from '../../config'
import { MsgTransmitter } from '../msg-transmitter'
import { ILooseObject } from '../../collections/collection'
import { inject, injectable } from 'tsyringe'
import { DITokens } from '../../runtime/di-tokens'
import { ElasticBuffer } from '../../buffer'
()
export class FixmlMsgTransmitter extends MsgTransmitter {
public time: Date
constructor ((DITokens.IJsFixConfig) public readonly config: IJsFixConfig) {
super(config.sessionContainer.resolve<ElasticBuffer>(DITokens.TransmitBuffer), config.definitions, config.description)
this.encoder = config.sessionContainer.resolve<FixmlEncoder>(DITokens.MsgEncoder)
}
public encodeMessage (msgType: string, obj: ILooseObject): any {
const adapter = this?.config?.description?.application?.http?.adapter
if (adapter) {
adapter.beginMessage(msgType)
}
const fe = this.encoder as FixmlEncoder
const factory = this.config.factory
obj.StandardHeader = factory?.header()
fe.encode(obj, msgType)
return obj.StandardHeader
}
}