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 (
var
StartConsole
bool
var
StartMining
bool
var
StartRpc
bool
var
UseUPnP
bool
var
OutboundPort
string
var
ShowGenesis
bool
...
...
@@ -21,6 +22,7 @@ var AssetPath string
func
Init
()
{
flag
.
BoolVar
(
&
StartConsole
,
"c"
,
false
,
"debug and testing console"
)
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
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
...
...
ethereum/config.go
View file @
3424bf17
...
...
@@ -6,6 +6,7 @@ import (
var
StartConsole
bool
var
StartMining
bool
var
StartRpc
bool
var
UseUPnP
bool
var
OutboundPort
string
var
ShowGenesis
bool
...
...
@@ -24,6 +25,7 @@ func Init() {
flag
.
BoolVar
(
&
StartMining
,
"m"
,
false
,
"start dagger mining"
)
flag
.
BoolVar
(
&
ShowGenesis
,
"g"
,
false
,
"prints genesis header and exits"
)
//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
(
&
UseUPnP
,
"upnp"
,
false
,
"enable UPnP support"
)
flag
.
BoolVar
(
&
UseSeed
,
"seed"
,
true
,
"seed peers"
)
...
...
ethereum/ethereum.go
View file @
3424bf17
...
...
@@ -4,6 +4,7 @@ import (
"fmt"
"github.com/ethereum/eth-go"
"github.com/ethereum/eth-go/ethchain"
"github.com/ethereum/eth-go/etherpc"
"github.com/ethereum/eth-go/ethminer"
"github.com/ethereum/eth-go/ethutil"
"github.com/ethereum/go-ethereum/utils"
...
...
@@ -131,6 +132,10 @@ func main() {
console
:=
NewConsole
(
ethereum
)
go
console
.
Start
()
}
if
StartRpc
{
ethereum
.
RpcServer
=
etherpc
.
NewJsonRpcServer
()
go
ethereum
.
RpcServer
.
Start
()
}
RegisterInterrupts
(
ethereum
)
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