thali
Version:
170 lines (133 loc) • 9.87 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: thaliemitter.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: thaliemitter.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>'use strict';
var EventEmitter = require('events').EventEmitter;
var inherits = require('util').inherits;
var validations = require('./validations');
function thrower(err) {
if (err) { throw err; }
}
/**
* Creates a new instance of the ThaliEmitter which is an EventEmitter to call the underlying native layer.
*/
function ThaliEmitter() {
EventEmitter.call(this);
this._init();
}
inherits(ThaliEmitter, EventEmitter);
ThaliEmitter.events = {
PEER_AVAILABILITY_CHANGED: 'peerAvailabilityChanged',
NETWORK_CHANGED: 'networkChanged',
CONNECTION_ERROR: 'connectionError'
};
ThaliEmitter.prototype._init = function () {
var self = this;
function registerMobilePeerEvent(eventName) {
function emitEvent(eventName) {
return function handler(arg) {
self.emit(eventName, arg);
};
}
Mobile(eventName).registerToNative(emitEvent(eventName));
}
Object.keys(ThaliEmitter.events)
.forEach(function (key) {
registerMobilePeerEvent(ThaliEmitter.events[key]);
});
};
/**
* Starts broadcasting with the given device name, port and a callback
* @param {String} deviceName the device name to broadcast.
* @param {Number} port the port number to broadcast.
* @param {Function} cb the callback which returns an error if one has occurred.
*/
ThaliEmitter.prototype.startBroadcasting = function(deviceName, port, cb) {
validations.ensureNonNullOrEmptyString(deviceName, 'deviceName');
validations.ensureValidPort(port);
cb || (cb = thrower);
Mobile('StartBroadcasting').callNative(deviceName, port, function (err) {
if (err) {
cb(new Error(err));
} else {
cb();
}
});
};
/**
* Starts broadcasting the availability of the current device.
* @param {Function} cb the callback which returns an error if one has occurred.
*/
ThaliEmitter.prototype.stopBroadcasting = function(cb) {
cb || (cb = thrower);
Mobile('StopBroadcasting').callNative(function (err) {
if (err) {
cb(new Error(err));
} else {
cb();
}
});
};
/**
* Connects to the given peer by the given peer identifier.
* @param {String} peerIdentifier the peer identifier of the device to connect to.
* @param {Function} cb the callback which returns an error if one occurred and a port number used for synchronization.
*/
ThaliEmitter.prototype.connect = function (peerIdentifier, cb) {
validations.ensureNonNullOrEmptyString(peerIdentifier, 'peerIdentifier');
validations.ensureIsFunction(cb);
Mobile('Connect').callNative(peerIdentifier, function (err, port) {
if (err) {
cb(new Error(err));
} else {
cb(null, port);
}
});
};
/**
* Disconnects from the given peer by the peer identifier. Note if the peer has already been disconnected, no error should be thrown.
* @param {String} peerIdentifier the peer identifier of the device to disconnect from.
* @param {Function} cb the callback which returns an error if one occurred.
*/
ThaliEmitter.prototype.disconnect = function (peerIdentifier, cb) {
validations.ensureNonNullOrEmptyString(peerIdentifier, 'peerIdentifier');
cb || (cb = thrower);
Mobile('Disconnect').callNative(peerIdentifier, function (err) {
if (err) {
cb(new Error(err));
} else {
cb();
}
});
};
module.exports = ThaliEmitter;
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-TCPServersManager.html">TCPServersManager</a></li><li><a href="module-thaliMobile.html">thaliMobile</a></li><li><a href="module-thaliMobileNative.html">thaliMobileNative</a></li><li><a href="module-thaliMobileNativeWrapper.html">thaliMobileNativeWrapper</a></li><li><a href="module-thaliNotificationAction.html">thaliNotificationAction</a></li><li><a href="module-thaliNotificationBeacons.html">thaliNotificationBeacons</a></li><li><a href="module-thaliNotificationClient.html">thaliNotificationClient</a></li><li><a href="module-thaliNotificationServer.html">thaliNotificationServer</a></li><li><a href="module-thaliPeerAction.html">thaliPeerAction</a></li><li><a href="module-thaliPeerDictionary.html">thaliPeerDictionary</a></li><li><a href="module-thaliPeerPoolInterface.html">thaliPeerPoolInterface</a></li><li><a href="module-ThaliWifiInfrastructure.html">ThaliWifiInfrastructure</a></li><li><a href="module-WifiBasedNativeMock.html">WifiBasedNativeMock</a></li></ul><h3>Externals</h3><ul><li><a href="external-_Mobile(_connect_)_.html">Mobile('connect')</a></li><li><a href="external-_Mobile(_discoveryAdvertisingStateUpdateNonTCP_)_.html">Mobile('discoveryAdvertisingStateUpdateNonTCP')</a></li><li><a href="external-_Mobile(_incomingConnectionToPortNumberFailed_)_.html">Mobile('incomingConnectionToPortNumberFailed')</a></li><li><a href="external-_Mobile(_killConnections_)_.html">Mobile('killConnections')</a></li><li><a href="external-_Mobile(_networkChanged_)_.html">Mobile('networkChanged')</a></li><li><a href="external-_Mobile(_peerAvailabilityChanged_)_.html">Mobile('peerAvailabilityChanged')</a></li><li><a href="external-_Mobile(_startListeningForAdvertisements_)_.html">Mobile('startListeningForAdvertisements')</a></li><li><a href="external-_Mobile(_startUpdateAdvertisingAndListening_)_.html">Mobile('startUpdateAdvertisingAndListening')</a></li><li><a href="external-_Mobile(_stopAdvertisingAndListening_)_.html">Mobile('stopAdvertisingAndListening')</a></li><li><a href="external-_Mobile(_stopListeningForAdvertisements_)_.html">Mobile('stopListeningForAdvertisements')</a></li></ul><h3>Classes</h3><ul><li><a href="ConnectionTable.html">ConnectionTable</a></li><li><a href="module-TCPServersManager-TCPServersManager.html">TCPServersManager</a></li><li><a href="module-thaliNotificationAction-NotificationAction.html">NotificationAction</a></li><li><a href="module-thaliNotificationBeacons-ParseBeaconsResponse.html">ParseBeaconsResponse</a></li><li><a href="module-thaliNotificationClient-ThaliNotificationClient.html">ThaliNotificationClient</a></li><li><a href="module-thaliNotificationServer-ThaliNotificationServer.html">ThaliNotificationServer</a></li><li><a href="module-thaliPeerAction-PeerAction.html">PeerAction</a></li><li><a href="module-thaliPeerDictionary-NotificationPeerDictionaryEntry.html">NotificationPeerDictionaryEntry</a></li><li><a href="module-thaliPeerDictionary-PeerConnectionInformation.html">PeerConnectionInformation</a></li><li><a href="module-thaliPeerDictionary-PeerDictionary.html">PeerDictionary</a></li><li><a href="module-thaliPeerPoolInterface-ThaliPeerPoolInterface.html">ThaliPeerPoolInterface</a></li><li><a href="module-ThaliWifiInfrastructure-ThaliWifiInfrastructure.html">ThaliWifiInfrastructure</a></li><li><a href="module-WifiBasedNativeMock-MobileCallInstance.html">MobileCallInstance</a></li><li><a href="module-WifiBasedNativeMock-WifiBasedNativeMock.html">WifiBasedNativeMock</a></li></ul><h3>Events</h3><ul><li><a href="module-thaliMobileNativeWrapper.html#~event:discoveryAdvertisingStateUpdateNonTCPEvent">discoveryAdvertisingStateUpdateNonTCPEvent</a></li><li><a href="module-ThaliWifiInfrastructure.html#~event:discoveryAdvertisingStateUpdateWifiEvent">discoveryAdvertisingStateUpdateWifiEvent</a></li><li><a href="module-TCPServersManager.html#~event:failedConnection">failedConnection</a></li><li><a href="module-thaliMobileNativeWrapper.html#~event:incomingConnectionToPortNumberFailed">incomingConnectionToPortNumberFailed</a></li><li><a href="module-thaliMobileNativeWrapper.html#~event:networkChangedNonTCP">networkChangedNonTCP</a></li><li><a href="module-ThaliWifiInfrastructure.html#~event:networkChangedWifi">networkChangedWifi</a></li><li><a href="module-thaliMobileNativeWrapper.html#~event:nonTCPPeerAvailabilityChangedEvent">nonTCPPeerAvailabilityChangedEvent</a></li><li><a href="module-TCPServersManager.html#~event:routerPortConnectionFailed">routerPortConnectionFailed</a></li><li><a href="module-ThaliWifiInfrastructure.html#~event:wifiPeerAvailabilityChanged">wifiPeerAvailabilityChanged</a></li><li><a href="module-thaliMobile.html#.event:event:discoveryAdvertisingStateUpdate">discoveryAdvertisingStateUpdate</a></li><li><a href="module-thaliMobile.html#.event:event:networkChanged">networkChanged</a></li><li><a href="module-thaliMobile.html#.event:event:peerAvailabilityChanged">peerAvailabilityChanged</a></li><li><a href="module-thaliNotificationAction-NotificationAction.html#.event:event:Resolved">Resolved</a></li><li><a href="module-thaliNotificationClient.html#.event:event:peerAdvertisesDataForUs">peerAdvertisesDataForUs</a></li></ul><h3>Global</h3><ul><li><a href="global.html#getPKCS12Content">getPKCS12Content</a></li><li><a href="global.html#getPublicKeyHash">getPublicKeyHash</a></li><li><a href="global.html#stopThaliReplicationManager">stopThaliReplicationManager</a></li><li><a href="global.html#ThaliEmitter">ThaliEmitter</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.0</a> on Mon Jan 18 2016 11:19:31 GMT+0200 (EET)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>