Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
45134de7
Commit
45134de7
authored
Feb 03, 2015
by
Marek Kotewicz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
jsonrpc.js file && batch polling
parent
f3ce1f07
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
196 additions
and
46 deletions
+196
-46
ethereum.js
dist/ethereum.js
+101
-26
ethereum.js.map
dist/ethereum.js.map
+6
-4
ethereum.min.js
dist/ethereum.min.js
+1
-1
httpsync.js
lib/httpsync.js
+2
-1
jsonrpc.js
lib/jsonrpc.js
+61
-0
providermanager.js
lib/providermanager.js
+23
-13
qtsync.js
lib/qtsync.js
+2
-1
No files found.
dist/ethereum.js
View file @
45134de7
...
...
@@ -210,7 +210,7 @@ module.exports = {
};
},{
"./const"
:
2
,
"./formatters"
:
6
,
"./types"
:
1
0
,
"./utils"
:
11
,
"./web3"
:
12
}],
2
:[
function
(
require
,
module
,
exports
){
},{
"./const"
:
2
,
"./formatters"
:
6
,
"./types"
:
1
1
,
"./utils"
:
12
,
"./web3"
:
13
}],
2
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -487,7 +487,7 @@ var contract = function (address, desc) {
module
.
exports
=
contract
;
},{
"./abi"
:
1
,
"./event"
:
4
,
"./utils"
:
1
1
,
"./web3"
:
12
}],
4
:[
function
(
require
,
module
,
exports
){
},{
"./abi"
:
1
,
"./event"
:
4
,
"./utils"
:
1
2
,
"./web3"
:
13
}],
4
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -624,7 +624,7 @@ module.exports = {
};
},{
"./abi"
:
1
,
"./utils"
:
1
1
}],
5
:[
function
(
require
,
module
,
exports
){
},{
"./abi"
:
1
,
"./utils"
:
1
2
}],
5
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -727,7 +727,7 @@ Filter.prototype.logs = function () {
module
.
exports
=
Filter
;
},{
"./web3"
:
1
2
}],
6
:[
function
(
require
,
module
,
exports
){
},{
"./web3"
:
1
3
}],
6
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -883,7 +883,7 @@ module.exports = {
};
},{
"./const"
:
2
,
"./utils"
:
1
1
}],
7
:[
function
(
require
,
module
,
exports
){
},{
"./const"
:
2
,
"./utils"
:
1
2
}],
7
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -924,7 +924,8 @@ HttpSyncProvider.prototype.send = function (payload) {
request
.
send
(
JSON
.
stringify
(
payload
));
// check request.status
return
request
.
responseText
;
var
result
=
request
.
responseText
;
return
JSON
.
parse
(
result
);
};
module
.
exports
=
HttpSyncProvider
;
...
...
@@ -947,6 +948,69 @@ module.exports = HttpSyncProvider;
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 jsonrpc.js
* @authors:
* Marek Kotewicz <marek@ethdev.com>
* @date 2015
*/
var
messageId
=
1
;
/// Should be called to valid json create payload object
/// @param method of jsonrpc call, required
/// @param params, an array of method params, optional
/// @returns valid jsonrpc payload object
var
toPayload
=
function
(
method
,
params
)
{
if
(
!
method
)
console
.
error
(
'jsonrpc method should be specified!'
);
return
{
jsonrpc
:
'2.0'
,
method
:
method
,
params
:
params
||
[],
id
:
messageId
++
};
};
/// Should be called to check if jsonrpc response is valid
/// @returns true if response doesn't have error field
var
isValidResponse
=
function
(
response
)
{
return
response
&&
!
response
.
error
;
};
/// Should be called to create batch payload object
/// @param messages, an array of objects with method (required) and params (optional) fields
var
toBatchPayload
=
function
(
messages
)
{
return
messages
.
map
(
function
(
message
)
{
return
toPayload
(
message
.
method
,
message
.
params
);
});
};
module
.
exports
=
{
toPayload
:
toPayload
,
isValidResponse
:
isValidResponse
,
toBatchPayload
:
toBatchPayload
};
},{}],
9
:[
function
(
require
,
module
,
exports
){
/*
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 providermanager.js
* @authors:
* Jeffrey Wilcke <jeff@ethdev.com>
...
...
@@ -956,7 +1020,9 @@ module.exports = HttpSyncProvider;
* @date 2014
*/
var
web3
=
require
(
'./web3'
);
// jshint ignore:line
var
web3
=
require
(
'./web3'
);
var
jsonrpc
=
require
(
'./jsonrpc'
);
/**
* Provider manager object prototype
...
...
@@ -970,21 +1036,34 @@ var web3 = require('./web3'); // jshint ignore:line
var
ProviderManager
=
function
()
{
this
.
polls
=
[];
this
.
provider
=
undefined
;
this
.
id
=
1
;
var
self
=
this
;
var
poll
=
function
()
{
if
(
self
.
provider
)
{
self
.
polls
.
forEach
(
function
(
data
)
{
var
result
=
self
.
send
(
data
.
data
);
var
pollsBatch
=
self
.
polls
.
map
(
function
(
data
)
{
return
data
.
data
;
});
var
payload
=
jsonrpc
.
toBatchPayload
(
pollsBatch
);
var
results
=
self
.
provider
.
send
(
payload
);
self
.
polls
.
forEach
(
function
(
data
,
index
)
{
var
result
=
results
[
index
];
if
(
!
jsonrpc
.
isValidResponse
(
result
))
{
return
;
}
result
=
result
.
result
;
// dont call the callback if result is not an array, or empty one
if
(
!
(
result
instanceof
Array
)
||
result
.
length
===
0
)
{
return
;
}
data
.
callback
(
result
);
});
}
setTimeout
(
poll
,
1000
);
};
...
...
@@ -994,21 +1073,16 @@ var ProviderManager = function() {
/// sends outgoing requests
/// @params data - an object with at least 'method' property
ProviderManager
.
prototype
.
send
=
function
(
data
)
{
data
.
jsonrpc
=
'2.0'
;
data
.
params
=
data
.
params
||
[];
data
.
id
=
this
.
id
++
;
var
payload
=
jsonrpc
.
toPayload
(
data
.
method
,
data
.
params
);
if
(
this
.
provider
===
undefined
)
{
console
.
error
(
'provider is not set'
);
return
null
;
}
//TODO: handle error here?
var
result
=
this
.
provider
.
send
(
data
);
result
=
JSON
.
parse
(
result
);
var
result
=
this
.
provider
.
send
(
payload
);
if
(
result
.
error
)
{
if
(
!
jsonrpc
.
isValidResponse
(
result
)
)
{
console
.
log
(
result
.
error
);
return
null
;
}
...
...
@@ -1040,7 +1114,7 @@ ProviderManager.prototype.stopPolling = function (pollId) {
module
.
exports
=
ProviderManager
;
},{
"./
web3"
:
12
}],
9
:[
function
(
require
,
module
,
exports
){
},{
"./
jsonrpc"
:
8
,
"./web3"
:
13
}],
10
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -1068,13 +1142,14 @@ var QtSyncProvider = function () {
};
QtSyncProvider
.
prototype
.
send
=
function
(
payload
)
{
return
navigator
.
qt
.
callMethod
(
JSON
.
stringify
(
payload
));
var
result
=
navigator
.
qt
.
callMethod
(
JSON
.
stringify
(
payload
));
return
JSON
.
parse
(
result
);
};
module
.
exports
=
QtSyncProvider
;
},{}],
1
0
:[
function
(
require
,
module
,
exports
){
},{}],
1
1
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -1155,7 +1230,7 @@ module.exports = {
};
},{
"./formatters"
:
6
}],
1
1
:[
function
(
require
,
module
,
exports
){
},{
"./formatters"
:
6
}],
1
2
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -1299,7 +1374,7 @@ module.exports = {
};
},{
"./const"
:
2
}],
1
2
:[
function
(
require
,
module
,
exports
){
},{
"./const"
:
2
}],
1
3
:[
function
(
require
,
module
,
exports
){
/*
This file is part of ethereum.js.
...
...
@@ -1557,7 +1632,7 @@ web3.setProvider = function(provider) {
module
.
exports
=
web3
;
},{
"./utils"
:
1
1
}],
"web3"
:[
function
(
require
,
module
,
exports
){
},{
"./utils"
:
1
2
}],
"web3"
:[
function
(
require
,
module
,
exports
){
var
web3
=
require
(
'./lib/web3'
);
var
ProviderManager
=
require
(
'./lib/providermanager'
);
web3
.
provider
=
new
ProviderManager
();
...
...
@@ -1570,7 +1645,7 @@ web3.abi = require('./lib/abi');
module
.
exports
=
web3
;
},{
"./lib/abi"
:
1
,
"./lib/contract"
:
3
,
"./lib/filter"
:
5
,
"./lib/httpsync"
:
7
,
"./lib/providermanager"
:
8
,
"./lib/qtsync"
:
9
,
"./lib/web3"
:
12
}]},{},[
"web3"
])
},{
"./lib/abi"
:
1
,
"./lib/contract"
:
3
,
"./lib/filter"
:
5
,
"./lib/httpsync"
:
7
,
"./lib/providermanager"
:
9
,
"./lib/qtsync"
:
10
,
"./lib/web3"
:
13
}]},{},[
"web3"
])
//# sourceMappingURL=ethereum.js.map
\ No newline at end of file
dist/ethereum.js.map
View file @
45134de7
This diff is collapsed.
Click to expand it.
dist/ethereum.min.js
View file @
45134de7
This diff is collapsed.
Click to expand it.
lib/httpsync.js
View file @
45134de7
...
...
@@ -38,7 +38,8 @@ HttpSyncProvider.prototype.send = function (payload) {
request
.
send
(
JSON
.
stringify
(
payload
));
// check request.status
return
request
.
responseText
;
var
result
=
request
.
responseText
;
return
JSON
.
parse
(
result
);
};
module
.
exports
=
HttpSyncProvider
;
...
...
lib/jsonrpc.js
0 → 100644
View file @
45134de7
/*
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 jsonrpc.js
* @authors:
* Marek Kotewicz <marek@ethdev.com>
* @date 2015
*/
var
messageId
=
1
;
/// Should be called to valid json create payload object
/// @param method of jsonrpc call, required
/// @param params, an array of method params, optional
/// @returns valid jsonrpc payload object
var
toPayload
=
function
(
method
,
params
)
{
if
(
!
method
)
console
.
error
(
'jsonrpc method should be specified!'
);
return
{
jsonrpc
:
'2.0'
,
method
:
method
,
params
:
params
||
[],
id
:
messageId
++
};
};
/// Should be called to check if jsonrpc response is valid
/// @returns true if response doesn't have error field
var
isValidResponse
=
function
(
response
)
{
return
response
&&
!
response
.
error
;
};
/// Should be called to create batch payload object
/// @param messages, an array of objects with method (required) and params (optional) fields
var
toBatchPayload
=
function
(
messages
)
{
return
messages
.
map
(
function
(
message
)
{
return
toPayload
(
message
.
method
,
message
.
params
);
});
};
module
.
exports
=
{
toPayload
:
toPayload
,
isValidResponse
:
isValidResponse
,
toBatchPayload
:
toBatchPayload
};
lib/providermanager.js
View file @
45134de7
...
...
@@ -23,7 +23,9 @@
* @date 2014
*/
var
web3
=
require
(
'./web3'
);
// jshint ignore:line
var
web3
=
require
(
'./web3'
);
var
jsonrpc
=
require
(
'./jsonrpc'
);
/**
* Provider manager object prototype
...
...
@@ -37,21 +39,34 @@ var web3 = require('./web3'); // jshint ignore:line
var
ProviderManager
=
function
()
{
this
.
polls
=
[];
this
.
provider
=
undefined
;
this
.
id
=
1
;
var
self
=
this
;
var
poll
=
function
()
{
if
(
self
.
provider
)
{
self
.
polls
.
forEach
(
function
(
data
)
{
var
result
=
self
.
send
(
data
.
data
);
var
pollsBatch
=
self
.
polls
.
map
(
function
(
data
)
{
return
data
.
data
;
});
var
payload
=
jsonrpc
.
toBatchPayload
(
pollsBatch
);
var
results
=
self
.
provider
.
send
(
payload
);
self
.
polls
.
forEach
(
function
(
data
,
index
)
{
var
result
=
results
[
index
];
if
(
!
jsonrpc
.
isValidResponse
(
result
))
{
return
;
}
result
=
result
.
result
;
// dont call the callback if result is not an array, or empty one
if
(
!
(
result
instanceof
Array
)
||
result
.
length
===
0
)
{
return
;
}
data
.
callback
(
result
);
});
}
setTimeout
(
poll
,
1000
);
};
...
...
@@ -61,21 +76,16 @@ var ProviderManager = function() {
/// sends outgoing requests
/// @params data - an object with at least 'method' property
ProviderManager
.
prototype
.
send
=
function
(
data
)
{
data
.
jsonrpc
=
'2.0'
;
data
.
params
=
data
.
params
||
[];
data
.
id
=
this
.
id
++
;
var
payload
=
jsonrpc
.
toPayload
(
data
.
method
,
data
.
params
);
if
(
this
.
provider
===
undefined
)
{
console
.
error
(
'provider is not set'
);
return
null
;
}
//TODO: handle error here?
var
result
=
this
.
provider
.
send
(
data
);
result
=
JSON
.
parse
(
result
);
var
result
=
this
.
provider
.
send
(
payload
);
if
(
result
.
error
)
{
if
(
!
jsonrpc
.
isValidResponse
(
result
)
)
{
console
.
log
(
result
.
error
);
return
null
;
}
...
...
lib/qtsync.js
View file @
45134de7
...
...
@@ -25,7 +25,8 @@ var QtSyncProvider = function () {
};
QtSyncProvider
.
prototype
.
send
=
function
(
payload
)
{
return
navigator
.
qt
.
callMethod
(
JSON
.
stringify
(
payload
));
var
result
=
navigator
.
qt
.
callMethod
(
JSON
.
stringify
(
payload
));
return
JSON
.
parse
(
result
);
};
module
.
exports
=
QtSyncProvider
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment