Changeset - 49f80544a3fb
[Not reviewed]
default
0 1 0
Drew Perttula - 9 years ago 2016-06-05 09:20:02
drewp@bigasterisk.com
untested unsubscribe handle support
Ignore-this: dab69fabac0055146be720ac474b615f
1 file changed with 9 insertions and 2 deletions:
0 comments (0 inline, 0 general)
light9/web/graph.coffee
Show inline comments
 
@@ -14,15 +14,21 @@ class GraphWatchers
 
    if o? then throw Error('not implemented')
 
    if not @handlersSp[s]
 
      @handlersSp[s] = {}
 
    if not @handlersSp[s][p]
 
      @handlersSp[s][p] = []
 
    @handlersSp[s][p].push(onChange)
 
    handle = {s: s, p: p, func: onChange}
 
    return handle
 
    
 
  unsubscribe: (subscription) ->
 
    throw Error('not implemented')
 
    spList = @handlersSp[subscription.s][subscription.p]
 
    i = spList.indexOf(subscription.func)
 
    if i == -1
 
      throw new Error('subscription not found')
 
    spList.splice(i, 1)
 

	
 
  matchingHandlers: (quad) ->
 
    matches = []
 
    for subjDict in [@handlersSp[quad.subject] || {}, @handlersSp[null] || {}]
 
      for subjPredMatches in [subjDict[quad.predicate] || [], subjDict[null] || []]
 
        matches = matches.concat(subjPredMatches)
 
@@ -264,16 +270,17 @@ class window.SyncedGraph
 
  
 

	
 
  subscribe: (s, p, o, onChange) -> # return subscription handle
 
    # onChange is called with a patch that's limited to the quads
 
    # that match your request.
 
    # We call you immediately on existing triples.
 
    @_watchers.subscribe(s, p, o, onChange)
 
    handle = @_watchers.subscribe(s, p, o, onChange)
 
    immediatePatch = {delQuads: [], addQuads: @graph.findByIRI(s, p, o)}
 
    if immediatePatch.addQuads.length
 
      onChange(immediatePatch)
 
    return handle
 

	
 
  unsubscribe: (subscription) ->
 
    @_watchers.unsubscribe(subscription)
 

	
 
  _singleValue: (s, p) ->
 
    quads = @graph.findByIRI(s, p)
0 comments (0 inline, 0 general)