- var result = native.call('BluetoothGATTServerStart', {}, callback);
- if (native.isFailure(result)) {
- throw native.getErrorObjectAndValidate(result, BluetoothGATTServer_valid_start_exceptions, AbortError);
+ if (servicesUnregisteredInNativeLayer.length) {
+ var registerServiceCallbacksAggregator = new ResultCallbacksAggregator(servicesUnregisteredInNativeLayer.length,
+ function onAllSucceeded() {
+
+ var result = native.call('BluetoothGATTServerStart', {}, startServerCallback);
+
+ if (native.isFailure(result)) {
+ throw native.getErrorObjectAndValidate(result, BluetoothGATTServer_valid_start_exceptions, AbortError);
+ }
+ },
+ function onFailure(error) {
+ native.callIfPossible(args.errorCallback,
+ native.getErrorObjectAndValidate(error,
+ BluetoothGATTServer_valid_start_errors, AbortError));
+ });
+
+ var registerServicesCallback = function(result) {
+ if (native.isFailure(result)) {
+ registerServiceCallbacksAggregator.errorCallback(
+ native.getErrorObjectAndValidate(result,
+ BluetoothGATTServer_valid_start_errors, AbortError));
+ } else {
+ registerServiceCallbacksAggregator.successCallback();
+ }
+ };
+
+ for (var i = 0; i < servicesUnregisteredInNativeLayer.length; ++i) {
+ var result = native.call('BluetoothGATTServerRegisterService', servicesUnregisteredInNativeLayer[i], registerServicesCallback);
+ if (native.isFailure(result)) {
+ throw native.getErrorObjectAndValidate(
+ result,
+ BluetoothGATTServer_valid_registerService_exceptions,
+ AbortError
+ );
+ }
+ }
+ } else {
+ var result = native.call('BluetoothGATTServerStart', {}, startServerCallback);
+
+ if (native.isFailure(result)) {
+ throw native.getErrorObjectAndValidate(result, BluetoothGATTServer_valid_start_exceptions, AbortError);
+ }