Skip to content

Commit

Permalink
refactor: extract inbound transporter from agent constructor (#245)
Browse files Browse the repository at this point in the history
BREAKING CHANGE

Signed-off-by: Jakub Koci jakub.koci@gmail.com
  • Loading branch information
jakubkoci committed Apr 15, 2021
1 parent ec04ddc commit 0724593
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 42 deletions.
9 changes: 4 additions & 5 deletions samples/__tests__/e2e.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,13 @@ describe('with mediator', () => {
})

test('Alice and Bob make a connection with mediator', async () => {
const aliceAgentReceiver = new PollingInboundTransporter()
const bobAgentReceiver = new PollingInboundTransporter()

aliceAgent = new Agent(aliceConfig, aliceAgentReceiver)
aliceAgent = new Agent(aliceConfig)
aliceAgent.setInboundTransporter(new PollingInboundTransporter())
aliceAgent.setOutboundTransporter(new HttpOutboundTransporter(aliceAgent))
await aliceAgent.init()

bobAgent = new Agent(bobConfig, bobAgentReceiver)
bobAgent = new Agent(bobConfig)
bobAgent.setInboundTransporter(new PollingInboundTransporter())
bobAgent.setOutboundTransporter(new HttpOutboundTransporter(bobAgent))
await bobAgent.init()

Expand Down
5 changes: 3 additions & 2 deletions samples/mediator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class HttpInboundTransporter implements InboundTransporter {
this.app = app
}

public start(agent: Agent) {
public async start(agent: Agent) {
this.app.post('/msg', async (req, res) => {
const message = req.body
const packedMessage = JSON.parse(message)
Expand Down Expand Up @@ -67,7 +67,8 @@ app.set('json spaces', 2)
const messageRepository = new InMemoryMessageRepository()
const messageSender = new StorageOutboundTransporter(messageRepository)
const messageReceiver = new HttpInboundTransporter(app)
const agent = new Agent(config, messageReceiver, messageRepository)
const agent = new Agent(config, messageRepository)
agent.setInboundTransporter(messageReceiver)
agent.setOutboundTransporter(messageSender)

app.get('/', async (req, res) => {
Expand Down
9 changes: 4 additions & 5 deletions src/__tests__/agents.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,13 @@ describe('agents', () => {
const aliceMessages = new Subject()
const bobMessages = new Subject()

const aliceAgentInbound = new SubjectInboundTransporter(aliceMessages, bobMessages)
const bobAgentInbound = new SubjectInboundTransporter(bobMessages, aliceMessages)

aliceAgent = new Agent(aliceConfig, aliceAgentInbound)
aliceAgent = new Agent(aliceConfig)
aliceAgent.setInboundTransporter(new SubjectInboundTransporter(aliceMessages, bobMessages))
aliceAgent.setOutboundTransporter(new SubjectOutboundTransporter(bobMessages))
await aliceAgent.init()

bobAgent = new Agent(bobConfig, bobAgentInbound)
bobAgent = new Agent(bobConfig)
bobAgent.setInboundTransporter(new SubjectInboundTransporter(bobMessages, aliceMessages))
bobAgent.setOutboundTransporter(new SubjectOutboundTransporter(aliceMessages))
await bobAgent.init()

Expand Down
12 changes: 6 additions & 6 deletions src/__tests__/credentials.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,14 @@ describe('credentials', () => {
const faberMessages = new Subject()
const aliceMessages = new Subject()

const faberAgentInbound = new SubjectInboundTransporter(faberMessages, aliceMessages)
const aliceAgentInbound = new SubjectInboundTransporter(aliceMessages, faberMessages)

faberAgent = new Agent(faberConfig, faberAgentInbound)
aliceAgent = new Agent(aliceConfig, aliceAgentInbound)
faberAgent = new Agent(faberConfig)
faberAgent.setInboundTransporter(new SubjectInboundTransporter(faberMessages, aliceMessages))
faberAgent.setOutboundTransporter(new SubjectOutboundTransporter(aliceMessages))
aliceAgent.setOutboundTransporter(new SubjectOutboundTransporter(faberMessages))
await faberAgent.init()

aliceAgent = new Agent(aliceConfig)
aliceAgent.setInboundTransporter(new SubjectInboundTransporter(aliceMessages, faberMessages))
aliceAgent.setOutboundTransporter(new SubjectOutboundTransporter(faberMessages))
await aliceAgent.init()

const schemaTemplate = {
Expand Down
2 changes: 1 addition & 1 deletion src/__tests__/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ export class SubjectInboundTransporter implements InboundTransporter {
this.theirSubject = theirSubject
}

public start(agent: Agent) {
public async start(agent: Agent) {
this.subscribe(agent)
}

Expand Down
8 changes: 1 addition & 7 deletions src/__tests__/ledger.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ describe('ledger', () => {
let schemaId: SchemaId

beforeAll(async () => {
faberAgent = new Agent(faberConfig, new DummyInboundTransporter())
faberAgent = new Agent(faberConfig)
await faberAgent.init()
})

Expand Down Expand Up @@ -134,9 +134,3 @@ describe('ledger', () => {
)
})
})

class DummyInboundTransporter implements InboundTransporter {
public start() {
testLogger.test('Starting agent...')
}
}
12 changes: 6 additions & 6 deletions src/__tests__/proofs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,14 +79,14 @@ describe('Present Proof', () => {
const faberMessages = new Subject()
const aliceMessages = new Subject()

const faberAgentInbound = new SubjectInboundTransporter(faberMessages, aliceMessages)
const aliceAgentInbound = new SubjectInboundTransporter(aliceMessages, faberMessages)

faberAgent = new Agent(faberConfig, faberAgentInbound)
aliceAgent = new Agent(aliceConfig, aliceAgentInbound)
faberAgent = new Agent(faberConfig)
faberAgent.setInboundTransporter(new SubjectInboundTransporter(faberMessages, aliceMessages))
faberAgent.setOutboundTransporter(new SubjectOutboundTransporter(aliceMessages))
aliceAgent.setOutboundTransporter(new SubjectOutboundTransporter(faberMessages))
await faberAgent.init()

aliceAgent = new Agent(aliceConfig)
aliceAgent.setInboundTransporter(new SubjectInboundTransporter(aliceMessages, faberMessages))
aliceAgent.setOutboundTransporter(new SubjectOutboundTransporter(faberMessages))
await aliceAgent.init()

const schemaTemplate = {
Expand Down
19 changes: 10 additions & 9 deletions src/agent/Agent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ export class Agent {
protected messageReceiver: MessageReceiver
protected dispatcher: Dispatcher
protected messageSender: MessageSender
public inboundTransporter?: InboundTransporter

protected connectionService: ConnectionService
protected proofService: ProofService
protected basicMessageService: BasicMessageService
Expand All @@ -56,20 +58,14 @@ export class Agent {
protected credentialRepository: Repository<CredentialRecord>
protected proofRepository: Repository<ProofRecord>

public inboundTransporter: InboundTransporter

public connections!: ConnectionsModule
public proofs!: ProofsModule
public routing!: RoutingModule
public basicMessages!: BasicMessagesModule
public ledger!: LedgerModule
public credentials!: CredentialsModule

public constructor(
initialConfig: InitConfig,
inboundTransporter: InboundTransporter,
messageRepository?: MessageRepository
) {
public constructor(initialConfig: InitConfig, messageRepository?: MessageRepository) {
this.agentConfig = new AgentConfig(initialConfig)
this.logger = this.agentConfig.logger

Expand All @@ -91,7 +87,6 @@ export class Agent {

this.messageSender = new MessageSender(envelopeService)
this.dispatcher = new Dispatcher(this.messageSender)
this.inboundTransporter = inboundTransporter

const storageService = new IndyStorageService(this.wallet)
this.basicMessageRepository = new Repository<BasicMessageRecord>(BasicMessageRecord, storageService)
Expand Down Expand Up @@ -126,6 +121,10 @@ export class Agent {
this.registerModules()
}

public setInboundTransporter(inboundTransporter: InboundTransporter) {
this.inboundTransporter = inboundTransporter
}

public setOutboundTransporter(outboundTransporter: OutboundTransporter) {
this.messageSender.setOutboundTransporter(outboundTransporter)
}
Expand All @@ -147,7 +146,9 @@ export class Agent {
})
}

return this.inboundTransporter.start(this)
if (this.inboundTransporter) {
await this.inboundTransporter.start(this)
}
}

public get publicDid() {
Expand Down
2 changes: 1 addition & 1 deletion src/transport/InboundTransporter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Agent } from '../agent/Agent'

export interface InboundTransporter {
start(agent: Agent): void
start(agent: Agent): Promise<void>
}

0 comments on commit 0724593

Please sign in to comment.