handle pending channel creation
parent
aaa89996a2
commit
7568352305
|
@ -23,7 +23,7 @@
|
||||||
"gulp-plumber": "^1.0.1"
|
"gulp-plumber": "^1.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"amqplib": "^0.4.0",
|
"amqplib": "^0.4.1",
|
||||||
"base64-url": "^1.2.1",
|
"base64-url": "^1.2.1",
|
||||||
"bluebird": "^2.9.10",
|
"bluebird": "^2.9.10",
|
||||||
"node-uuid": "^1.4.2",
|
"node-uuid": "^1.4.2",
|
||||||
|
|
|
@ -39,6 +39,7 @@ getConnection = do ->
|
||||||
# Return the user channel
|
# Return the user channel
|
||||||
channels = do ->
|
channels = do ->
|
||||||
chs = {}
|
chs = {}
|
||||||
|
pendingChannels = {}
|
||||||
|
|
||||||
removeClient = (client_id) ->
|
removeClient = (client_id) ->
|
||||||
get(client_id).then (channel) ->
|
get(client_id).then (channel) ->
|
||||||
|
@ -47,7 +48,12 @@ channels = do ->
|
||||||
delete chs[client_id]
|
delete chs[client_id]
|
||||||
|
|
||||||
get = (client_id) ->
|
get = (client_id) ->
|
||||||
return new Promise (resolve, reject) ->
|
if pendingChannels[client_id]
|
||||||
|
return pendingChannels[client_id]
|
||||||
|
|
||||||
|
pendingChannels[client_id] = new Promise (resolve, reject) ->
|
||||||
|
delete pendingChannels[client_id]
|
||||||
|
|
||||||
if !chs[client_id]
|
if !chs[client_id]
|
||||||
getConnection()
|
getConnection()
|
||||||
.then (connection) -> connection.createChannel()
|
.then (connection) -> connection.createChannel()
|
||||||
|
@ -57,6 +63,8 @@ channels = do ->
|
||||||
else
|
else
|
||||||
resolve(chs[client_id])
|
resolve(chs[client_id])
|
||||||
|
|
||||||
|
return pendingChannels[client_id]
|
||||||
|
|
||||||
return {
|
return {
|
||||||
removeClient: removeClient
|
removeClient: removeClient
|
||||||
get: get
|
get: get
|
||||||
|
|
Loading…
Reference in New Issue