Skip to content
This repository has been archived by the owner on Jun 13, 2019. It is now read-only.

Commit

Permalink
Client: Use sequence number to dedupe presence notifications
Browse files Browse the repository at this point in the history
Change-Id: I94ddd5038b4dd0aa8a567b751b4f25331698094a
  • Loading branch information
Gabriel Schulhof committed Oct 28, 2016
1 parent dac38ad commit 8507037
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions lib/Client.js
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,9 @@ client = _.extend( new Client(), {
}
} );

// map of deviceId: sequenceNumber
var sequences = {};

handles.replace( {
method: "OC_REST_DISCOVER",
requestUri: csdk.OC_RSRVD_PRESENCE_URI
Expand Down Expand Up @@ -407,15 +410,21 @@ handles.replace( {
.then( function( device ) {
if ( device ) {
resolver.remove( device.uuid );
client.emit( "devicelost", device );
if ( sequences[ device.uuid ] !== response.sequenceNumber ) {
client.emit( "devicelost", device );
sequences[ device.uuid ] = response.sequenceNumber;
}
}
} );
} else if ( response.payload.trigger ===
csdk.OCPresenceTrigger.OC_PRESENCE_TRIGGER_CREATE ) {

client.getDeviceInfo( response.addr )
.then( function( device ) {
client.emit( "devicefound", device );
if ( sequences[ device.uuid ] !== response.sequenceNumber ) {
client.emit( "devicefound", device );
sequences[ device.uuid ] = response.sequenceNumber;
}
return client.findResources( { deviceId: device.uuid } );
} )
.catch( function( error ) {
Expand Down

0 comments on commit 8507037

Please sign in to comment.