UNPKG

thali

Version:
167 lines (138 loc) 10.9 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: NextGeneration/thaliNotificationAction.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: NextGeneration/thaliNotificationAction.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>'use strict'; /** @module thaliNotificationAction */ /** * Creates a sub-type of the {@link module:thaliPeerPoolInterface~PeerAction} * class to represent actions for retrieving notifications. We MUST default * ActionState to queued. We are explicitly assuming that all created actions * will be added to the queue. * * @param {string} peerIdentifier * @param {module:thaliMobile.connectionTypes} connectionType * @param {string} actionType * @param {Crypto.ECDH} ecdhForLocalDevice A Crypto.ECDH object initialized * with the local device's public and private keys. * @param {addressBookCallback} addressBookCallback An object used to validate * which peers we are interested in talking to. * @constructor * @implements {module:thaliPeerAction~PeerAction} * @fires module:thaliNotificationAction~NotificationAction.event:Resolved */ function NotificationAction(peerIdentifier, connectionType, actionType, ecdhForLocalDevice, addressBookCallback) { this.actionState = NotificationAction.ActionState.QUEUED; } /** * Once started we MUST make a HTTP GET request to * http://[hostAddress]:[portNumber]/NotificationBeacons. Make sure to set the * TCP/IP timeout using suggestedTCPTimeout. * * The logic for the GET request MUST asynchronous read the response to the * GET request and ensure that it is not beyond a prefixed maximum size. Note * that node does not validate that the length of a response body and the * content-length header match so we MUST read the response in chunks * asynchronously and if the total data read exceeds our predefined limit * then we MUST abort the request object. * * If we do get a successful beacon response then we MUST submit the beacon * stream along with ecdhForLocalDevice and addressBookCallback to the {@link * module:thaliNotificationBeacons.parseBeacons} method. * * When completed fire * {@link module:thaliNotificationAction~NotificationAction.event:Resolved} with * whatever value makes the most sense. * * Note that if we receive a kill method while waiting for the response then we * MUST call abort the HTTP request, set our ActionState to KILLED and fire off * a Resolved event. * * __Open Issue:__ Is abort truly synchronous? In other words is it ever * possible to call abort, get back a response and then still have the response * object show up? I should hope not. */ NotificationAction.prototype.start = function () { }; /** * In addition to the inherited behavior also make sure to fire the * {@link module:thaliNotificationAction~NotificationAction.event:Resolved} * event. */ NotificationAction.prototype.kill = function () { }; /** * Records the final outcome of the action. * * @readonly * @enum {string} */ NotificationAction.ActionResolution = { /** * The beacon values were successfully retrieved and parsed. */ BEACONS_RETRIEVED_AND_PARSED: 'beaconsRetrievedAndParsed', /** * A connection was successfully created to the remote peer and a HTTP request * was successfully delivered and responded to with a 200 but the beacons * were not parsable. */ BEACONS_RETRIEVED_BUT_BAD: 'beaconsRetrievedButBad', /** * A HTTP response other than 200 was returned. */ HTTP_BAD_RESPONSE: 'httpBadResponse', /** * We weren't able to successfully create a network connection to the remote * peer or we were able to create a connection but we weren't able to complete * the beacon HTTP request. */ NETWORK_PROBLEM: 'networkProblem', /** * The action was killed before it completed. */ KILLED: 'killed' }; /** * When the action has completed this event MUST be fired. If the action * was able to retrieve the beacon * * @event module:thaliNotificationAction~NotificationAction.event:Resolved * @param {ActionResolution} actionResolution Explains how the action was * completed. * @param {module:thaliNotificationBeacons~ParseBeaconsResponse} beacon * If actionResolution is BEACONS_RETRIEVED_AND_PARSED then this object will be * returned. If the beacons were parsed and there were no values directed at * this peer then the beacon object MUST be null. */ module.exports.NotificationAction = NotificationAction; </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>