diff options
author | Marek Kotewicz <marek.kotewicz@gmail.com> | 2015-01-14 01:28:49 +0800 |
---|---|---|
committer | Marek Kotewicz <marek.kotewicz@gmail.com> | 2015-01-14 01:28:49 +0800 |
commit | 9a8f45ee30aafad9f40beb646cd0be846277e0ea (patch) | |
tree | 2f19c8258b748bea83df7ebd4a00c78fe5cd48e7 /lib | |
parent | 8b7d4b0c9ed7113b685ecbae646b9d7df5a89aca (diff) | |
download | dexon-9a8f45ee30aafad9f40beb646cd0be846277e0ea.tar.gz dexon-9a8f45ee30aafad9f40beb646cd0be846277e0ea.tar.zst dexon-9a8f45ee30aafad9f40beb646cd0be846277e0ea.zip |
Filter separated to filter.js file
Diffstat (limited to 'lib')
-rw-r--r-- | lib/filter.js | 89 | ||||
-rw-r--r-- | lib/web3.js | 60 |
2 files changed, 92 insertions, 57 deletions
diff --git a/lib/filter.js b/lib/filter.js new file mode 100644 index 000000000..47f5a070c --- /dev/null +++ b/lib/filter.js @@ -0,0 +1,89 @@ +/* + This file is part of ethereum.js. + + ethereum.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ethereum.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with ethereum.js. If not, see <http://www.gnu.org/licenses/>. +*/ +/** @file filter.js + * @authors: + * Jeffrey Wilcke <jeff@ethdev.com> + * Marek Kotewicz <marek@ethdev.com> + * Marian Oancea <marian@ethdev.com> + * Gav Wood <g@ethdev.com> + * @date 2014 + */ + +// TODO: is these line is supposed to be here? +if (process.env.NODE_ENV !== 'build') { + var web3 = require('./web3'); // jshint ignore:line +} + +/// should be used when we want to watch something +/// it's using inner polling mechanism and is notified about changes +var Filter = function(options, impl) { + this.impl = impl; + this.callbacks = []; + + var self = this; + this.promise = impl.newFilter(options); + this.promise.then(function (id) { + self.id = id; + web3.on(impl.changed, id, self.trigger.bind(self)); + web3.provider.startPolling({call: impl.changed, args: [id]}, id); + }); +}; + +/// alias for changed* +Filter.prototype.arrived = function(callback) { + this.changed(callback); +}; + +/// gets called when there is new eth/shh message +Filter.prototype.changed = function(callback) { + var self = this; + this.promise.then(function(id) { + self.callbacks.push(callback); + }); +}; + +/// trigger calling new message from people +Filter.prototype.trigger = function(messages) { + for(var i = 0; i < this.callbacks.length; i++) { + this.callbacks[i].call(this, messages); + } +}; + +/// should be called to uninstall current filter +Filter.prototype.uninstall = function() { + var self = this; + this.promise.then(function (id) { + self.impl.uninstallFilter(id); + web3.provider.stopPolling(id); + web3.off(impl.changed, id); + }); +}; + +/// should be called to manually trigger getting latest messages from the client +Filter.prototype.messages = function() { + var self = this; + return this.promise.then(function (id) { + return self.impl.getMessages(id); + }); +}; + +/// alias for messages +Filter.prototype.logs = function () { + return this.messages(); +}; + +module.exports = Filter; diff --git a/lib/web3.js b/lib/web3.js index a27940f84..527022c62 100644 --- a/lib/web3.js +++ b/lib/web3.js @@ -14,7 +14,7 @@ You should have received a copy of the GNU Lesser General Public License along with ethereum.js. If not, see <http://www.gnu.org/licenses/>. */ -/** @file main.js +/** @file web3.js * @authors: * Jeffrey Wilcke <jeff@ethdev.com> * Marek Kotewicz <marek@ethdev.com> @@ -23,6 +23,8 @@ * @date 2014 */ +var Filter = require('./filter'); + /// Recursively resolves all promises in given object and replaces the resolved values with promises /// @param any object/array/promise/anything else.. /// @returns (resolves) object with replaced promises with their result @@ -467,63 +469,7 @@ web3.haveProvider = function() { return !!web3.provider.provider; }; -/// should be used when we want to watch something -/// it's using inner polling mechanism and is notified about changes -var Filter = function(options, impl) { - this.impl = impl; - this.callbacks = []; - - var self = this; - this.promise = impl.newFilter(options); - this.promise.then(function (id) { - self.id = id; - web3.on(impl.changed, id, self.trigger.bind(self)); - web3.provider.startPolling({call: impl.changed, args: [id]}, id); - }); -}; - -/// alias for changed* -Filter.prototype.arrived = function(callback) { - this.changed(callback); -}; - -/// gets called when there is new eth/shh message -Filter.prototype.changed = function(callback) { - var self = this; - this.promise.then(function(id) { - self.callbacks.push(callback); - }); -}; -/// trigger calling new message from people -Filter.prototype.trigger = function(messages) { - for(var i = 0; i < this.callbacks.length; i++) { - this.callbacks[i].call(this, messages); - } -}; - -/// should be called to uninstall current filter -Filter.prototype.uninstall = function() { - var self = this; - this.promise.then(function (id) { - self.impl.uninstallFilter(id); - web3.provider.stopPolling(id); - web3.off(impl.changed, id); - }); -}; - -/// should be called to manually trigger getting latest messages from the client -Filter.prototype.messages = function() { - var self = this; - return this.promise.then(function (id) { - return self.impl.getMessages(id); - }); -}; - -/// alias for messages -Filter.prototype.logs = function () { - return this.messages(); -}; /// callled when there is new incoming message function messageHandler(data) { |