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
3424bf17
Commit
3424bf17
authored
May 02, 2014
by
Maran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved RPC Server and implemented it as a package
parent
1b597b8c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
9 additions
and
267 deletions
+9
-267
config.go
ethereal/config.go
+2
-0
config.go
ethereum/config.go
+2
-0
ethereum.go
ethereum/ethereum.go
+5
-0
packages.go
etherpc/packages.go
+0
-185
server.go
etherpc/server.go
+0
-82
No files found.
ethereal/config.go
View file @
3424bf17
...
@@ -6,6 +6,7 @@ import (
...
@@ -6,6 +6,7 @@ import (
var
StartConsole
bool
var
StartConsole
bool
var
StartMining
bool
var
StartMining
bool
var
StartRpc
bool
var
UseUPnP
bool
var
UseUPnP
bool
var
OutboundPort
string
var
OutboundPort
string
var
ShowGenesis
bool
var
ShowGenesis
bool
...
@@ -21,6 +22,7 @@ var AssetPath string
...
@@ -21,6 +22,7 @@ var AssetPath string
func
Init
()
{
func
Init
()
{
flag
.
BoolVar
(
&
StartConsole
,
"c"
,
false
,
"debug and testing console"
)
flag
.
BoolVar
(
&
StartConsole
,
"c"
,
false
,
"debug and testing console"
)
flag
.
BoolVar
(
&
StartMining
,
"m"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
StartMining
,
"m"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
StartRpc
,
"r"
,
false
,
"start rpc server"
)
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
flag
.
BoolVar
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
flag
.
BoolVar
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
...
...
ethereum/config.go
View file @
3424bf17
...
@@ -6,6 +6,7 @@ import (
...
@@ -6,6 +6,7 @@ import (
var
StartConsole
bool
var
StartConsole
bool
var
StartMining
bool
var
StartMining
bool
var
StartRpc
bool
var
UseUPnP
bool
var
UseUPnP
bool
var
OutboundPort
string
var
OutboundPort
string
var
ShowGenesis
bool
var
ShowGenesis
bool
...
@@ -24,6 +25,7 @@ func Init() {
...
@@ -24,6 +25,7 @@ func Init() {
flag
.
BoolVar
(
&
StartMining
,
"m"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
StartMining
,
"m"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
//flag.BoolVar(&UseGui, "gui", true, "use the gui")
//flag.BoolVar(&UseGui, "gui", true, "use the gui")
flag
.
BoolVar
(
&
StartRpc
,
"r"
,
false
,
"start rpc server"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
flag
.
BoolVar
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
flag
.
BoolVar
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
...
...
ethereum/ethereum.go
View file @
3424bf17
...
@@ -4,6 +4,7 @@ import (
...
@@ -4,6 +4,7 @@ import (
"fmt"
"fmt"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/etherpc"
"github.com/ethereum/eth-go/ethminer"
"github.com/ethereum/eth-go/ethminer"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
"github.com/ethereum/go-ethereum/utils"
...
@@ -131,6 +132,10 @@ func main() {
...
@@ -131,6 +132,10 @@ func main() {
console
:=
NewConsole
(
ethereum
)
console
:=
NewConsole
(
ethereum
)
go
console
.
Start
()
go
console
.
Start
()
}
}
if
StartRpc
{
ethereum
.
RpcServer
=
etherpc
.
NewJsonRpcServer
()
go
ethereum
.
RpcServer
.
Start
()
}
RegisterInterrupts
(
ethereum
)
RegisterInterrupts
(
ethereum
)
ethereum
.
Start
()
ethereum
.
Start
()
...
...
etherpc/packages.go
deleted
100644 → 0
View file @
1b597b8c
package
main
import
(
"encoding/json"
"errors"
"math/big"
)
type
MainPackage
struct
{}
type
JsonResponse
interface
{
requirements
()
error
}
type
BlockResponse
struct
{
Name
string
Id
int
}
type
GetBlockArgs
struct
{
JsonResponse
BlockNumber
int
Hash
string
}
type
ErrorResponse
struct
{
Error
bool
ErrorText
string
}
type
SuccessRes
struct
{
Error
bool
Message
string
}
func
NewSuccessRes
(
msg
string
)
string
{
e
:=
SuccessRes
{
Error
:
true
,
Message
:
msg
}
res
,
err
:=
json
.
Marshal
(
e
)
if
err
!=
nil
{
// This should never happen
panic
(
"Creating json error response failed, help"
)
}
return
string
(
res
)
}
func
NewErrorResponse
(
msg
string
)
error
{
e
:=
ErrorResponse
{
Error
:
true
,
ErrorText
:
msg
}
res
,
err
:=
json
.
Marshal
(
e
)
if
err
!=
nil
{
// This should never happen
panic
(
"Creating json error response failed, help"
)
}
newErr
:=
errors
.
New
(
string
(
res
))
return
newErr
}
func
(
b
*
GetBlockArgs
)
requirements
()
error
{
if
b
.
BlockNumber
==
0
&&
b
.
Hash
==
""
{
return
NewErrorResponse
(
"This call requires either a block 'number' or a block 'hash' as argument"
)
}
return
nil
}
func
(
p
*
MainPackage
)
GetBlock
(
args
*
GetBlockArgs
,
reply
*
BlockResponse
)
error
{
err
:=
args
.
requirements
()
if
err
!=
nil
{
return
err
}
// Do something
return
nil
}
type
NewTxArgs
struct
{
Sec
string
Recipient
string
Value
*
big
.
Int
Gas
*
big
.
Int
GasPrice
*
big
.
Int
Init
string
Body
string
}
type
TxResponse
struct
{
}
func
(
a
*
NewTxArgs
)
requirements
()
error
{
if
a
.
Recipient
==
""
{
return
NewErrorResponse
(
"Transact requires a 'recipient' address as argument"
)
}
if
a
.
Value
==
nil
{
return
NewErrorResponse
(
"Transact requires a 'value' as argument"
)
}
if
a
.
Gas
==
nil
{
return
NewErrorResponse
(
"Transact requires a 'gas' value as argument"
)
}
if
a
.
GasPrice
==
nil
{
return
NewErrorResponse
(
"Transact requires a 'gasprice' value as argument"
)
}
return
nil
}
func
(
a
*
NewTxArgs
)
requirementsContract
()
error
{
if
a
.
Value
==
nil
{
return
NewErrorResponse
(
"Create requires a 'value' as argument"
)
}
if
a
.
Gas
==
nil
{
return
NewErrorResponse
(
"Create requires a 'gas' value as argument"
)
}
if
a
.
GasPrice
==
nil
{
return
NewErrorResponse
(
"Create requires a 'gasprice' value as argument"
)
}
if
a
.
Init
==
""
{
return
NewErrorResponse
(
"Create requires a 'init' value as argument"
)
}
if
a
.
Body
==
""
{
return
NewErrorResponse
(
"Create requires a 'body' value as argument"
)
}
return
nil
}
func
(
p
*
MainPackage
)
Transact
(
args
*
NewTxArgs
,
reply
*
TxResponse
)
error
{
err
:=
args
.
requirements
()
if
err
!=
nil
{
return
err
}
return
nil
}
func
(
p
*
MainPackage
)
Create
(
args
*
NewTxArgs
,
reply
*
string
)
error
{
err
:=
args
.
requirementsContract
()
if
err
!=
nil
{
return
err
}
return
nil
}
func
(
p
*
MainPackage
)
getKey
(
args
interface
{},
reply
*
string
)
error
{
return
nil
}
type
GetStorageArgs
struct
{
Address
string
Key
string
}
func
(
a
*
GetStorageArgs
)
requirements
()
error
{
if
a
.
Address
==
""
{
return
NewErrorResponse
(
"GetStorageAt requires an 'address' value as argument"
)
}
if
a
.
Key
==
""
{
return
NewErrorResponse
(
"GetStorageAt requires an 'key' value as argument"
)
}
return
nil
}
func
(
p
*
MainPackage
)
getStorageAt
(
args
*
GetStorageArgs
,
reply
*
string
)
error
{
err
:=
args
.
requirements
()
if
err
!=
nil
{
return
err
}
return
nil
}
type
GetBalanceArgs
struct
{
Address
string
}
func
(
a
*
GetBalanceArgs
)
requirements
()
error
{
if
a
.
Address
==
""
{
return
NewErrorResponse
(
"GetBalanceAt requires an 'address' value as argument"
)
}
return
nil
}
func
(
p
*
MainPackage
)
GetBalanceAt
(
args
*
GetBalanceArgs
,
reply
*
string
)
error
{
err
:=
args
.
requirements
()
if
err
!=
nil
{
return
err
}
return
nil
}
func
(
p
*
MainPackage
)
Test
(
args
*
GetBlockArgs
,
reply
*
int
)
error
{
*
reply
=
15
return
nil
}
etherpc/server.go
deleted
100644 → 0
View file @
1b597b8c
package
main
import
(
"log"
"net"
"net/rpc"
"net/rpc/jsonrpc"
)
type
JsonRpcServer
struct
{
quit
chan
bool
listener
net
.
Listener
}
func
(
s
*
JsonRpcServer
)
exitHandler
()
{
out
:
for
{
select
{
case
<-
s
.
quit
:
s
.
listener
.
Close
()
break
out
}
}
// ethutil.Config.Log.Infoln("[JSON] Shutdown JSON-RPC server")
log
.
Println
(
"[JSON] Shutdown JSON-RPC server"
)
}
func
(
s
*
JsonRpcServer
)
Stop
()
{
close
(
s
.
quit
)
}
func
(
s
*
JsonRpcServer
)
Start
()
{
// ethutil.Config.Log.Infoln("[JSON] Starting JSON-RPC server")
log
.
Println
(
"[JSON] Starting JSON-RPC server"
)
go
s
.
exitHandler
()
rpc
.
Register
(
new
(
MainPackage
))
rpc
.
HandleHTTP
()
for
{
conn
,
err
:=
s
.
listener
.
Accept
()
if
err
!=
nil
{
// ethutil.Config.Log.Infoln("[JSON] Error starting JSON-RPC:", err)
log
.
Println
(
"[JSON] Error starting JSON-RPC:"
,
err
)
continue
}
log
.
Println
(
"Incoming request"
)
go
jsonrpc
.
ServeConn
(
conn
)
}
}
func
NewJsonRpcServer
()
*
JsonRpcServer
{
l
,
err
:=
net
.
Listen
(
"tcp"
,
":30304"
)
if
err
!=
nil
{
// ethutil.Config.Log.Infoln("Error starting JSON-RPC")
log
.
Println
(
"Error starting JSON-RPC"
)
}
return
&
JsonRpcServer
{
listener
:
l
,
quit
:
make
(
chan
bool
),
}
}
func
main
()
{
s
:=
NewJsonRpcServer
()
s
.
Start
()
/*
conn, err := net.Dial("tcp", "localhost:30304")
if err != nil {
panic(err)
}
defer conn.Close()
c := jsonrpc.NewClient(conn)
var reply int
err = c.Call("MainPackage.Test", nil, &reply)
log.Println("ERR:", err)
log.Println("result:", reply)
*/
}
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