aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/contract.js18
-rw-r--r--lib/event.js16
2 files changed, 31 insertions, 3 deletions
diff --git a/lib/contract.js b/lib/contract.js
index a3e76cfea..732aa9111 100644
--- a/lib/contract.js
+++ b/lib/contract.js
@@ -20,7 +20,7 @@
* @date 2014
*/
-var web3 = require('./web3'); // jshint ignore:line
+var web3 = require('./web3');
var abi = require('./abi');
/**
@@ -62,7 +62,17 @@ var contract = function (address, desc) {
var inputParser = abi.inputParser(desc);
var outputParser = abi.outputParser(desc);
- var result = {};
+ var result = {
+ address: address,
+ };
+
+ Object.defineProperty(result, 'topics', {
+ get: function() {
+ return abi.filterEvents(desc).map(function (event) {
+ return abi.methodSignature(event.name);
+ });
+ }
+ });
result.call = function (options) {
result._isTransact = false;
@@ -148,11 +158,13 @@ var contract = function (address, desc) {
var displayName = abi.methodDisplayName(event.name);
var typeName = abi.methodTypeName(event.name);
+
var impl = function (options) {
+ var signature = abi.methodSignature(event.name);
var o = options || {};
o.address = o.address || address;
o.topics = o.topics || [];
- o.topics.push(abi.methodSignature(event.name));
+ o.topics.push(signature);
return web3.eth.watch(o);
};
diff --git a/lib/event.js b/lib/event.js
new file mode 100644
index 000000000..724acde81
--- /dev/null
+++ b/lib/event.js
@@ -0,0 +1,16 @@
+
+var abi = require('./abi');
+
+var implementationOfEvent = function (event, address, signature) {
+
+ return function (options) {
+ var o = options || {};
+ o.address = o.address || address;
+ o.topics = o.topics || [];
+ o.topics.push(signature);
+ return o;
+ };
+};
+
+module.exports = implementationOfEvent;
+