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
75625801
Commit
75625801
authored
Feb 20, 2015
by
obscuren
Browse files
Options
Browse Files
Download
Plain Diff
fixed merge
parents
ea9a549b
a59cd946
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
130 additions
and
9 deletions
+130
-9
chain_manager.go
core/chain_manager.go
+3
-6
eth_filter.go
event/filter/eth_filter.go
+7
-3
worker.go
miner/worker.go
+2
-0
message.go
rpc/message.go
+60
-0
packages.go
rpc/packages.go
+47
-0
xeth.go
xeth/xeth.go
+11
-0
No files found.
core/chain_manager.go
View file @
75625801
...
...
@@ -396,8 +396,9 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
self
.
mu
.
Unlock
()
if
chain
{
//self.setTransState(state.New(block.Root(), self.db))
//self.eventMux.Post(ChainEvent{block, td})
fmt
.
Println
(
"POST START"
)
self
.
eventMux
.
Post
(
ChainEvent
{
block
,
td
})
fmt
.
Println
(
"POST END"
)
}
if
split
{
...
...
@@ -413,7 +414,3 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
func
(
self
*
ChainManager
)
GetAccount
(
addr
[]
byte
)
*
state
.
StateObject
{
return
self
.
State
()
.
GetAccount
(
addr
)
}
func
(
self
*
ChainManager
)
TransMut
()
*
sync
.
RWMutex
{
return
&
self
.
tsmu
}
event/filter/eth_filter.go
View file @
75625801
...
...
@@ -3,6 +3,7 @@ package filter
// TODO make use of the generic filtering system
import
(
"fmt"
"sync"
"github.com/ethereum/go-ethereum/core"
...
...
@@ -37,17 +38,18 @@ func (self *FilterManager) Stop() {
func
(
self
*
FilterManager
)
InstallFilter
(
filter
*
core
.
Filter
)
(
id
int
)
{
self
.
filterMu
.
Lock
()
defer
self
.
filterMu
.
Unlock
()
id
=
self
.
filterId
self
.
filters
[
id
]
=
filter
self
.
filterId
++
self
.
filterMu
.
Unlock
()
return
id
}
func
(
self
*
FilterManager
)
UninstallFilter
(
id
int
)
{
self
.
filterMu
.
Lock
()
defer
self
.
filterMu
.
Unlock
()
delete
(
self
.
filters
,
id
)
self
.
filterMu
.
Unlock
()
}
// GetFilter retrieves a filter installed using InstallFilter.
...
...
@@ -62,7 +64,7 @@ func (self *FilterManager) filterLoop() {
// Subscribe to events
events
:=
self
.
eventMux
.
Subscribe
(
core
.
PendingBlockEvent
{},
core
.
ChainEvent
{},
//
core.ChainEvent{},
state
.
Logs
(
nil
))
out
:
...
...
@@ -73,6 +75,7 @@ out:
case
event
:=
<-
events
.
Chan
()
:
switch
event
:=
event
.
(
type
)
{
case
core
.
ChainEvent
:
fmt
.
Println
(
"filter start"
)
self
.
filterMu
.
RLock
()
for
_
,
filter
:=
range
self
.
filters
{
if
filter
.
BlockCallback
!=
nil
{
...
...
@@ -80,6 +83,7 @@ out:
}
}
self
.
filterMu
.
RUnlock
()
fmt
.
Println
(
"filter stop"
)
case
core
.
PendingBlockEvent
:
self
.
filterMu
.
RLock
()
...
...
miner/worker.go
View file @
75625801
...
...
@@ -117,9 +117,11 @@ out:
case
event
:=
<-
events
.
Chan
()
:
switch
ev
:=
event
.
(
type
)
{
case
core
.
ChainEvent
:
println
(
"miner start"
)
if
self
.
current
.
block
!=
ev
.
Block
{
self
.
commitNewWork
()
}
println
(
"miner end"
)
case
core
.
NewMinedBlockEvent
:
self
.
commitNewWork
()
}
...
...
rpc/message.go
View file @
75625801
...
...
@@ -201,6 +201,36 @@ func (req *RpcRequest) ToGetCodeAtArgs() (*GetCodeAtArgs, error) {
return
args
,
nil
}
func
(
req
*
RpcRequest
)
ToBoolArgs
()
(
bool
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
return
false
,
NewErrorResponse
(
ErrorArguments
)
}
var
args
bool
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
if
err
!=
nil
{
return
false
,
NewErrorResponse
(
ErrorDecodeArgs
)
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
}
func
(
req
*
RpcRequest
)
ToCompileArgs
()
(
string
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
return
""
,
NewErrorResponse
(
ErrorArguments
)
}
var
args
string
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
if
err
!=
nil
{
return
""
,
NewErrorResponse
(
ErrorDecodeArgs
)
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
}
func
(
req
*
RpcRequest
)
ToFilterArgs
()
(
*
FilterOptions
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
...
...
@@ -231,6 +261,36 @@ func (req *RpcRequest) ToFilterStringArgs() (string, error) {
return
args
,
nil
}
func
(
req
*
RpcRequest
)
ToUninstallFilterArgs
()
(
int
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
return
0
,
NewErrorResponse
(
ErrorArguments
)
}
var
args
int
err
:=
json
.
Unmarshal
(
req
.
Params
[
0
],
&
args
)
if
err
!=
nil
{
return
0
,
NewErrorResponse
(
ErrorDecodeArgs
)
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
args
,
args
)
return
args
,
nil
}
func
(
req
*
RpcRequest
)
ToFilterChangedArgs
()
(
int
,
error
)
{
if
len
(
req
.
Params
)
<
1
{
return
0
,
NewErrorResponse
(
ErrorArguments
)
}
var
id
int
r
:=
bytes
.
NewReader
(
req
.
Params
[
0
])
err
:=
json
.
NewDecoder
(
r
)
.
Decode
(
&
id
)
if
err
!=
nil
{
return
0
,
NewErrorResponse
(
ErrorDecodeArgs
)
}
rpclogger
.
DebugDetailf
(
"%T %v"
,
id
,
id
)
return
id
,
nil
}
func
(
req
*
RpcRequest
)
ToDbPutArgs
()
(
*
DbArgs
,
error
)
{
if
len
(
req
.
Params
)
<
3
{
return
nil
,
NewErrorResponse
(
ErrorArguments
)
...
...
rpc/packages.go
View file @
75625801
...
...
@@ -113,6 +113,13 @@ func (self *EthereumApi) NewFilter(args *FilterOptions, reply *interface{}) erro
return
nil
}
func
(
self
*
EthereumApi
)
UninstallFilter
(
id
int
,
reply
*
interface
{})
error
{
delete
(
self
.
logs
,
id
)
self
.
filterManager
.
UninstallFilter
(
id
)
*
reply
=
true
return
nil
}
func
(
self
*
EthereumApi
)
NewFilterString
(
args
string
,
reply
*
interface
{})
error
{
var
id
int
filter
:=
core
.
NewFilter
(
self
.
xeth
.
Backend
())
...
...
@@ -273,6 +280,11 @@ func (p *EthereumApi) GetIsMining(reply *interface{}) error {
return
nil
}
func
(
p
*
EthereumApi
)
SetMining
(
shouldmine
bool
,
reply
*
interface
{})
error
{
*
reply
=
p
.
xeth
.
SetMining
(
shouldmine
)
return
nil
}
func
(
p
*
EthereumApi
)
BlockNumber
(
reply
*
interface
{})
error
{
*
reply
=
p
.
xeth
.
Backend
()
.
ChainManager
()
.
CurrentBlock
()
.
Number
()
return
nil
...
...
@@ -306,6 +318,21 @@ func (p *EthereumApi) GetCodeAt(args *GetCodeAtArgs, reply *interface{}) error {
return
nil
}
func
(
p
*
EthereumApi
)
GetCompilers
(
reply
*
interface
{})
error
{
c
:=
[]
string
{
"serpent"
}
*
reply
=
c
return
nil
}
func
(
p
*
EthereumApi
)
CompileSerpent
(
script
string
,
reply
*
interface
{})
error
{
res
,
err
:=
ethutil
.
Compile
(
script
,
false
)
if
err
!=
nil
{
return
err
}
*
reply
=
res
return
nil
}
func
(
p
*
EthereumApi
)
Sha3
(
args
*
Sha3Args
,
reply
*
interface
{})
error
{
*
reply
=
toHex
(
crypto
.
Sha3
(
fromHex
(
args
.
Data
)))
return
nil
...
...
@@ -394,6 +421,12 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
return
p
.
GetIsListening
(
reply
)
case
"eth_mining"
:
return
p
.
GetIsMining
(
reply
)
case
"eth_setMining"
:
args
,
err
:=
req
.
ToBoolArgs
()
if
err
!=
nil
{
return
err
}
return
p
.
SetMining
(
args
,
reply
)
case
"eth_peerCount"
:
return
p
.
GetPeerCount
(
reply
)
case
"eth_number"
:
...
...
@@ -460,6 +493,12 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
return
err
}
return
p
.
NewFilterString
(
args
,
reply
)
case
"eth_uninstallFilter"
:
args
,
err
:=
req
.
ToUninstallFilterArgs
()
if
err
!=
nil
{
return
err
}
return
p
.
UninstallFilter
(
args
,
reply
)
case
"eth_changed"
:
args
,
err
:=
req
.
ToIdArgs
()
if
err
!=
nil
{
...
...
@@ -493,6 +532,14 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error
return
err
}
return
p
.
WatchTx
(
args
,
reply
)
case
"eth_compilers"
:
return
p
.
GetCompilers
(
reply
)
case
"eth_serpent"
:
args
,
err
:=
req
.
ToCompileArgs
()
if
err
!=
nil
{
return
err
}
return
p
.
CompileSerpent
(
args
,
reply
)
case
"web3_sha3"
:
args
,
err
:=
req
.
ToSha3Args
()
if
err
!=
nil
{
...
...
xeth/xeth.go
View file @
75625801
...
...
@@ -103,6 +103,17 @@ func (self *XEth) IsMining() bool {
return
self
.
miner
.
Mining
()
}
func
(
self
*
XEth
)
SetMining
(
shouldmine
bool
)
bool
{
ismining
:=
self
.
miner
.
Mining
()
if
shouldmine
&&
!
ismining
{
self
.
miner
.
Start
()
}
if
ismining
&&
!
shouldmine
{
self
.
miner
.
Stop
()
}
return
self
.
miner
.
Mining
()
}
func
(
self
*
XEth
)
IsListening
()
bool
{
return
self
.
eth
.
IsListening
()
}
...
...
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