Skip to content

Commit 4e55d23

Browse files
author
nullagent
committed
cleanup routines
1 parent 3761819 commit 4e55d23

5 files changed

Lines changed: 60 additions & 14 deletions

File tree

src/party/index-browser.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ const ZangoParty = require('./local/zango-party')
77
const IDocument = require('./idocument')
88
const DocumentFactory = require('./document-factory')
99
const CloudDocument = require('./cloud/cloud-document')
10-
const P2PMatchMaker = require('./peer/p2p-match-maker')
10+
const MatchMakerClient = require('./peer/match-maker-client')
1111

1212
const LokiDb = require('../bouncer/db/loki-db')
1313

1414
module.exports = {
1515
IDocument, IParty, DocumentFactory,
1616
CloudDocument,
1717
CloudParty, LokiParty, ZangoParty, PeerParty,
18-
LokiDb, P2PMatchMaker
18+
LokiDb, MatchMakerClient
1919
}

src/party/index-embedded.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ const TingoParty = require('./local/tingo-party')
77
const IDocument = require('./idocument')
88
const DocumentFactory = require('./document-factory')
99
const CloudDocument = require('./cloud/cloud-document')
10-
const P2PMatchMaker = require('./peer/p2p-match-maker')
10+
const MatchMakerClient = require('./peer/match-maker-client')
1111

1212
module.exports = {
1313
IDocument, IParty, DocumentFactory,
1414
CloudDocument,
1515
CloudParty, LokiParty, PeerParty,
16-
TingoParty, P2PMatchMaker
16+
TingoParty, MatchMakerClient
1717
}

src/party/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ exports.MongoParty = require('./mongo/mongo-party')
99
exports.IDocument = require('./idocument')
1010
exports.DocumentFactory = require('./document-factory')
1111
exports.CloudDocument = require('./cloud/cloud-document')
12-
exports.P2PMatchMaker = require('./peer/p2p-match-maker')
12+
exports.MatchMakerClient = require('./peer/match-maker-client')
Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ class MatchMakerClient extends EventEmitter {
3939
tx: {},
4040
rx: {}
4141
}
42-
//this.restParty =
4342
}
4443

4544

@@ -211,8 +210,6 @@ class MatchMakerClient extends EventEmitter {
211210
toIdentity = toHashOrIdentity
212211
}
213212

214-
215-
216213
debug('toIdentity', toIdentity)
217214

218215
const invitePayload = {
@@ -255,6 +252,8 @@ class MatchMakerClient extends EventEmitter {
255252

256253
this.pendingInvites.tx[inviteDoc.$meta.id] = invite
257254

255+
invite.once('done', this.removeInvite.bind(this))
256+
258257
return invite
259258
}
260259

@@ -280,6 +279,22 @@ class MatchMakerClient extends EventEmitter {
280279
return lookupResult.invites
281280
}
282281

282+
removeInvite(invite){
283+
284+
let txInvite = this.pendingInvites.tx[invite.id]
285+
let rxInvite = this.pendingInvites.rx[invite.id]
286+
287+
if(txInvite){
288+
this.pendingInvites.tx[invite.id] = null
289+
delete this.pendingInvites.tx[invite.id]
290+
}
291+
292+
if(rxInvite){
293+
this.pendingInvites.rx[invite.id] = null
294+
delete this.pendingInvites.rx[invite.id]
295+
}
296+
}
297+
283298
async getPeerInvitesFromInviteDocs(invites){
284299

285300
let peerInvites = []
@@ -292,6 +307,14 @@ class MatchMakerClient extends EventEmitter {
292307

293308
let peerInvite = new PeerInvite( invites[i], to, this, from)
294309

310+
if(peerInvite.isSender()){
311+
this.pendingInvites.tx[ peerInvite.id ] = peerInvite
312+
} else {
313+
this.pendingInvites.rx[ peerInvite.id ] = peerInvite
314+
}
315+
316+
peerInvite.once('done', this.removeInvite.bind(this))
317+
295318
peerInvites.push(peerInvite)
296319
}
297320

@@ -325,4 +348,4 @@ class MatchMakerClient extends EventEmitter {
325348
}
326349
}
327350

328-
module.exports = MatchMakerClient
351+
module.exports = MatchMakerClient

src/party/peer/peer-invite.js

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ const EventEmitter = require('eventemitter3')
66
const PeerParty = require('./peer-party')
77
const RTCSocketComms = require('../../comms/rtc-socket-comms')
88

9+
const END_STATES = [
10+
'cancelled', 'rejected', 'expired', 'completed'
11+
]
12+
913
async function delay(ms){
1014
return new Promise((resolve,reject)=>{
1115
setTimeout(resolve, ms)
@@ -47,17 +51,21 @@ class PeerInvite extends EvetEmitter {
4751
isSender(doc){
4852

4953
if(doc){
50-
if(doc.toHash == matchMaker.identity.key.hash){return false }
54+
if(doc.toHash == matchMaker.wsParty.identity.key.hash){return false }
5155
else { return true }
5256
}
5357

54-
if(this.inviteDoc.toHash == matchMaker.identity.key.hash){return false }
58+
if(this.inviteDoc.toHash == matchMaker.wsParty.identity.key.hash){return false }
5559
else { return true }
5660
}
5761

62+
async cleanup(){
63+
//this.removeAllListeners('done')
64+
}
5865

5966
async cancel(){
6067
await this.matchMaker.setInviteState(this, 'cancelled')
68+
this.emit('done', this)
6169
}
6270

6371
async accept(mediaSrc){
@@ -87,19 +95,34 @@ class PeerInvite extends EvetEmitter {
8795

8896
async reject(){
8997
await this.matchMaker.setInviteState(this, 'rejected')
98+
this.emit('done', this)
9099
}
91100

92-
//async onAccepted(){}
93-
94101
async onInviteMsg(inviteMsg){
95102

103+
debug('onInviteMsg', inviteMsg)
96104
if(inviteMsg.state == this.inviteDoc.state){ return }
97105

98-
this.latestDoc = inviteMsg
106+
this.inviteMsg = inviteMsg
107+
108+
debug('\t', 'invite.state = ', inviteMsg.state)
99109
this.emit(inviteMsg.state, this)
110+
111+
if(this.inviteMsg && END_STATES.indexOf(this.inviteMsg.state) ){
112+
this.emit('done', this)
113+
}
100114
}
101115

102116
async waitForAccepted(){
117+
118+
if(this.inviteMsg && this.inviteMsg.state == 'accepted'){
119+
return await Promise.accept()
120+
}
121+
122+
if(this.inviteMsg && END_STATES.indexOf(this.inviteMsg.state) ){
123+
return await Promise.reject()
124+
}
125+
103126
return new Promise((resolve,reject)=>{
104127
this.once('accepted', ()=>{
105128
resolve()

0 commit comments

Comments
 (0)