UNPKG

nativescript-zeroconf

Version:
166 lines 6.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var utils = require("tns-core-modules/utils/utils"); var zeroconf_common_1 = require("./zeroconf.common"); var delegate = null; var Zeroconf = (function (_super) { __extends(Zeroconf, _super); function Zeroconf(serviceType) { var _this = _super.call(this, serviceType) || this; _this.netServiceBrowser = NSNetServiceBrowser.new(); return _this; } Zeroconf.prototype.startServiceDiscovery = function () { var _this = this; this.netServiceBrowser.delegate = MyNSNetServiceBrowserDelegate.new().initWithCallback(function (result) { if (result.type === 'service') { if (result.removed) { var service = { 'name': result.name, 'type': result.type, }; _this.onServiceLost(service); } else { _this.resolveBonjourService(result.data); } } }); this.netServiceBrowser.searchForServicesOfTypeInDomain(this.serviceType, 'local.'); }; Zeroconf.prototype.stopServiceDiscovery = function () { this.stopDiscovery(); }; Zeroconf.prototype.stopDiscovery = function () { this.netServiceBrowser.stop(); }; Zeroconf.prototype.resolveBonjourService = function (result) { var _this = this; result.delegate = MyNSNetServiceDelegate.new().initWithCallback(function (result) { if (result.type === 'resolve') { _this.processBonjourService(result.data); } }); result.resolveWithTimeout(0.0); }; Zeroconf.prototype.processBonjourService = function (result) { var addresses = []; if (result.addresses.count < 1) { console.warn("processBonjourService: did not resolve any IP addresses for " + result.name + "!"); } else { addresses = this.extractAddressesFromNSNetService(result.addresses); } var service = { 'name': result.name, 'type': result.type, 'host': result.hostName, 'addr': addresses, 'port': result.port, }; this.onServiceFound(service); }; Zeroconf.prototype.extractAddressesFromNSNetService = function (socketsData) { var addresses = []; var _socketsData = utils.ios.collections.nsArrayToJSArray(socketsData); for (var _i = 0, _socketsData_1 = _socketsData; _i < _socketsData_1.length; _i++) { var socketData = _socketsData_1[_i]; var socket_address = new interop.Reference(sockaddr_in, socketData.bytes).value; if (socket_address.sin_family == 2) { var ip_version = 4; var ip_address = undefined; var sin_addr = new interop.Reference(in_addr, socket_address.sin_addr); var buffer_size = 80; var address_buffer = interop.alloc(buffer_size); var res = inet_ntop(socket_address.sin_family, sin_addr, address_buffer, buffer_size); if (!res) { console.warn("inet_ntop failed with error: " + __error()); } else { ip_address = NSString.stringWithUTF8String(address_buffer).toString(); addresses.push(ip_address); } } else if (socket_address.sin_family == 30) { var ip_version = 6; var ip_address = undefined; addresses.push(ip_address); } } return addresses; }; return Zeroconf; }(zeroconf_common_1.Common)); exports.Zeroconf = Zeroconf; var MyNSNetServiceBrowserDelegate = (function (_super) { __extends(MyNSNetServiceBrowserDelegate, _super); function MyNSNetServiceBrowserDelegate() { return _super !== null && _super.apply(this, arguments) || this; } MyNSNetServiceBrowserDelegate.new = function () { return _super.new.call(this); }; MyNSNetServiceBrowserDelegate.prototype.initWithCallback = function (callback) { this._callback = callback; delegate = this; return this; }; MyNSNetServiceBrowserDelegate.prototype.netServiceBrowserDidFindDomainMoreComing = function (browser, domainString, moreComing) { this._callback({ 'type': 'domain', 'data': domainString, 'moreComing': moreComing }); }; MyNSNetServiceBrowserDelegate.prototype.netServiceBrowserWillSearch = function (browser) { }; MyNSNetServiceBrowserDelegate.prototype.netServiceBrowserDidStopSearch = function (browser) { }; MyNSNetServiceBrowserDelegate.prototype.netServiceBrowserDidFindServiceMoreComing = function (browser, service, moreComing) { console.log("netServiceBrowserDidFindServiceMoreComing, found service " + service.name + " " + service.type); this._callback({ 'removed': false, 'type': 'service', 'data': service, 'moreComing': moreComing }); }; MyNSNetServiceBrowserDelegate.prototype.netServiceBrowserDidRemoveServiceMoreComing = function (browser, service, moreComing) { console.log("netServiceBrowserDidRemoveServiceMoreComing, removed service " + service.name + " " + service.type); this._callback({ 'removed': true, 'type': 'service', 'data': service, 'moreComing': moreComing }); }; return MyNSNetServiceBrowserDelegate; }(NSObject)); MyNSNetServiceBrowserDelegate.ObjCProtocols = [NSNetServiceBrowserDelegate]; var MyNSNetServiceDelegate = (function (_super) { __extends(MyNSNetServiceDelegate, _super); function MyNSNetServiceDelegate() { return _super !== null && _super.apply(this, arguments) || this; } MyNSNetServiceDelegate.new = function () { return _super.new.call(this); }; MyNSNetServiceDelegate.prototype.initWithCallback = function (callback) { this._callback = callback; return this; }; MyNSNetServiceDelegate.prototype.netServiceWillResolve = function (sender) { }; MyNSNetServiceDelegate.prototype.netServiceDidNotResolve = function (sender, errorDict) { console.log("netServiceDidNotResolve"); }; MyNSNetServiceDelegate.prototype.netServiceDidResolveAddress = function (sender) { this._callback({ 'type': 'resolve', 'data': sender }); }; return MyNSNetServiceDelegate; }(NSObject)); MyNSNetServiceDelegate.ObjCProtocols = [NSNetServiceDelegate]; //# sourceMappingURL=zeroconf.ios.js.map