DAP-ISSUE-129: Simplify Network Service Discovery API [Network Service Discovery]

DAP-ISSUE-129: Simplify Network Service Discovery API [Network Service Discovery]

http://www.w3.org/2009/dap/track/issues/129

Raised by: Jean-Claude Dufourd
On product: Network Service Discovery

from email: http://lists.w3.org/Archives/Public/public-device-apis/2013Jun/0015.html 


The current NSD API is used in this sequence:
- NSD.getNetworkServices( "type", callback, errorcb)
- then in callback, you immediately set the onserviceavailable callback 
and you return, because usually, the first NetworkServices object you 
get is empty
- then onserviceavailable is called, and in there you call 
NSD.getNetworkServices( "type", callback, errorcb) again
- then in callback, you immediately set the onserviceavailable callback 
and you do the actual work.

You need to define:
- a function calling NSD.getNetworkServices( "type", successcallback, 
errorcb)
- a onserviceavailable callback that calls NSD.getNetworkServices( 
"type", successcallback, errorcb)
- the successcallback.

It is possible to define a wrapper around this to deal with the 
onserviceavailable process transparently for the author, on top of the 
existing API.
Thus, I avoid the need for the definition of onserviceavailable.

The actual code does the same as above, but the process that the webapp 
author sees is:
- discover( "type", callback, errorcb)
- then in callback, you immediately do the actual work.

Why not simplify the API and get rid of the need for onserviceavaible ?
Why make the API more complex than it needs to be ?
Why expose a more intricate process that brings no advantage ?

Best regards
JC

Note: here is a possible implementation of the wrapper avoiding the need 
for onserviceavailable:

function discover(serviceType, callBack, errcb) {

     var thisFunction = function (services) {

         services.onserviceavailable = function () {

             NSD.getNetworkServices(serviceType, thisFunction, errcb);

         };

         if (services.length > 0) {

             callBack.call(this, services);

         }

     };

     NSD.getNetworkServices(serviceType, thisFunction, errcb);

}

Received on Tuesday, 9 July 2013 17:17:22 UTC