implemented client-server model (untested)

This commit is contained in:
Kevin Jahns 2017-06-30 14:07:14 -07:00
parent c8bca15d72
commit bbf5e39408

View File

@ -14,8 +14,11 @@ export class TestRoom {
connector.setUserId('' + (this.nextUserId++)) connector.setUserId('' + (this.nextUserId++))
} }
Object.keys(this.users).forEach(uid => { Object.keys(this.users).forEach(uid => {
let user = this.users[uid]
if (user.role === 'master') {
this.users[uid].userJoined(connector.userId, connector.role) this.users[uid].userJoined(connector.userId, connector.role)
connector.userJoined(uid, this.users[uid].role) connector.userJoined(uid, this.users[uid].role)
}
}) })
this.users[connector.userId] = connector this.users[connector.userId] = connector
} }
@ -73,6 +76,7 @@ export default function extendTestConnector (Y) {
this.chance = options.chance this.chance = options.chance
this.testRoom = getTestRoom(this.room) this.testRoom = getTestRoom(this.room)
this.testRoom.join(this) this.testRoom.join(this)
this.forwardAppliedOperations = this.role === 'master'
} }
disconnect () { disconnect () {
this.testRoom.leave(this) this.testRoom.leave(this)
@ -128,7 +132,7 @@ export default function extendTestConnector (Y) {
var finished = [] var finished = []
for (let i = 0; i < flushUsers.length; i++) { for (let i = 0; i < flushUsers.length; i++) {
let userId = flushUsers[i].connector.userId let userId = flushUsers[i].connector.userId
if (userId === this.userId) continue if (userId !== this.userId && this.connections[userId] != null) {
let buffer = this.connections[userId].buffer let buffer = this.connections[userId].buffer
if (buffer != null) { if (buffer != null) {
var messages = buffer.splice(0) var messages = buffer.splice(0)
@ -138,6 +142,7 @@ export default function extendTestConnector (Y) {
} }
} }
} }
}
await Promise.all(finished) await Promise.all(finished)
await this.y.db.whenTransactionsFinished() await this.y.db.whenTransactionsFinished()
return finished.length > 0 ? 'flushing' : 'done' return finished.length > 0 ? 'flushing' : 'done'