Skip to content

Instantly share code, notes, and snippets.

@BenjaminRH
Forked from svasva/queue.coffee
Last active December 21, 2015 14:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BenjaminRH/6318667 to your computer and use it in GitHub Desktop.
Save BenjaminRH/6318667 to your computer and use it in GitHub Desktop.
@Queue = new Meteor.Collection 'queue'
Meteor.startup ->
Meteor._processQueue = ->
if Meteor._queueProcessing ||= false
Meteor.setTimeout Meteor._processQueue, 100
return
Meteor._queueProcessing = true
qsize = Meteor._queue.length
qdone = 0
try
for item in Meteor._queue[..qsize]
console.log 'processing', item.type, item.objId
switch item.type
when 'trade'
trade = Trades.findOne(item.objId)
if trade.askOrder().complete || trade.bidOrder().complete
Trades.remove(trade._id)
else if trade.askOrder().cancelled || trade.bidOrder().cancelled
Trades.remove(trade._id)
else
trade.process()
when 'cancelOrder'
order = Orders.findOne(item.objId)
order.cancel() if order
Queue.remove item._id
qdone++
catch err
console.log 'error processing', item.type, item.objId, err
Meteor._queue = Meteor._queue[qdone..]
Meteor._queueProcessing = false
Meteor._queue ||= []
Meteor.addToQueue = (item) ->
Queue.insert(item);
console.log 'queued', item.type, item.objId
Meteor._queue.push item
Meteor.setTimeout -> Meteor._processQueue()
Meteor.removeFromQueue = (itemId) ->
item = Queue.findOne(itemId)
Queue.remove(itemId)
console.log 'finished', item.type, item.objId
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment