Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
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
link33
plugin
Commits
82b582dc
Commit
82b582dc
authored
Nov 30, 2018
by
张振华
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
guess
parent
80bdb1bb
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
701 additions
and
2226 deletions
+701
-2226
game.go
plugin/dapp/guess/commands/game.go
+3
-5
exec_del_local.go
plugin/dapp/guess/executor/exec_del_local.go
+57
-18
exec_local.go
plugin/dapp/guess/executor/exec_local.go
+33
-23
guess.go
plugin/dapp/guess/executor/guess.go
+23
-187
guessdb.go
plugin/dapp/guess/executor/guessdb.go
+23
-267
keys.go
plugin/dapp/guess/executor/keys.go
+192
-0
query.go
plugin/dapp/guess/executor/query.go
+2
-2
guess.proto
plugin/dapp/guess/proto/guess.proto
+10
-161
jrpc.go
plugin/dapp/guess/rpc/jrpc.go
+3
-2
const.go
plugin/dapp/guess/types/const.go
+0
-11
guess.pb.go
plugin/dapp/guess/types/guess.pb.go
+204
-1550
types.go
plugin/dapp/guess/types/types.go
+151
-0
No files found.
plugin/dapp/guess/commands/game.go
View file @
82b582dc
...
...
@@ -5,12 +5,7 @@
package
commands
import
(
"fmt"
"go.uber.org/zap"
"strconv"
jsonrpc
"github.com/33cn/chain33/rpc/jsonclient"
"github.com/33cn/chain33/types"
pkt
"github.com/33cn/plugin/plugin/dapp/guess/types"
"github.com/spf13/cobra"
)
...
...
@@ -231,7 +226,9 @@ func addGuessQueryFlags(cmd *cobra.Command) {
cmd
.
Flags
()
.
StringP
(
"gameIDs"
,
"d"
,
""
,
"gameIDs"
)
}
func
guessQuery
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
/*
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
gameID, _ := cmd.Flags().GetString("gameID")
address, _ := cmd.Flags().GetString("address")
...
...
@@ -279,4 +276,5 @@ func guessQuery(cmd *cobra.Command, args []string) {
fmt.Println("Error: requeres at least one of gameID, address or status")
cmd.Help()
}
*/
}
plugin/dapp/guess/executor/exec_del_local.go
View file @
82b582dc
...
...
@@ -6,32 +6,66 @@ package executor
import
(
"github.com/33cn/chain33/types"
pkt
"github.com/33cn/plugin/plugin/dapp/
pokerbull
/types"
pkt
"github.com/33cn/plugin/plugin/dapp/
guess
/types"
)
func
(
g
*
PokerBull
)
rollbackIndex
(
log
*
pkt
.
ReceiptPBGame
)
(
kvs
[]
*
types
.
KeyValue
)
{
kvs
=
append
(
kvs
,
delPBGameStatusAndPlayer
(
log
.
Status
,
log
.
PlayerNum
,
log
.
Value
,
log
.
Index
))
kvs
=
append
(
kvs
,
addPBGameStatusAndPlayer
(
log
.
PreStatus
,
log
.
PlayerNum
,
log
.
PrevIndex
,
log
.
Value
,
log
.
GameId
))
kvs
=
append
(
kvs
,
delPBGameStatusIndexKey
(
log
.
Status
,
log
.
Index
))
kvs
=
append
(
kvs
,
addPBGameStatusIndexKey
(
log
.
PreStatus
,
log
.
GameId
,
log
.
PrevIndex
))
func
(
g
*
Guess
)
rollbackIndex
(
log
*
pkt
.
ReceiptGuessGame
)
(
kvs
[]
*
types
.
KeyValue
)
{
//新创建游戏,将增加的记录都删除掉
if
log
.
Status
==
pkt
.
GuessGameStatusStart
{
//kvs = append(kvs, addGuessGameAddrIndexKey(log.Status, log.Addr, log.GameId, log.Index))
kvs
=
append
(
kvs
,
delGuessGameStatusIndexKey
(
log
.
Status
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameAdminIndexKey
(
log
.
AdminAddr
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameAdminStatusIndexKey
(
log
.
Status
,
log
.
AdminAddr
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameCategoryStatusIndexKey
(
log
.
Status
,
log
.
Category
,
log
.
Index
))
}
else
if
log
.
Status
==
pkt
.
GuessGameStatusBet
{
//如果是下注状态,则有用户进行了下注操作,对这些记录进行删除
kvs
=
append
(
kvs
,
delGuessGameAddrIndexKey
(
log
.
Addr
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameAddrStatusIndexKey
(
log
.
Status
,
log
.
Addr
,
log
.
Index
))
for
_
,
v
:=
range
log
.
Players
{
kvs
=
append
(
kvs
,
delPBGameAddrIndexKey
(
v
,
log
.
Index
))
kvs
=
append
(
kvs
,
addPBGameAddrIndexKey
(
log
.
PreStatus
,
v
,
log
.
GameId
,
log
.
PrevIndex
))
//如果发生了状态变化,恢复老状态的记录,删除新添加的状态记录
if
log
.
StatusChange
{
kvs
=
append
(
kvs
,
addGuessGameStatusIndexKey
(
log
.
PreStatus
,
log
.
GameId
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
addGuessGameAdminStatusIndexKey
(
log
.
PreStatus
,
log
.
AdminAddr
,
log
.
GameId
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
addGuessGameCategoryStatusIndexKey
(
log
.
PreStatus
,
log
.
Category
,
log
.
GameId
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameStatusIndexKey
(
log
.
Status
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameAdminStatusIndexKey
(
log
.
Status
,
log
.
AdminAddr
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameCategoryStatusIndexKey
(
log
.
Status
,
log
.
Category
,
log
.
Index
))
}
}
else
if
log
.
StatusChange
{
//其他状态时的状态发生变化的情况,要将老状态对应的记录恢复,同时删除新加的状态记录;对于每个地址的下注记录也需要遍历处理。
kvs
=
append
(
kvs
,
addGuessGameStatusIndexKey
(
log
.
PreStatus
,
log
.
GameId
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
addGuessGameAdminStatusIndexKey
(
log
.
PreStatus
,
log
.
AdminAddr
,
log
.
GameId
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
addGuessGameCategoryStatusIndexKey
(
log
.
PreStatus
,
log
.
Category
,
log
.
GameId
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameStatusIndexKey
(
log
.
Status
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameAdminStatusIndexKey
(
log
.
Status
,
log
.
AdminAddr
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameCategoryStatusIndexKey
(
log
.
Status
,
log
.
Category
,
log
.
Index
))
//从game中遍历每个地址的记录进行删除新增记录,回复老记录
game
,
err
:=
readGame
(
g
.
GetStateDB
(),
log
.
GameId
)
if
err
==
nil
{
for
i
:=
0
;
i
<
len
(
game
.
Plays
);
i
++
{
player
:=
game
.
Plays
[
i
]
kvs
=
append
(
kvs
,
addGuessGameAddrStatusIndexKey
(
log
.
PreStatus
,
player
.
Addr
,
log
.
GameId
,
player
.
Bet
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameAddrStatusIndexKey
(
log
.
Status
,
player
.
Addr
,
log
.
Index
)
}
}
}
return
kvs
}
func
(
g
*
PokerBull
)
execDelLocal
(
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
g
*
Guess
)
execDelLocal
(
receiptData
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
dbSet
:=
&
types
.
LocalDBSet
{}
if
receiptData
.
GetTy
()
!=
types
.
ExecOk
{
return
dbSet
,
nil
}
for
_
,
log
:=
range
receiptData
.
Logs
{
switch
log
.
GetTy
()
{
case
pkt
.
TyLog
PBGameStart
,
pkt
.
TyLogPBGameContinue
,
pkt
.
TyLogPBGameQui
t
:
receiptGame
:=
&
pkt
.
Receipt
PB
Game
{}
case
pkt
.
TyLog
GuessGameStart
,
pkt
.
TyLogGuessGameBet
,
pkt
.
TyLogGuessGameStopBet
,
pkt
.
TyLogGuessGameAbort
,
pkt
.
TyLogGuessGamePublish
,
pkt
.
TyLogGuessGameTimeou
t
:
receiptGame
:=
&
pkt
.
Receipt
Guess
Game
{}
if
err
:=
types
.
Decode
(
log
.
Log
,
receiptGame
);
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -42,14 +76,18 @@ func (g *PokerBull) execDelLocal(receiptData *types.ReceiptData) (*types.LocalDB
return
dbSet
,
nil
}
func
(
g
*
PokerBull
)
ExecDelLocal_Start
(
payload
*
pkt
.
PB
GameStart
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
exec
Del
Local
(
receiptData
)
func
(
g
*
Guess
)
ExecDelLocal_Start
(
payload
*
pkt
.
Guess
GameStart
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
execLocal
(
receiptData
)
}
func
(
g
*
PokerBull
)
ExecDelLocal_Continue
(
payload
*
pkt
.
PBGameContinue
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
exec
Del
Local
(
receiptData
)
func
(
g
*
Guess
)
ExecDelLocal_Bet
(
payload
*
pkt
.
GuessGameBet
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
execLocal
(
receiptData
)
}
func
(
g
*
PokerBull
)
ExecDelLocal_Quit
(
payload
*
pkt
.
PBGameQuit
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
exec
Del
Local
(
receiptData
)
func
(
g
*
Guess
)
ExecDelLocal_Publish
(
payload
*
pkt
.
GuessGamePublish
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
execLocal
(
receiptData
)
}
func
(
g
*
Guess
)
ExecDelLocal_Abort
(
payload
*
pkt
.
GuessGameAbort
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
execLocal
(
receiptData
)
}
\ No newline at end of file
plugin/dapp/guess/executor/exec_local.go
View file @
82b582dc
...
...
@@ -9,27 +9,28 @@ import (
pkt
"github.com/33cn/plugin/plugin/dapp/guess/types"
)
func
(
c
*
Guess
)
updateIndex
(
log
*
pkt
.
ReceiptGuessGame
)
(
kvs
[]
*
types
.
KeyValue
)
{
func
(
g
*
Guess
)
updateIndex
(
log
*
pkt
.
ReceiptGuessGame
)
(
kvs
[]
*
types
.
KeyValue
)
{
//新创建游戏
if
log
.
Status
==
pkt
.
GuessGameStatusStart
{
//kvs = append(kvs, addGuessGameAddrIndexKey(log.Status, log.Addr, log.GameId, log.Index))
kvs
=
append
(
kvs
,
addGuessGameStatusIndexKey
(
log
.
Status
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameAdminIndexKey
(
log
.
Status
,
log
.
Addr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameAdminIndexKey
(
log
.
Status
,
log
.
Ad
minAd
dr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameAdminStatusIndexKey
(
log
.
Status
,
log
.
AdminAddr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameCategoryStatusIndexKey
(
log
.
Status
,
log
.
Category
,
log
.
GameId
,
log
.
Index
))
}
else
if
log
.
Status
==
pkt
.
GuessGameStatusBet
{
//如果是下注状态,则有用户进行了下注操作
kvs
=
append
(
kvs
,
addGuessGameAddrIndexKey
(
log
.
Status
,
log
.
Addr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameAddrStatusIndexKey
(
log
.
Status
,
log
.
Addr
,
log
.
GameId
,
log
.
Index
))
//如果发生了状态变化,则是从start->bet,对于老状态的记录进行删除操作,并增加新状态记录
if
log
.
StatusChange
{
kvs
=
append
(
kvs
,
addGuessGameStatusIndexKey
(
log
.
Status
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameAdminStatusIndexKey
(
log
.
Status
,
log
.
AdminAddr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameCategoryStatusIndexKey
(
log
.
Status
,
log
.
Category
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameStatusIndexKey
(
log
.
Status
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameAdminStatusIndexKey
(
log
.
Status
,
log
.
AdminAddr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameAddrStatusIndexKey
(
log
.
Status
,
log
.
Addr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
addGuessGameCategoryStatusIndexKey
(
log
.
Status
,
log
.
Category
,
log
.
GameId
,
log
.
Index
))
//对于老状态进行删除
kvs
=
append
(
kvs
,
delGuessGameStatusIndexKey
(
log
.
PreStatus
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameAdminStatusIndexKey
(
log
.
PreStatus
,
log
.
AdminAddr
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameCategoryStatusIndexKey
(
log
.
PreStatus
,
log
.
Category
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameStatusIndexKey
(
log
.
PreStatus
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameAdminStatusIndexKey
(
log
.
PreStatus
,
log
.
AdminAddr
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameCategoryStatusIndexKey
(
log
.
PreStatus
,
log
.
Category
,
log
.
PreIndex
))
}
}
else
if
log
.
StatusChange
{
//其他状态时的状态发生变化,要将老状态对应的记录删除,同时加入新状态记录;对于每个地址的下注记录也需要遍历处理。
kvs
=
append
(
kvs
,
addGuessGameStatusIndexKey
(
log
.
Status
,
log
.
GameId
,
log
.
Index
))
...
...
@@ -40,17 +41,21 @@ func (c *Guess) updateIndex(log *pkt.ReceiptGuessGame) (kvs []*types.KeyValue) {
kvs
=
append
(
kvs
,
delGuessGameAdminStatusIndexKey
(
log
.
PreStatus
,
log
.
AdminAddr
,
log
.
PreIndex
))
kvs
=
append
(
kvs
,
delGuessGameCategoryStatusIndexKey
(
log
.
PreStatus
,
log
.
Category
,
log
.
PreIndex
))
//从game中遍历每个地址的记录进行新增和删除
kvs
=
append
(
kvs
,
addGuessGameAddrStatusIndexKey
(
log
.
Status
,
log
.
Addr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameAddrStatusIndexKey
(
log
.
Status
,
log
.
Addr
,
log
.
Index
))
//从game中遍历每个地址的记录进行新状态记录的增和老状态记录的删除
game
,
err
:=
readGame
(
g
.
GetStateDB
(),
log
.
GameId
)
if
err
==
nil
{
for
i
:=
0
;
i
<
len
(
game
.
Plays
);
i
++
{
player
:=
game
.
Plays
[
i
]
kvs
=
append
(
kvs
,
addGuessGameAddrStatusIndexKey
(
log
.
Status
,
player
.
Addr
,
log
.
GameId
,
log
.
Index
))
kvs
=
append
(
kvs
,
delGuessGameAddrStatusIndexKey
(
log
.
PreStatus
,
player
.
Addr
,
player
.
Bet
.
PreIndex
)
}
}
}
return
kvs
}
func
(
c
*
Guess
)
execLocal
(
receipt
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
func
(
g
*
Guess
)
execLocal
(
receipt
*
types
.
ReceiptData
)
(
*
types
.
LocalDBSet
,
error
)
{
dbSet
:=
&
types
.
LocalDBSet
{}
if
receipt
.
GetTy
()
!=
types
.
ExecOk
{
return
dbSet
,
nil
...
...
@@ -63,21 +68,25 @@ func (c *Guess) execLocal(receipt *types.ReceiptData) (*types.LocalDBSet, error)
if
err
!=
nil
{
panic
(
err
)
//数据错误了,已经被修改了
}
kv
:=
c
.
updateIndex
(
&
Gamelog
)
kv
:=
g
.
updateIndex
(
&
Gamelog
)
dbSet
.
KV
=
append
(
dbSet
.
KV
,
kv
...
)
}
}
return
dbSet
,
nil
}
func
(
c
*
Guess
)
ExecLocal_Start
(
payload
*
pkt
.
PB
GameStart
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
c
.
execLocal
(
receiptData
)
func
(
g
*
Guess
)
ExecLocal_Start
(
payload
*
pkt
.
Guess
GameStart
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
execLocal
(
receiptData
)
}
func
(
c
*
Guess
)
ExecLocal_Continue
(
payload
*
pkt
.
PBGameContinue
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
c
.
execLocal
(
receiptData
)
func
(
g
*
Guess
)
ExecLocal_Bet
(
payload
*
pkt
.
GuessGameBet
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
execLocal
(
receiptData
)
}
func
(
c
*
Guess
)
ExecLocal_Quit
(
payload
*
pkt
.
PBGameQuit
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
c
.
execLocal
(
receiptData
)
func
(
g
*
Guess
)
ExecLocal_Publish
(
payload
*
pkt
.
GuessGamePublish
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
execLocal
(
receiptData
)
}
func
(
g
*
Guess
)
ExecLocal_Abort
(
payload
*
pkt
.
GuessGameAbort
,
tx
*
types
.
Transaction
,
receiptData
*
types
.
ReceiptData
,
index
int
)
(
*
types
.
LocalDBSet
,
error
)
{
return
g
.
execLocal
(
receiptData
)
}
\ No newline at end of file
plugin/dapp/guess/executor/guess.go
View file @
82b582dc
...
...
@@ -5,8 +5,6 @@
package
executor
import
(
"fmt"
log
"github.com/33cn/chain33/common/log/log15"
drivers
"github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types"
...
...
@@ -15,10 +13,6 @@ import (
var
logger
=
log
.
New
(
"module"
,
"execs.guess"
)
func
Init
(
name
string
,
sub
[]
byte
)
{
drivers
.
Register
(
newGuessGame
()
.
GetName
(),
newGuessGame
,
types
.
GetDappFork
(
driverName
,
"Enable"
))
}
var
driverName
=
pkt
.
GuessX
func
init
()
{
...
...
@@ -26,6 +20,25 @@ func init() {
ety
.
InitFuncList
(
types
.
ListMethod
(
&
Guess
{}))
}
type
subConfig
struct
{
ParaRemoteGrpcClient
string
`json:"paraRemoteGrpcClient"`
}
var
cfg
subConfig
// Init Guess
func
Init
(
name
string
,
sub
[]
byte
)
{
driverName
:=
GetName
()
if
name
!=
driverName
{
panic
(
"system dapp can't be rename"
)
}
if
sub
!=
nil
{
types
.
MustDecode
(
sub
,
&
cfg
)
}
drivers
.
Register
(
driverName
,
newGuessGame
,
types
.
GetDappFork
(
driverName
,
"Enable"
))
}
type
Guess
struct
{
drivers
.
DriverBase
}
...
...
@@ -45,186 +58,8 @@ func (g *Guess) GetDriverName() string {
return
pkt
.
GuessX
}
//addr prefix
func
calcGuessGameAddrPrefix
(
addr
string
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-addr:%s:"
,
addr
)
return
[]
byte
(
key
)
}
//addr index
func
calcGuessGameAddrKey
(
addr
string
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-addr:%s:%018d"
,
addr
,
index
)
return
[]
byte
(
key
)
}
//status prefix
func
calcGuessGameStatusPrefix
(
status
int32
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-status-index:%d:"
,
status
)
return
[]
byte
(
key
)
}
//status index
func
calcGuessGameStatusKey
(
status
int32
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-status-index:%d:%018d"
,
status
,
index
)
return
[]
byte
(
key
)
}
//addr status prefix
func
calcGuessGameAddrStatusPrefix
(
addr
string
,
status
int32
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-addr-status-index:%s:%d:"
,
addr
,
status
)
return
[]
byte
(
key
)
}
//addr status index
func
calcGuessGameAddrStatusKey
(
addr
string
,
status
int32
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-addr-status-index:%s:%d:%018d"
,
addr
,
status
,
index
)
return
[]
byte
(
key
)
}
//admin prefix
func
calcGuessGameAdminPrefix
(
addr
string
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-admin:%s:"
,
addr
)
return
[]
byte
(
key
)
}
//admin index
func
calcGuessGameAdminKey
(
addr
string
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-admin:%s:%018d"
,
addr
,
index
)
return
[]
byte
(
key
)
}
//admin status prefix
func
calcGuessGameAdminStatusPrefix
(
admin
string
,
status
int32
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-admin-status-index:%s:%d:"
,
admin
,
status
)
return
[]
byte
(
key
)
}
//admin status index
func
calcGuessGameAdminStatusKey
(
admin
string
,
status
int32
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-admin-status-index:%s:%d:%018d"
,
admin
,
status
,
index
)
return
[]
byte
(
key
)
}
func
calcGuessGameCategoryStatusPrefix
(
category
string
,
status
int32
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-category-status-index:%s:%d:"
,
category
,
status
)
return
[]
byte
(
key
)
}
func
calcGuessGameCategoryStatusKey
(
category
string
,
status
int32
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-category-status-index:%s:%d:%018d"
,
category
,
status
,
index
)
return
[]
byte
(
key
)
}
func
addGuessGameAddrIndexKey
(
status
int32
,
addr
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAddrKey
(
addr
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameAddrIndexKey
(
addr
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAddrKey
(
addr
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameStatusIndexKey
(
status
int32
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameStatusKey
(
status
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameStatusIndexKey
(
status
int32
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameStatusKey
(
status
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameAddrStatusIndexKey
(
status
int32
,
addr
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAddrStatusKey
(
addr
,
status
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameAddrStatusIndexKey
(
status
int32
,
addr
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAddrStatusKey
(
addr
,
status
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameAdminIndexKey
(
status
int32
,
addr
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAdminKey
(
addr
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameAdminIndexKey
(
addr
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAdminKey
(
addr
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameAdminStatusIndexKey
(
status
int32
,
addr
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAdminStatusKey
(
addr
,
status
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameAdminStatusIndexKey
(
status
int32
,
addr
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAdminStatusKey
(
addr
,
status
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameCategoryStatusIndexKey
(
status
int32
,
category
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameCategoryStatusKey
(
category
,
status
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameCategoryStatusIndexKey
(
status
int32
,
category
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameCategoryStatusKey
(
category
,
status
,
index
)
kv
.
Value
=
nil
return
kv
// GetPayloadValue GuessAction
func
(
g
*
Guess
)
GetPayloadValue
()
types
.
Message
{
return
&
pkt
.
GuessGameAction
{}
}
\ No newline at end of file
plugin/dapp/guess/executor/guessdb.go
View file @
82b582dc
...
...
@@ -35,8 +35,6 @@ const (
MinBetTimeoutNum
=
8640
//从游戏结束下注开始,一局游戏最少的超时块数
MinBetTimeoutInterval
=
"24h"
//从游戏结束下注开始,一局游戏最短的超时时间
MIN_PLAY_VALUE
=
10
*
types
.
Coin
//DefaultStyle = pkt.PlayStyleDefault
MinOneBet
=
1
)
...
...
@@ -101,19 +99,6 @@ func readGame(db dbm.KV, id string) (*pkt.GuessGame, error) {
return
&
game
,
nil
}
//安全批量查询方式,防止因为脏数据导致查询接口奔溃
func
GetGameList
(
db
dbm
.
KV
,
values
[]
string
)
[]
*
pkt
.
GuessGame
{
var
games
[]
*
pkt
.
GuessGame
for
_
,
value
:=
range
values
{
game
,
err
:=
readGame
(
db
,
value
)
if
err
!=
nil
{
continue
}
games
=
append
(
games
,
game
)
}
return
games
}
func
Infos
(
db
dbm
.
KV
,
infos
*
pkt
.
QueryGuessGameInfos
)
(
types
.
Message
,
error
)
{
var
games
[]
*
pkt
.
GuessGame
for
i
:=
0
;
i
<
len
(
infos
.
GameIds
);
i
++
{
...
...
@@ -177,24 +162,6 @@ func getGameListByStatus(db dbm.Lister, status int32, index int64) (types.Messag
return
&
pkt
.
GuessGameRecords
{
Records
:
gameIds
},
nil
}
func
queryGameListByStatusAndPlayer
(
db
dbm
.
Lister
,
stat
int32
,
player
int32
,
value
int64
)
([]
string
,
error
)
{
values
,
err
:=
db
.
List
(
calcPBGameStatusAndPlayerPrefix
(
stat
,
player
,
value
),
nil
,
DefaultCount
,
ListDESC
)
if
err
!=
nil
{
return
nil
,
err
}
var
gameIds
[]
string
for
_
,
value
:=
range
values
{
var
record
pkt
.
PBGameIndexRecord
err
:=
types
.
Decode
(
value
,
&
record
)
if
err
!=
nil
{
continue
}
gameIds
=
append
(
gameIds
,
record
.
GetGameId
())
}
return
gameIds
,
nil
}
func
(
action
*
Action
)
saveGame
(
game
*
pkt
.
GuessGame
)
(
kvset
[]
*
types
.
KeyValue
)
{
value
:=
types
.
Encode
(
game
)
...
...
@@ -241,7 +208,7 @@ func (action *Action) readGame(id string) (*pkt.GuessGame, error) {
if
err
!=
nil
{
return
nil
,
err
}
var
game
pkt
.
PokerBull
var
game
pkt
.
GuessGame
//decode
err
=
types
.
Decode
(
data
,
&
game
)
if
err
!=
nil
{
...
...
@@ -250,215 +217,6 @@ func (action *Action) readGame(id string) (*pkt.GuessGame, error) {
return
&
game
,
nil
}
func
(
action
*
Action
)
calculate
(
game
*
pkt
.
PokerBull
)
*
pkt
.
PBResult
{
var
handS
HandSlice
for
_
,
player
:=
range
game
.
Players
{
hand
:=
&
pkt
.
PBHand
{}
hand
.
Cards
=
Deal
(
game
.
Poker
,
player
.
TxHash
)
//发牌
hand
.
Result
=
Result
(
hand
.
Cards
)
//计算结果
hand
.
Address
=
player
.
Address
//存入玩家数组
player
.
Hands
=
append
(
player
.
Hands
,
hand
)
//存入临时切片待比大小排序
handS
=
append
(
handS
,
hand
)
//为下一个continue状态初始化player
player
.
Ready
=
false
}
// 升序排列
if
!
sort
.
IsSorted
(
handS
)
{
sort
.
Sort
(
handS
)
}
winner
:=
handS
[
len
(
handS
)
-
1
]
// 将有序的临时切片加入到结果数组
result
:=
&
pkt
.
PBResult
{}
result
.
Winner
=
winner
.
Address
//TODO Dealer:暂时不支持倍数
//result.Leverage = Leverage(winner)
result
.
Hands
=
make
([]
*
pkt
.
PBHand
,
len
(
handS
))
copy
(
result
.
Hands
,
handS
)
game
.
Results
=
append
(
game
.
Results
,
result
)
return
result
}
func
(
action
*
Action
)
calculateDealer
(
game
*
pkt
.
PokerBull
)
*
pkt
.
PBResult
{
var
handS
HandSlice
var
dealer
*
pkt
.
PBHand
for
_
,
player
:=
range
game
.
Players
{
hand
:=
&
pkt
.
PBHand
{}
hand
.
Cards
=
Deal
(
game
.
Poker
,
player
.
TxHash
)
//发牌
hand
.
Result
=
Result
(
hand
.
Cards
)
//计算结果
hand
.
Address
=
player
.
Address
//存入玩家数组
player
.
Hands
=
append
(
player
.
Hands
,
hand
)
//存入临时切片待比大小排序
handS
=
append
(
handS
,
hand
)
//为下一个continue状态初始化player
player
.
Ready
=
false
//记录庄家
if
player
.
Address
==
game
.
DealerAddr
{
dealer
=
hand
}
}
for
_
,
hand
:=
range
handS
{
if
hand
.
Address
==
game
.
DealerAddr
{
continue
}
if
CompareResult
(
hand
,
dealer
)
{
hand
.
IsWin
=
false
}
else
{
hand
.
IsWin
=
true
hand
.
Leverage
=
Leverage
(
hand
)
}
}
// 将有序的临时切片加入到结果数组
result
:=
&
pkt
.
PBResult
{}
result
.
Dealer
=
game
.
DealerAddr
result
.
DealerLeverage
=
Leverage
(
dealer
)
result
.
Hands
=
make
([]
*
pkt
.
PBHand
,
len
(
handS
))
copy
(
result
.
Hands
,
handS
)
game
.
Results
=
append
(
game
.
Results
,
result
)
return
result
}
func
(
action
*
Action
)
nextDealer
(
game
*
pkt
.
PokerBull
)
string
{
var
flag
=
-
1
for
i
,
player
:=
range
game
.
Players
{
if
player
.
Address
==
game
.
DealerAddr
{
flag
=
i
}
}
if
flag
==
-
1
{
logger
.
Error
(
"Get next dealer failed."
)
return
game
.
DealerAddr
}
if
flag
==
len
(
game
.
Players
)
-
1
{
return
game
.
Players
[
0
]
.
Address
}
return
game
.
Players
[
flag
+
1
]
.
Address
}
func
(
action
*
Action
)
settleDealerAccount
(
lastAddress
string
,
game
*
pkt
.
PokerBull
)
([]
*
types
.
ReceiptLog
,
[]
*
types
.
KeyValue
,
error
)
{
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
result
:=
action
.
calculateDealer
(
game
)
for
_
,
hand
:=
range
result
.
Hands
{
// 最后一名玩家没有冻结
if
hand
.
Address
!=
lastAddress
{
receipt
,
err
:=
action
.
coinsAccount
.
ExecActive
(
hand
.
Address
,
action
.
execaddr
,
game
.
GetValue
()
*
POKERBULL_LEVERAGE_MAX
)
if
err
!=
nil
{
logger
.
Error
(
"GameSettleDealer.ExecActive"
,
"addr"
,
hand
.
Address
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
game
.
GetValue
(),
"err"
,
err
)
return
nil
,
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
//给赢家转账
var
receipt
*
types
.
Receipt
var
err
error
if
hand
.
Address
!=
result
.
Dealer
{
if
hand
.
IsWin
{
receipt
,
err
=
action
.
coinsAccount
.
ExecTransfer
(
result
.
Dealer
,
hand
.
Address
,
action
.
execaddr
,
game
.
GetValue
()
*
int64
(
hand
.
Leverage
))
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
hand
.
Address
,
action
.
execaddr
,
game
.
GetValue
())
// rollback
logger
.
Error
(
"GameSettleDealer.ExecTransfer"
,
"addr"
,
hand
.
Address
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
game
.
GetValue
()
*
int64
(
hand
.
Leverage
),
"err"
,
err
)
return
nil
,
nil
,
err
}
}
else
{
receipt
,
err
=
action
.
coinsAccount
.
ExecTransfer
(
hand
.
Address
,
result
.
Dealer
,
action
.
execaddr
,
game
.
GetValue
()
*
int64
(
result
.
DealerLeverage
))
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
hand
.
Address
,
action
.
execaddr
,
game
.
GetValue
())
// rollback
logger
.
Error
(
"GameSettleDealer.ExecTransfer"
,
"addr"
,
hand
.
Address
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
game
.
GetValue
()
*
int64
(
result
.
DealerLeverage
),
"err"
,
err
)
return
nil
,
nil
,
err
}
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
}
game
.
DealerAddr
=
action
.
nextDealer
(
game
)
return
logs
,
kv
,
nil
}
func
(
action
*
Action
)
settleDefaultAccount
(
lastAddress
string
,
game
*
pkt
.
PokerBull
)
([]
*
types
.
ReceiptLog
,
[]
*
types
.
KeyValue
,
error
)
{
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
result
:=
action
.
calculate
(
game
)
for
_
,
player
:=
range
game
.
Players
{
// 最后一名玩家没有冻结
if
player
.
Address
!=
lastAddress
{
receipt
,
err
:=
action
.
coinsAccount
.
ExecActive
(
player
.
GetAddress
(),
action
.
execaddr
,
game
.
GetValue
()
*
POKERBULL_LEVERAGE_MAX
)
if
err
!=
nil
{
logger
.
Error
(
"GameSettleDefault.ExecActive"
,
"addr"
,
player
.
GetAddress
(),
"execaddr"
,
action
.
execaddr
,
"amount"
,
game
.
GetValue
()
*
POKERBULL_LEVERAGE_MAX
,
"err"
,
err
)
return
nil
,
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
//给赢家转账
if
player
.
Address
!=
result
.
Winner
{
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
player
.
Address
,
result
.
Winner
,
action
.
execaddr
,
game
.
GetValue
()
/**int64(result.Leverage)*/
)
//TODO Dealer:暂时不支持倍数
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
result
.
Winner
,
action
.
execaddr
,
game
.
GetValue
())
// rollback
logger
.
Error
(
"GameSettleDefault.ExecTransfer"
,
"addr"
,
result
.
Winner
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
game
.
GetValue
()
/**int64(result.Leverage)*/
,
"err"
,
err
)
//TODO Dealer:暂时不支持倍数
return
nil
,
nil
,
err
}
logs
=
append
(
logs
,
receipt
.
Logs
...
)
kv
=
append
(
kv
,
receipt
.
KV
...
)
}
}
return
logs
,
kv
,
nil
}
func
(
action
*
Action
)
settleAccount
(
lastAddress
string
,
game
*
pkt
.
PokerBull
)
([]
*
types
.
ReceiptLog
,
[]
*
types
.
KeyValue
,
error
)
{
if
DefaultStyle
==
pkt
.
PlayStyleDealer
{
return
action
.
settleDealerAccount
(
lastAddress
,
game
)
}
else
{
return
action
.
settleDefaultAccount
(
lastAddress
,
game
)
}
}
func
(
action
*
Action
)
genTxRnd
(
txhash
[]
byte
)
(
int64
,
error
)
{
randbyte
:=
make
([]
byte
,
7
)
for
i
:=
0
;
i
<
7
;
i
++
{
randbyte
[
i
]
=
txhash
[
i
]
}
randstr
:=
common
.
ToHex
(
randbyte
)
randint
,
err
:=
strconv
.
ParseInt
(
randstr
,
0
,
64
)
if
err
!=
nil
{
return
0
,
err
}
return
randint
,
nil
}
// 新建一局游戏
func
(
action
*
Action
)
newGame
(
gameId
string
,
start
*
pkt
.
GuessGameStart
)
(
*
pkt
.
GuessGame
,
error
)
{
game
:=
&
pkt
.
GuessGame
{
...
...
@@ -564,25 +322,6 @@ func (action *Action) GameStart(start *pkt.GuessGameStart) (*types.Receipt, erro
return
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
,
KV
:
kv
,
Logs
:
logs
},
nil
}
func
getReadyPlayerNum
(
players
[]
*
pkt
.
PBPlayer
)
int
{
var
readyC
=
0
for
_
,
player
:=
range
players
{
if
player
.
Ready
{
readyC
++
}
}
return
readyC
}
func
getPlayerFromAddress
(
players
[]
*
pkt
.
PBPlayer
,
addr
string
)
*
pkt
.
PBPlayer
{
for
_
,
player
:=
range
players
{
if
player
.
Address
==
addr
{
return
player
}
}
return
nil
}
func
(
action
*
Action
)
GameBet
(
pbBet
*
pkt
.
GuessGameBet
)
(
*
types
.
Receipt
,
error
)
{
var
logs
[]
*
types
.
ReceiptLog
var
kv
[]
*
types
.
KeyValue
...
...
@@ -606,6 +345,8 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
if
canBet
==
false
{
var
receiptLog
*
types
.
ReceiptLog
if
prevStatus
!=
game
.
Status
{
//状态发生了变化,且是变到了不可下注的状态,那么对于所有下注的addr来说,其addr:status主键的数据都需要更新
action
.
ChangeAllAddrIndex
(
game
)
receiptLog
=
action
.
GetReceiptLog
(
game
,
true
)
}
else
{
receiptLog
=
action
.
GetReceiptLog
(
game
,
false
)
...
...
@@ -643,7 +384,7 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
}
// 检查余额账户余额
checkValue
:=
int64
(
game
.
GetOneBet
()
*
pbBet
.
BetsNum
+
game
.
Fee
)
checkValue
:=
int64
(
game
.
GetOneBet
()
*
pbBet
.
BetsNum
)
if
!
action
.
CheckExecAccountBalance
(
action
.
fromaddr
,
checkValue
,
0
)
{
logger
.
Error
(
"GameBet"
,
"addr"
,
action
.
fromaddr
,
"execaddr"
,
action
.
execaddr
,
"id"
,
pbBet
.
GetGameId
(),
"err"
,
types
.
ErrNoBalance
)
...
...
@@ -664,6 +405,8 @@ func (action *Action) GameBet(pbBet *pkt.GuessGameBet) (*types.Receipt, error) {
var
receiptLog
*
types
.
ReceiptLog
if
prevStatus
!=
game
.
Status
{
//状态发生变化,更新所有addr对应记录的index
action
.
ChangeAllAddrIndex
(
game
)
receiptLog
=
action
.
GetReceiptLog
(
game
,
true
)
}
else
{
receiptLog
=
action
.
GetReceiptLog
(
game
,
false
)
...
...
@@ -739,7 +482,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
//先遍历所有下注数据,对于输家,转移资金到Admin账户合约地址;
for
i
:=
0
;
i
<
len
(
game
.
Plays
);
i
++
{
player
:=
game
.
Plays
[
i
]
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
game
.
OneBet
+
game
.
Fee
)
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
game
.
OneBet
)
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
player
.
Addr
,
game
.
AdminAddr
,
action
.
execaddr
,
value
)
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
game
.
AdminAddr
,
action
.
execaddr
,
value
)
// rollback
...
...
@@ -780,7 +523,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
//如果设置了手续费专用地址,则将本局游戏收取的手续费转移到专用地址
if
game
.
Fee
>
0
&&
len
(
game
.
FeeAddr
)
!=
0
&&
game
.
FeeAddr
!=
game
.
AdminAddr
{
value
:=
int64
(
game
.
Fee
*
uint32
(
len
(
game
.
Plays
))
value
:=
int64
(
uint32
(
game
.
Fee
)
*
uint32
(
len
(
game
.
Plays
))
receipt
,
err
:=
action
.
coinsAccount
.
ExecTransfer
(
game
.
AdminAddr
,
game
.
FeeAddr
,
action
.
execaddr
,
value
)
if
err
!=
nil
{
action
.
coinsAccount
.
ExecFrozen
(
game
.
FeeAddr
,
action
.
execaddr
,
value
)
// rollback
...
...
@@ -793,6 +536,7 @@ func (action *Action) GamePublish(publish *pkt.GuessGamePublish) (*types.Receipt
var
receiptLog
*
types
.
ReceiptLog
if
prevStatus
!=
game
.
Status
{
action
.
ChangeAllAddrIndex
(
game
)
receiptLog
=
action
.
GetReceiptLog
(
game
,
true
)
}
else
{
receiptLog
=
action
.
GetReceiptLog
(
game
,
false
)
...
...
@@ -837,7 +581,7 @@ func (action *Action) GameAbort(pbend *pkt.GuessGameAbort) (*types.Receipt, erro
//激活冻结账户
for
i
:=
0
;
i
<
len
(
game
.
Plays
);
i
++
{
player
:=
game
.
Plays
[
i
]
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
game
.
OneBet
+
game
.
Fee
)
value
:=
int64
(
player
.
Bet
.
BetsNumber
*
game
.
OneBet
+
uint32
(
game
.
Fee
)
)
receipt
,
err
:=
action
.
coinsAccount
.
ExecActive
(
player
.
Addr
,
action
.
execaddr
,
value
)
if
err
!=
nil
{
logger
.
Error
(
"GameAbort"
,
"addr"
,
player
.
Addr
,
"execaddr"
,
action
.
execaddr
,
"amount"
,
value
,
"err"
,
err
)
...
...
@@ -854,6 +598,9 @@ func (action *Action) GameAbort(pbend *pkt.GuessGameAbort) (*types.Receipt, erro
action
.
ChangeStatus
(
game
,
pkt
.
GuessGameStatusAbort
)
}
//状态发生变化,统一更新所有addr记录的index
action
.
ChangeAllAddrIndex
(
game
)
receiptLog
:=
action
.
GetReceiptLog
(
game
,
true
)
logs
=
append
(
logs
,
receiptLog
)
kv
=
append
(
kv
,
action
.
saveGame
(
game
)
...
)
...
...
@@ -888,7 +635,7 @@ func IsLegalOption(options []string, option string) bool {
return
false
}
func
(
action
*
Action
)
ChangeStatus
(
game
*
pkt
.
GuessGame
,
destStatus
u
int32
)
{
func
(
action
*
Action
)
ChangeStatus
(
game
*
pkt
.
GuessGame
,
destStatus
int32
)
{
if
game
.
Status
!=
destStatus
{
game
.
PreStatus
=
game
.
Status
game
.
PreIndex
=
game
.
Index
...
...
@@ -898,6 +645,15 @@ func (action *Action) ChangeStatus(game *pkt.GuessGame, destStatus uint32) {
return
}
func
(
action
*
Action
)
ChangeAllAddrIndex
(
game
*
pkt
.
GuessGame
)
{
for
i
:=
0
;
i
<
len
(
game
.
Plays
)
;
i
++
{
player
:=
game
.
Plays
[
i
]
player
.
Bet
.
PreIndex
=
player
.
Bet
.
Index
player
.
Bet
.
Index
=
game
.
Index
}
}
func
(
action
*
Action
)
RefreshStatusByTime
(
game
*
pkt
.
GuessGame
)
(
canBet
bool
)
{
// 检查区块高度是否超过最大下注高度限制,看是否可以下注
if
game
.
GetMaxHeight
()
<=
action
.
height
{
...
...
plugin/dapp/guess/executor/keys.go
0 → 100644
View file @
82b582dc
package
executor
import
(
"fmt"
"github.com/33cn/chain33/types"
pkt
"github.com/33cn/plugin/plugin/dapp/guess/types"
)
//addr prefix
func
calcGuessGameAddrPrefix
(
addr
string
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-addr:%s:"
,
addr
)
return
[]
byte
(
key
)
}
//addr index
func
calcGuessGameAddrKey
(
addr
string
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-addr:%s:%018d"
,
addr
,
index
)
return
[]
byte
(
key
)
}
//status prefix
func
calcGuessGameStatusPrefix
(
status
int32
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-status-index:%d:"
,
status
)
return
[]
byte
(
key
)
}
//status index
func
calcGuessGameStatusKey
(
status
int32
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-status-index:%d:%018d"
,
status
,
index
)
return
[]
byte
(
key
)
}
//addr status prefix
func
calcGuessGameAddrStatusPrefix
(
addr
string
,
status
int32
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-addr-status-index:%s:%d:"
,
addr
,
status
)
return
[]
byte
(
key
)
}
//addr status index
func
calcGuessGameAddrStatusKey
(
addr
string
,
status
int32
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-addr-status-index:%s:%d:%018d"
,
addr
,
status
,
index
)
return
[]
byte
(
key
)
}
//admin prefix
func
calcGuessGameAdminPrefix
(
addr
string
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-admin:%s:"
,
addr
)
return
[]
byte
(
key
)
}
//admin index
func
calcGuessGameAdminKey
(
addr
string
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-admin:%s:%018d"
,
addr
,
index
)
return
[]
byte
(
key
)
}
//admin status prefix
func
calcGuessGameAdminStatusPrefix
(
admin
string
,
status
int32
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-admin-status-index:%s:%d:"
,
admin
,
status
)
return
[]
byte
(
key
)
}
//admin status index
func
calcGuessGameAdminStatusKey
(
admin
string
,
status
int32
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-admin-status-index:%s:%d:%018d"
,
admin
,
status
,
index
)
return
[]
byte
(
key
)
}
func
calcGuessGameCategoryStatusPrefix
(
category
string
,
status
int32
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-category-status-index:%s:%d:"
,
category
,
status
)
return
[]
byte
(
key
)
}
func
calcGuessGameCategoryStatusKey
(
category
string
,
status
int32
,
index
int64
)
[]
byte
{
key
:=
fmt
.
Sprintf
(
"LODB-guess-category-status-index:%s:%d:%018d"
,
category
,
status
,
index
)
return
[]
byte
(
key
)
}
func
addGuessGameAddrIndexKey
(
status
int32
,
addr
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAddrKey
(
addr
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameAddrIndexKey
(
addr
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAddrKey
(
addr
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameStatusIndexKey
(
status
int32
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameStatusKey
(
status
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameStatusIndexKey
(
status
int32
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameStatusKey
(
status
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameAddrStatusIndexKey
(
status
int32
,
addr
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAddrStatusKey
(
addr
,
status
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameAddrStatusIndexKey
(
status
int32
,
addr
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAddrStatusKey
(
addr
,
status
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameAdminIndexKey
(
status
int32
,
addr
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAdminKey
(
addr
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameAdminIndexKey
(
addr
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAdminKey
(
addr
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameAdminStatusIndexKey
(
status
int32
,
addr
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAdminStatusKey
(
addr
,
status
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameAdminStatusIndexKey
(
status
int32
,
addr
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameAdminStatusKey
(
addr
,
status
,
index
)
kv
.
Value
=
nil
return
kv
}
func
addGuessGameCategoryStatusIndexKey
(
status
int32
,
category
,
gameID
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameCategoryStatusKey
(
category
,
status
,
index
)
record
:=
&
pkt
.
GuessGameRecord
{
GameId
:
gameID
,
Status
:
status
,
Index
:
index
,
}
kv
.
Value
=
types
.
Encode
(
record
)
return
kv
}
func
delGuessGameCategoryStatusIndexKey
(
status
int32
,
category
string
,
index
int64
)
*
types
.
KeyValue
{
kv
:=
&
types
.
KeyValue
{}
kv
.
Key
=
calcGuessGameCategoryStatusKey
(
category
,
status
,
index
)
kv
.
Value
=
nil
return
kv
}
plugin/dapp/guess/executor/query.go
View file @
82b582dc
...
...
@@ -9,7 +9,7 @@ import (
pkt
"github.com/33cn/plugin/plugin/dapp/guess/types"
)
func
(
g
*
Guess
)
Query_QueryGame
List
ByIds
(
in
*
pkt
.
QueryGuessGameInfos
)
(
types
.
Message
,
error
)
{
func
(
g
*
Guess
)
Query_QueryGame
s
ByIds
(
in
*
pkt
.
QueryGuessGameInfos
)
(
types
.
Message
,
error
)
{
return
Infos
(
g
.
GetStateDB
(),
in
)
}
...
...
@@ -18,7 +18,7 @@ func (g *Guess) Query_QueryGameById(in *pkt.QueryGuessGameInfo) (types.Message,
if
err
!=
nil
{
return
nil
,
err
}
return
&
pkt
.
ReplyGuessGameInfo
{
game
},
nil
return
&
pkt
.
ReplyGuessGameInfo
{
Game
:
game
},
nil
}
func
(
g
*
Guess
)
Query_QueryGameByAddr
(
in
*
pkt
.
QueryGuessGameInfo
)
(
types
.
Message
,
error
)
{
...
...
plugin/dapp/guess/proto/guess.proto
View file @
82b582dc
...
...
@@ -7,8 +7,8 @@ package types;
//竞猜游戏内容
message
GuessGame
{
string
gameId
=
1
;
//游戏ID
u
int32
status
=
2
;
//游戏的状态:创建->投注->截止投注->开奖
u
int32
preStatus
=
3
;
int32
status
=
2
;
//游戏的状态:创建->投注->截止投注->开奖
int32
preStatus
=
3
;
int64
startTime
=
4
;
//创建游戏的时间
string
startTxHash
=
5
;
//创建游戏的交易hash
string
topic
=
6
;
//主题
...
...
@@ -21,7 +21,7 @@ message GuessGame {
uint32
oneBet
=
13
;
//一注等于多少bty或者token
uint32
maxBets
=
14
;
//单次可以下多少注,默认100
uint32
maxBetsNumber
=
15
;
//最多可以下多少注
u
int64
fee
=
16
;
//收取费用,不带则表示不收费
int64
fee
=
16
;
//收取费用,不带则表示不收费
string
feeAddr
=
17
;
//收费地址
string
expire
=
18
;
//游戏过期时间
int64
expireHeight
=
19
;
//游戏过期区块高度
...
...
@@ -60,90 +60,6 @@ message GuessBetStatItem {
uint32
betsTimes
=
3
;
}
//斗牛游戏内容
message
PokerBull
{
string
gameId
=
1
;
//默认是由创建这局游戏的txHash作为gameId
int32
status
=
2
;
// Start 1 -> Continue 2 -> Quit 3
int64
startTime
=
3
;
//开始时间
string
startTxHash
=
4
;
//游戏启动交易hash
int64
value
=
5
;
//赌注
PBPoker
poker
=
6
;
//扑克牌
repeated
PBPlayer
players
=
7
;
//玩家历史牌和结果集
int32
playerNum
=
8
;
//玩家数
repeated
PBResult
results
=
9
;
//游戏结果集
int64
index
=
10
;
//索引
int64
prevIndex
=
11
;
//上级索引
int64
quitTime
=
12
;
//游戏结束时间
string
quitTxHash
=
13
;
//游戏结束交易hash
string
dealerAddr
=
14
;
//下局庄家地址
bool
isWaiting
=
15
;
//游戏是否处于等待状态
int32
preStatus
=
16
;
//上一index的状态
}
//一把牌
message
PBHand
{
repeated
int32
cards
=
1
;
//一把牌,五张
int32
result
=
2
;
//斗牛结果 (没牛:0, 牛1-9:1-9, 牛牛:10)
string
address
=
3
;
//玩家地址
bool
isWin
=
4
;
//是否赢庄家
int32
leverage
=
5
;
//赌注倍数
}
//玩家
message
PBPlayer
{
repeated
PBHand
hands
=
1
;
//历史发牌和斗牛结果
string
address
=
2
;
//玩家地址
int64
txHash
=
3
;
//发牌随机数因子txhash的整数格式
bool
ready
=
4
;
// continue状态下,是否ready
}
//本局游戏结果
message
PBResult
{
repeated
PBHand
hands
=
1
;
//本局所有玩家的牌和结果,按牛大小升序排序
string
winner
=
2
;
//赢家地址
int32
leverage
=
3
;
//赢得赌注倍数
string
dealer
=
4
;
//庄家
int32
dealerLeverage
=
5
;
//庄家赌注倍数
}
//扑克牌
message
PBPoker
{
repeated
int32
cards
=
1
;
// 52张牌
int32
pointer
=
2
;
//已发牌偏移
}
//游戏状态
message
PBGameAction
{
oneof
value
{
PBGameStart
start
=
1
;
PBGameContinue
continue
=
2
;
PBGameQuit
quit
=
3
;
PBGameQuery
query
=
4
;
}
int32
ty
=
10
;
}
//游戏启动
message
PBGameStart
{
int64
value
=
1
;
int32
playerNum
=
2
;
}
//游戏继续
message
PBGameContinue
{
string
gameId
=
1
;
}
//游戏结束
message
PBGameQuit
{
string
gameId
=
1
;
}
//查询游戏结果
message
PBGameQuery
{
string
gameId
=
1
;
}
//游戏状态
message
GuessGameAction
{
oneof
value
{
...
...
@@ -168,7 +84,7 @@ message GuessGameStart{
uint32
oneBet
=
8
;
uint32
maxBets
=
9
;
uint32
maxBetsNumber
=
10
;
u
int64
fee
=
11
;
int64
fee
=
11
;
string
feeAddr
=
12
;
string
expire
=
13
;
int64
expireHeight
=
14
;
...
...
@@ -179,66 +95,29 @@ message GuessGameBet{
string
gameId
=
1
;
string
option
=
2
;
uint32
betsNum
=
3
;
int64
fee
=
4
;
}
//游戏异常终止,退还下注
message
GuessGameAbort
{
string
gameId
=
1
;
int64
fee
=
2
;
}
//游戏结果揭晓
message
GuessGamePublish
{
string
gameId
=
1
;
string
result
=
2
;
int64
fee
=
3
;
}
//查询游戏结果
message
GuessGameQuery
{
string
gameId
=
1
;
uint32
ty
=
2
;
int64
fee
=
3
;
}
//根据状态和游戏人数查找
message
QueryPBGameListByStatusAndPlayerNum
{
int32
status
=
1
;
int32
playerNum
=
2
;
int64
index
=
3
;
}
// 索引value值
message
PBGameRecord
{
string
gameId
=
1
;
int32
status
=
2
;
int64
index
=
3
;
}
message
PBGameIndexRecord
{
string
gameId
=
1
;
int64
index
=
2
;
}
message
PBGameRecords
{
repeated
PBGameRecord
records
=
1
;
}
message
QueryPBGameInfo
{
string
gameId
=
1
;
string
addr
=
2
;
int32
status
=
3
;
int64
index
=
4
;
}
message
ReplyPBGame
{
PokerBull
game
=
1
;
}
message
QueryPBGameInfos
{
repeated
string
gameIds
=
1
;
}
message
ReplyPBGameList
{
repeated
PokerBull
games
=
1
;
}
message
QueryGuessGameInfo
{
string
gameId
=
1
;
...
...
@@ -259,23 +138,10 @@ message ReplyGuessGameInfos {
repeated
GuessGame
games
=
1
;
}
message
ReceiptPBGame
{
string
gameId
=
1
;
int32
status
=
2
;
string
addr
=
3
;
int64
index
=
4
;
int64
prevIndex
=
5
;
int32
playerNum
=
6
;
int64
value
=
7
;
bool
isWaiting
=
8
;
repeated
string
players
=
9
;
int32
preStatus
=
10
;
}
message
ReceiptGuessGame
{
string
gameId
=
1
;
u
int32
preStatus
=
2
;
u
int32
status
=
3
;
int32
preStatus
=
2
;
int32
status
=
3
;
string
addr
=
4
;
string
adminAddr
=
5
;
int64
preIndex
=
6
;
...
...
@@ -316,23 +182,6 @@ message GuessPublishTxReq {
string
result
=
2
;
}
message
PBContinueTxReq
{
string
gameId
=
1
;
int64
fee
=
2
;
}
message
PBQuitTxReq
{
string
gameId
=
1
;
int64
fee
=
2
;
}
message
PBQueryReq
{
string
gameId
=
1
;
int64
fee
=
2
;
}
// 索引value值
message
GuessGameRecord
{
string
gameId
=
1
;
...
...
plugin/dapp/guess/rpc/jrpc.go
View file @
82b582dc
...
...
@@ -93,7 +93,8 @@ func (c *Jrpc) GuessPublishTx(parm *pb.GuessPublishTxReq, result *interface{}) e
return
nil
}
func
(
c
*
Jrpc
)
GuessQueryTx
(
parm
*
pb
.
PBQueryReq
,
result
*
interface
{})
error
{
/*
func (c *Jrpc) GuessQueryTx(parm *pb.GuessQueryReq, result *interface{}) error {
if parm == nil {
return types.ErrInvalidParam
}
...
...
@@ -107,4 +108,4 @@ func (c *Jrpc) GuessQueryTx(parm *pb.PBQueryReq, result *interface{}) error {
*result = hex.EncodeToString(reply.Data)
return nil
}
}
*/
plugin/dapp/guess/types/const.go
View file @
82b582dc
...
...
@@ -26,17 +26,6 @@ const (
)
const
(
PlayStyleDefault
=
iota
+
1
PlayStyleDealer
)
const
(
//log for PBgame
TyLogPBGameStart
=
721
TyLogPBGameContinue
=
722
TyLogPBGameQuit
=
723
TyLogPBGameQuery
=
724
TyLogGuessGameStart
=
901
TyLogGuessGameBet
=
902
TyLogGuessGameStopBet
=
903
...
...
plugin/dapp/guess/types/guess.pb.go
View file @
82b582dc
...
...
@@ -26,8 +26,8 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
//竞猜游戏内容
type
GuessGame
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Status
uint32
`protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
PreStatus
uint32
`protobuf:"varint,3,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
Status
int32
`protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
PreStatus
int32
`protobuf:"varint,3,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
StartTime
int64
`protobuf:"varint,4,opt,name=startTime,proto3" json:"startTime,omitempty"`
StartTxHash
string
`protobuf:"bytes,5,opt,name=startTxHash,proto3" json:"startTxHash,omitempty"`
Topic
string
`protobuf:"bytes,6,opt,name=topic,proto3" json:"topic,omitempty"`
...
...
@@ -40,7 +40,7 @@ type GuessGame struct {
OneBet
uint32
`protobuf:"varint,13,opt,name=oneBet,proto3" json:"oneBet,omitempty"`
MaxBets
uint32
`protobuf:"varint,14,opt,name=maxBets,proto3" json:"maxBets,omitempty"`
MaxBetsNumber
uint32
`protobuf:"varint,15,opt,name=maxBetsNumber,proto3" json:"maxBetsNumber,omitempty"`
Fee
uint64
`protobuf:"varint,16,opt,name=fee,proto3" json:"fee,omitempty"`
Fee
int64
`protobuf:"varint,16,opt,name=fee,proto3" json:"fee,omitempty"`
FeeAddr
string
`protobuf:"bytes,17,opt,name=feeAddr,proto3" json:"feeAddr,omitempty"`
Expire
string
`protobuf:"bytes,18,opt,name=expire,proto3" json:"expire,omitempty"`
ExpireHeight
int64
`protobuf:"varint,19,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
...
...
@@ -88,14 +88,14 @@ func (m *GuessGame) GetGameId() string {
return
""
}
func
(
m
*
GuessGame
)
GetStatus
()
u
int32
{
func
(
m
*
GuessGame
)
GetStatus
()
int32
{
if
m
!=
nil
{
return
m
.
Status
}
return
0
}
func
(
m
*
GuessGame
)
GetPreStatus
()
u
int32
{
func
(
m
*
GuessGame
)
GetPreStatus
()
int32
{
if
m
!=
nil
{
return
m
.
PreStatus
}
...
...
@@ -186,7 +186,7 @@ func (m *GuessGame) GetMaxBetsNumber() uint32 {
return
0
}
func
(
m
*
GuessGame
)
GetFee
()
u
int64
{
func
(
m
*
GuessGame
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Fee
}
...
...
@@ -499,811 +499,6 @@ func (m *GuessBetStatItem) GetBetsTimes() uint32 {
return
0
}
//斗牛游戏内容
type
PokerBull
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Status
int32
`protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
StartTime
int64
`protobuf:"varint,3,opt,name=startTime,proto3" json:"startTime,omitempty"`
StartTxHash
string
`protobuf:"bytes,4,opt,name=startTxHash,proto3" json:"startTxHash,omitempty"`
Value
int64
`protobuf:"varint,5,opt,name=value,proto3" json:"value,omitempty"`
Poker
*
PBPoker
`protobuf:"bytes,6,opt,name=poker,proto3" json:"poker,omitempty"`
Players
[]
*
PBPlayer
`protobuf:"bytes,7,rep,name=players,proto3" json:"players,omitempty"`
PlayerNum
int32
`protobuf:"varint,8,opt,name=playerNum,proto3" json:"playerNum,omitempty"`
Results
[]
*
PBResult
`protobuf:"bytes,9,rep,name=results,proto3" json:"results,omitempty"`
Index
int64
`protobuf:"varint,10,opt,name=index,proto3" json:"index,omitempty"`
PrevIndex
int64
`protobuf:"varint,11,opt,name=prevIndex,proto3" json:"prevIndex,omitempty"`
QuitTime
int64
`protobuf:"varint,12,opt,name=quitTime,proto3" json:"quitTime,omitempty"`
QuitTxHash
string
`protobuf:"bytes,13,opt,name=quitTxHash,proto3" json:"quitTxHash,omitempty"`
DealerAddr
string
`protobuf:"bytes,14,opt,name=dealerAddr,proto3" json:"dealerAddr,omitempty"`
IsWaiting
bool
`protobuf:"varint,15,opt,name=isWaiting,proto3" json:"isWaiting,omitempty"`
PreStatus
int32
`protobuf:"varint,16,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PokerBull
)
Reset
()
{
*
m
=
PokerBull
{}
}
func
(
m
*
PokerBull
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PokerBull
)
ProtoMessage
()
{}
func
(
*
PokerBull
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
5
}
}
func
(
m
*
PokerBull
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PokerBull
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PokerBull
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PokerBull
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PokerBull
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PokerBull
.
Merge
(
m
,
src
)
}
func
(
m
*
PokerBull
)
XXX_Size
()
int
{
return
xxx_messageInfo_PokerBull
.
Size
(
m
)
}
func
(
m
*
PokerBull
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PokerBull
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PokerBull
proto
.
InternalMessageInfo
func
(
m
*
PokerBull
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
PokerBull
)
GetStatus
()
int32
{
if
m
!=
nil
{
return
m
.
Status
}
return
0
}
func
(
m
*
PokerBull
)
GetStartTime
()
int64
{
if
m
!=
nil
{
return
m
.
StartTime
}
return
0
}
func
(
m
*
PokerBull
)
GetStartTxHash
()
string
{
if
m
!=
nil
{
return
m
.
StartTxHash
}
return
""
}
func
(
m
*
PokerBull
)
GetValue
()
int64
{
if
m
!=
nil
{
return
m
.
Value
}
return
0
}
func
(
m
*
PokerBull
)
GetPoker
()
*
PBPoker
{
if
m
!=
nil
{
return
m
.
Poker
}
return
nil
}
func
(
m
*
PokerBull
)
GetPlayers
()
[]
*
PBPlayer
{
if
m
!=
nil
{
return
m
.
Players
}
return
nil
}
func
(
m
*
PokerBull
)
GetPlayerNum
()
int32
{
if
m
!=
nil
{
return
m
.
PlayerNum
}
return
0
}
func
(
m
*
PokerBull
)
GetResults
()
[]
*
PBResult
{
if
m
!=
nil
{
return
m
.
Results
}
return
nil
}
func
(
m
*
PokerBull
)
GetIndex
()
int64
{
if
m
!=
nil
{
return
m
.
Index
}
return
0
}
func
(
m
*
PokerBull
)
GetPrevIndex
()
int64
{
if
m
!=
nil
{
return
m
.
PrevIndex
}
return
0
}
func
(
m
*
PokerBull
)
GetQuitTime
()
int64
{
if
m
!=
nil
{
return
m
.
QuitTime
}
return
0
}
func
(
m
*
PokerBull
)
GetQuitTxHash
()
string
{
if
m
!=
nil
{
return
m
.
QuitTxHash
}
return
""
}
func
(
m
*
PokerBull
)
GetDealerAddr
()
string
{
if
m
!=
nil
{
return
m
.
DealerAddr
}
return
""
}
func
(
m
*
PokerBull
)
GetIsWaiting
()
bool
{
if
m
!=
nil
{
return
m
.
IsWaiting
}
return
false
}
func
(
m
*
PokerBull
)
GetPreStatus
()
int32
{
if
m
!=
nil
{
return
m
.
PreStatus
}
return
0
}
//一把牌
type
PBHand
struct
{
Cards
[]
int32
`protobuf:"varint,1,rep,packed,name=cards,proto3" json:"cards,omitempty"`
Result
int32
`protobuf:"varint,2,opt,name=result,proto3" json:"result,omitempty"`
Address
string
`protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"`
IsWin
bool
`protobuf:"varint,4,opt,name=isWin,proto3" json:"isWin,omitempty"`
Leverage
int32
`protobuf:"varint,5,opt,name=leverage,proto3" json:"leverage,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBHand
)
Reset
()
{
*
m
=
PBHand
{}
}
func
(
m
*
PBHand
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBHand
)
ProtoMessage
()
{}
func
(
*
PBHand
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
6
}
}
func
(
m
*
PBHand
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBHand
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBHand
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBHand
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBHand
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBHand
.
Merge
(
m
,
src
)
}
func
(
m
*
PBHand
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBHand
.
Size
(
m
)
}
func
(
m
*
PBHand
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBHand
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBHand
proto
.
InternalMessageInfo
func
(
m
*
PBHand
)
GetCards
()
[]
int32
{
if
m
!=
nil
{
return
m
.
Cards
}
return
nil
}
func
(
m
*
PBHand
)
GetResult
()
int32
{
if
m
!=
nil
{
return
m
.
Result
}
return
0
}
func
(
m
*
PBHand
)
GetAddress
()
string
{
if
m
!=
nil
{
return
m
.
Address
}
return
""
}
func
(
m
*
PBHand
)
GetIsWin
()
bool
{
if
m
!=
nil
{
return
m
.
IsWin
}
return
false
}
func
(
m
*
PBHand
)
GetLeverage
()
int32
{
if
m
!=
nil
{
return
m
.
Leverage
}
return
0
}
//玩家
type
PBPlayer
struct
{
Hands
[]
*
PBHand
`protobuf:"bytes,1,rep,name=hands,proto3" json:"hands,omitempty"`
Address
string
`protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
TxHash
int64
`protobuf:"varint,3,opt,name=txHash,proto3" json:"txHash,omitempty"`
Ready
bool
`protobuf:"varint,4,opt,name=ready,proto3" json:"ready,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBPlayer
)
Reset
()
{
*
m
=
PBPlayer
{}
}
func
(
m
*
PBPlayer
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBPlayer
)
ProtoMessage
()
{}
func
(
*
PBPlayer
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
7
}
}
func
(
m
*
PBPlayer
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBPlayer
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBPlayer
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBPlayer
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBPlayer
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBPlayer
.
Merge
(
m
,
src
)
}
func
(
m
*
PBPlayer
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBPlayer
.
Size
(
m
)
}
func
(
m
*
PBPlayer
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBPlayer
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBPlayer
proto
.
InternalMessageInfo
func
(
m
*
PBPlayer
)
GetHands
()
[]
*
PBHand
{
if
m
!=
nil
{
return
m
.
Hands
}
return
nil
}
func
(
m
*
PBPlayer
)
GetAddress
()
string
{
if
m
!=
nil
{
return
m
.
Address
}
return
""
}
func
(
m
*
PBPlayer
)
GetTxHash
()
int64
{
if
m
!=
nil
{
return
m
.
TxHash
}
return
0
}
func
(
m
*
PBPlayer
)
GetReady
()
bool
{
if
m
!=
nil
{
return
m
.
Ready
}
return
false
}
//本局游戏结果
type
PBResult
struct
{
Hands
[]
*
PBHand
`protobuf:"bytes,1,rep,name=hands,proto3" json:"hands,omitempty"`
Winner
string
`protobuf:"bytes,2,opt,name=winner,proto3" json:"winner,omitempty"`
Leverage
int32
`protobuf:"varint,3,opt,name=leverage,proto3" json:"leverage,omitempty"`
Dealer
string
`protobuf:"bytes,4,opt,name=dealer,proto3" json:"dealer,omitempty"`
DealerLeverage
int32
`protobuf:"varint,5,opt,name=dealerLeverage,proto3" json:"dealerLeverage,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBResult
)
Reset
()
{
*
m
=
PBResult
{}
}
func
(
m
*
PBResult
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBResult
)
ProtoMessage
()
{}
func
(
*
PBResult
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
8
}
}
func
(
m
*
PBResult
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBResult
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBResult
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBResult
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBResult
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBResult
.
Merge
(
m
,
src
)
}
func
(
m
*
PBResult
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBResult
.
Size
(
m
)
}
func
(
m
*
PBResult
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBResult
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBResult
proto
.
InternalMessageInfo
func
(
m
*
PBResult
)
GetHands
()
[]
*
PBHand
{
if
m
!=
nil
{
return
m
.
Hands
}
return
nil
}
func
(
m
*
PBResult
)
GetWinner
()
string
{
if
m
!=
nil
{
return
m
.
Winner
}
return
""
}
func
(
m
*
PBResult
)
GetLeverage
()
int32
{
if
m
!=
nil
{
return
m
.
Leverage
}
return
0
}
func
(
m
*
PBResult
)
GetDealer
()
string
{
if
m
!=
nil
{
return
m
.
Dealer
}
return
""
}
func
(
m
*
PBResult
)
GetDealerLeverage
()
int32
{
if
m
!=
nil
{
return
m
.
DealerLeverage
}
return
0
}
//扑克牌
type
PBPoker
struct
{
Cards
[]
int32
`protobuf:"varint,1,rep,packed,name=cards,proto3" json:"cards,omitempty"`
Pointer
int32
`protobuf:"varint,2,opt,name=pointer,proto3" json:"pointer,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBPoker
)
Reset
()
{
*
m
=
PBPoker
{}
}
func
(
m
*
PBPoker
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBPoker
)
ProtoMessage
()
{}
func
(
*
PBPoker
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
9
}
}
func
(
m
*
PBPoker
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBPoker
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBPoker
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBPoker
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBPoker
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBPoker
.
Merge
(
m
,
src
)
}
func
(
m
*
PBPoker
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBPoker
.
Size
(
m
)
}
func
(
m
*
PBPoker
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBPoker
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBPoker
proto
.
InternalMessageInfo
func
(
m
*
PBPoker
)
GetCards
()
[]
int32
{
if
m
!=
nil
{
return
m
.
Cards
}
return
nil
}
func
(
m
*
PBPoker
)
GetPointer
()
int32
{
if
m
!=
nil
{
return
m
.
Pointer
}
return
0
}
//游戏状态
type
PBGameAction
struct
{
// Types that are valid to be assigned to Value:
// *PBGameAction_Start
// *PBGameAction_Continue
// *PBGameAction_Quit
// *PBGameAction_Query
Value
isPBGameAction_Value
`protobuf_oneof:"value"`
Ty
int32
`protobuf:"varint,10,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBGameAction
)
Reset
()
{
*
m
=
PBGameAction
{}
}
func
(
m
*
PBGameAction
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBGameAction
)
ProtoMessage
()
{}
func
(
*
PBGameAction
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
10
}
}
func
(
m
*
PBGameAction
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBGameAction
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBGameAction
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBGameAction
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBGameAction
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBGameAction
.
Merge
(
m
,
src
)
}
func
(
m
*
PBGameAction
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBGameAction
.
Size
(
m
)
}
func
(
m
*
PBGameAction
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBGameAction
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBGameAction
proto
.
InternalMessageInfo
type
isPBGameAction_Value
interface
{
isPBGameAction_Value
()
}
type
PBGameAction_Start
struct
{
Start
*
PBGameStart
`protobuf:"bytes,1,opt,name=start,proto3,oneof"`
}
type
PBGameAction_Continue
struct
{
Continue
*
PBGameContinue
`protobuf:"bytes,2,opt,name=continue,proto3,oneof"`
}
type
PBGameAction_Quit
struct
{
Quit
*
PBGameQuit
`protobuf:"bytes,3,opt,name=quit,proto3,oneof"`
}
type
PBGameAction_Query
struct
{
Query
*
PBGameQuery
`protobuf:"bytes,4,opt,name=query,proto3,oneof"`
}
func
(
*
PBGameAction_Start
)
isPBGameAction_Value
()
{}
func
(
*
PBGameAction_Continue
)
isPBGameAction_Value
()
{}
func
(
*
PBGameAction_Quit
)
isPBGameAction_Value
()
{}
func
(
*
PBGameAction_Query
)
isPBGameAction_Value
()
{}
func
(
m
*
PBGameAction
)
GetValue
()
isPBGameAction_Value
{
if
m
!=
nil
{
return
m
.
Value
}
return
nil
}
func
(
m
*
PBGameAction
)
GetStart
()
*
PBGameStart
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
PBGameAction_Start
);
ok
{
return
x
.
Start
}
return
nil
}
func
(
m
*
PBGameAction
)
GetContinue
()
*
PBGameContinue
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
PBGameAction_Continue
);
ok
{
return
x
.
Continue
}
return
nil
}
func
(
m
*
PBGameAction
)
GetQuit
()
*
PBGameQuit
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
PBGameAction_Quit
);
ok
{
return
x
.
Quit
}
return
nil
}
func
(
m
*
PBGameAction
)
GetQuery
()
*
PBGameQuery
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
PBGameAction_Query
);
ok
{
return
x
.
Query
}
return
nil
}
func
(
m
*
PBGameAction
)
GetTy
()
int32
{
if
m
!=
nil
{
return
m
.
Ty
}
return
0
}
// XXX_OneofFuncs is for the internal use of the proto package.
func
(
*
PBGameAction
)
XXX_OneofFuncs
()
(
func
(
msg
proto
.
Message
,
b
*
proto
.
Buffer
)
error
,
func
(
msg
proto
.
Message
,
tag
,
wire
int
,
b
*
proto
.
Buffer
)
(
bool
,
error
),
func
(
msg
proto
.
Message
)
(
n
int
),
[]
interface
{})
{
return
_PBGameAction_OneofMarshaler
,
_PBGameAction_OneofUnmarshaler
,
_PBGameAction_OneofSizer
,
[]
interface
{}{
(
*
PBGameAction_Start
)(
nil
),
(
*
PBGameAction_Continue
)(
nil
),
(
*
PBGameAction_Quit
)(
nil
),
(
*
PBGameAction_Query
)(
nil
),
}
}
func
_PBGameAction_OneofMarshaler
(
msg
proto
.
Message
,
b
*
proto
.
Buffer
)
error
{
m
:=
msg
.
(
*
PBGameAction
)
// value
switch
x
:=
m
.
Value
.
(
type
)
{
case
*
PBGameAction_Start
:
b
.
EncodeVarint
(
1
<<
3
|
proto
.
WireBytes
)
if
err
:=
b
.
EncodeMessage
(
x
.
Start
);
err
!=
nil
{
return
err
}
case
*
PBGameAction_Continue
:
b
.
EncodeVarint
(
2
<<
3
|
proto
.
WireBytes
)
if
err
:=
b
.
EncodeMessage
(
x
.
Continue
);
err
!=
nil
{
return
err
}
case
*
PBGameAction_Quit
:
b
.
EncodeVarint
(
3
<<
3
|
proto
.
WireBytes
)
if
err
:=
b
.
EncodeMessage
(
x
.
Quit
);
err
!=
nil
{
return
err
}
case
*
PBGameAction_Query
:
b
.
EncodeVarint
(
4
<<
3
|
proto
.
WireBytes
)
if
err
:=
b
.
EncodeMessage
(
x
.
Query
);
err
!=
nil
{
return
err
}
case
nil
:
default
:
return
fmt
.
Errorf
(
"PBGameAction.Value has unexpected type %T"
,
x
)
}
return
nil
}
func
_PBGameAction_OneofUnmarshaler
(
msg
proto
.
Message
,
tag
,
wire
int
,
b
*
proto
.
Buffer
)
(
bool
,
error
)
{
m
:=
msg
.
(
*
PBGameAction
)
switch
tag
{
case
1
:
// value.start
if
wire
!=
proto
.
WireBytes
{
return
true
,
proto
.
ErrInternalBadWireType
}
msg
:=
new
(
PBGameStart
)
err
:=
b
.
DecodeMessage
(
msg
)
m
.
Value
=
&
PBGameAction_Start
{
msg
}
return
true
,
err
case
2
:
// value.continue
if
wire
!=
proto
.
WireBytes
{
return
true
,
proto
.
ErrInternalBadWireType
}
msg
:=
new
(
PBGameContinue
)
err
:=
b
.
DecodeMessage
(
msg
)
m
.
Value
=
&
PBGameAction_Continue
{
msg
}
return
true
,
err
case
3
:
// value.quit
if
wire
!=
proto
.
WireBytes
{
return
true
,
proto
.
ErrInternalBadWireType
}
msg
:=
new
(
PBGameQuit
)
err
:=
b
.
DecodeMessage
(
msg
)
m
.
Value
=
&
PBGameAction_Quit
{
msg
}
return
true
,
err
case
4
:
// value.query
if
wire
!=
proto
.
WireBytes
{
return
true
,
proto
.
ErrInternalBadWireType
}
msg
:=
new
(
PBGameQuery
)
err
:=
b
.
DecodeMessage
(
msg
)
m
.
Value
=
&
PBGameAction_Query
{
msg
}
return
true
,
err
default
:
return
false
,
nil
}
}
func
_PBGameAction_OneofSizer
(
msg
proto
.
Message
)
(
n
int
)
{
m
:=
msg
.
(
*
PBGameAction
)
// value
switch
x
:=
m
.
Value
.
(
type
)
{
case
*
PBGameAction_Start
:
s
:=
proto
.
Size
(
x
.
Start
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
PBGameAction_Continue
:
s
:=
proto
.
Size
(
x
.
Continue
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
PBGameAction_Quit
:
s
:=
proto
.
Size
(
x
.
Quit
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
*
PBGameAction_Query
:
s
:=
proto
.
Size
(
x
.
Query
)
n
+=
1
// tag and wire
n
+=
proto
.
SizeVarint
(
uint64
(
s
))
n
+=
s
case
nil
:
default
:
panic
(
fmt
.
Sprintf
(
"proto: unexpected type %T in oneof"
,
x
))
}
return
n
}
//游戏启动
type
PBGameStart
struct
{
Value
int64
`protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
PlayerNum
int32
`protobuf:"varint,2,opt,name=playerNum,proto3" json:"playerNum,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBGameStart
)
Reset
()
{
*
m
=
PBGameStart
{}
}
func
(
m
*
PBGameStart
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBGameStart
)
ProtoMessage
()
{}
func
(
*
PBGameStart
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
11
}
}
func
(
m
*
PBGameStart
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBGameStart
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBGameStart
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBGameStart
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBGameStart
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBGameStart
.
Merge
(
m
,
src
)
}
func
(
m
*
PBGameStart
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBGameStart
.
Size
(
m
)
}
func
(
m
*
PBGameStart
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBGameStart
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBGameStart
proto
.
InternalMessageInfo
func
(
m
*
PBGameStart
)
GetValue
()
int64
{
if
m
!=
nil
{
return
m
.
Value
}
return
0
}
func
(
m
*
PBGameStart
)
GetPlayerNum
()
int32
{
if
m
!=
nil
{
return
m
.
PlayerNum
}
return
0
}
//游戏继续
type
PBGameContinue
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBGameContinue
)
Reset
()
{
*
m
=
PBGameContinue
{}
}
func
(
m
*
PBGameContinue
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBGameContinue
)
ProtoMessage
()
{}
func
(
*
PBGameContinue
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
12
}
}
func
(
m
*
PBGameContinue
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBGameContinue
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBGameContinue
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBGameContinue
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBGameContinue
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBGameContinue
.
Merge
(
m
,
src
)
}
func
(
m
*
PBGameContinue
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBGameContinue
.
Size
(
m
)
}
func
(
m
*
PBGameContinue
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBGameContinue
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBGameContinue
proto
.
InternalMessageInfo
func
(
m
*
PBGameContinue
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
//游戏结束
type
PBGameQuit
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBGameQuit
)
Reset
()
{
*
m
=
PBGameQuit
{}
}
func
(
m
*
PBGameQuit
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBGameQuit
)
ProtoMessage
()
{}
func
(
*
PBGameQuit
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
13
}
}
func
(
m
*
PBGameQuit
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBGameQuit
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBGameQuit
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBGameQuit
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBGameQuit
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBGameQuit
.
Merge
(
m
,
src
)
}
func
(
m
*
PBGameQuit
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBGameQuit
.
Size
(
m
)
}
func
(
m
*
PBGameQuit
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBGameQuit
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBGameQuit
proto
.
InternalMessageInfo
func
(
m
*
PBGameQuit
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
//查询游戏结果
type
PBGameQuery
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBGameQuery
)
Reset
()
{
*
m
=
PBGameQuery
{}
}
func
(
m
*
PBGameQuery
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBGameQuery
)
ProtoMessage
()
{}
func
(
*
PBGameQuery
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
14
}
}
func
(
m
*
PBGameQuery
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBGameQuery
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBGameQuery
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBGameQuery
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBGameQuery
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBGameQuery
.
Merge
(
m
,
src
)
}
func
(
m
*
PBGameQuery
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBGameQuery
.
Size
(
m
)
}
func
(
m
*
PBGameQuery
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBGameQuery
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBGameQuery
proto
.
InternalMessageInfo
func
(
m
*
PBGameQuery
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
//游戏状态
type
GuessGameAction
struct
{
// Types that are valid to be assigned to Value:
...
...
@@ -1323,7 +518,7 @@ func (m *GuessGameAction) Reset() { *m = GuessGameAction{} }
func
(
m
*
GuessGameAction
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameAction
)
ProtoMessage
()
{}
func
(
*
GuessGameAction
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
5
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
5
}
}
func
(
m
*
GuessGameAction
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -1570,7 +765,7 @@ type GuessGameStart struct {
OneBet
uint32
`protobuf:"varint,8,opt,name=oneBet,proto3" json:"oneBet,omitempty"`
MaxBets
uint32
`protobuf:"varint,9,opt,name=maxBets,proto3" json:"maxBets,omitempty"`
MaxBetsNumber
uint32
`protobuf:"varint,10,opt,name=maxBetsNumber,proto3" json:"maxBetsNumber,omitempty"`
Fee
uint64
`protobuf:"varint,11,opt,name=fee,proto3" json:"fee,omitempty"`
Fee
int64
`protobuf:"varint,11,opt,name=fee,proto3" json:"fee,omitempty"`
FeeAddr
string
`protobuf:"bytes,12,opt,name=feeAddr,proto3" json:"feeAddr,omitempty"`
Expire
string
`protobuf:"bytes,13,opt,name=expire,proto3" json:"expire,omitempty"`
ExpireHeight
int64
`protobuf:"varint,14,opt,name=expireHeight,proto3" json:"expireHeight,omitempty"`
...
...
@@ -1583,7 +778,7 @@ func (m *GuessGameStart) Reset() { *m = GuessGameStart{} }
func
(
m
*
GuessGameStart
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameStart
)
ProtoMessage
()
{}
func
(
*
GuessGameStart
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
6
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
6
}
}
func
(
m
*
GuessGameStart
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -1674,7 +869,7 @@ func (m *GuessGameStart) GetMaxBetsNumber() uint32 {
return
0
}
func
(
m
*
GuessGameStart
)
GetFee
()
u
int64
{
func
(
m
*
GuessGameStart
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Fee
}
...
...
@@ -1707,6 +902,7 @@ type GuessGameBet struct {
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Option
string
`protobuf:"bytes,2,opt,name=option,proto3" json:"option,omitempty"`
BetsNum
uint32
`protobuf:"varint,3,opt,name=betsNum,proto3" json:"betsNum,omitempty"`
Fee
int64
`protobuf:"varint,4,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -1716,7 +912,7 @@ func (m *GuessGameBet) Reset() { *m = GuessGameBet{} }
func
(
m
*
GuessGameBet
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameBet
)
ProtoMessage
()
{}
func
(
*
GuessGameBet
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
1
7
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
7
}
}
func
(
m
*
GuessGameBet
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -1731,545 +927,198 @@ func (m *GuessGameBet) XXX_Merge(src proto.Message) {
func
(
m
*
GuessGameBet
)
XXX_Size
()
int
{
return
xxx_messageInfo_GuessGameBet
.
Size
(
m
)
}
func
(
m
*
GuessGameBet
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_GuessGameBet
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_GuessGameBet
proto
.
InternalMessageInfo
func
(
m
*
GuessGameBet
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
GuessGameBet
)
GetOption
()
string
{
if
m
!=
nil
{
return
m
.
Option
}
return
""
}
func
(
m
*
GuessGameBet
)
GetBetsNum
()
uint32
{
if
m
!=
nil
{
return
m
.
BetsNum
}
return
0
}
//游戏异常终止,退还下注
type
GuessGameAbort
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
GuessGameAbort
)
Reset
()
{
*
m
=
GuessGameAbort
{}
}
func
(
m
*
GuessGameAbort
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameAbort
)
ProtoMessage
()
{}
func
(
*
GuessGameAbort
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
18
}
}
func
(
m
*
GuessGameAbort
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_GuessGameAbort
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
GuessGameAbort
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_GuessGameAbort
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
GuessGameAbort
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_GuessGameAbort
.
Merge
(
m
,
src
)
}
func
(
m
*
GuessGameAbort
)
XXX_Size
()
int
{
return
xxx_messageInfo_GuessGameAbort
.
Size
(
m
)
}
func
(
m
*
GuessGameAbort
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_GuessGameAbort
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_GuessGameAbort
proto
.
InternalMessageInfo
func
(
m
*
GuessGameAbort
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
//游戏结果揭晓
type
GuessGamePublish
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Result
string
`protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
GuessGamePublish
)
Reset
()
{
*
m
=
GuessGamePublish
{}
}
func
(
m
*
GuessGamePublish
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGamePublish
)
ProtoMessage
()
{}
func
(
*
GuessGamePublish
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
19
}
}
func
(
m
*
GuessGamePublish
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_GuessGamePublish
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
GuessGamePublish
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_GuessGamePublish
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
GuessGamePublish
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_GuessGamePublish
.
Merge
(
m
,
src
)
}
func
(
m
*
GuessGamePublish
)
XXX_Size
()
int
{
return
xxx_messageInfo_GuessGamePublish
.
Size
(
m
)
}
func
(
m
*
GuessGamePublish
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_GuessGamePublish
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_GuessGamePublish
proto
.
InternalMessageInfo
func
(
m
*
GuessGamePublish
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
GuessGamePublish
)
GetResult
()
string
{
if
m
!=
nil
{
return
m
.
Result
}
return
""
}
//查询游戏结果
type
GuessGameQuery
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Ty
uint32
`protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
GuessGameQuery
)
Reset
()
{
*
m
=
GuessGameQuery
{}
}
func
(
m
*
GuessGameQuery
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameQuery
)
ProtoMessage
()
{}
func
(
*
GuessGameQuery
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
20
}
}
func
(
m
*
GuessGameQuery
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_GuessGameQuery
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
GuessGameQuery
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_GuessGameQuery
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
GuessGameQuery
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_GuessGameQuery
.
Merge
(
m
,
src
)
}
func
(
m
*
GuessGameQuery
)
XXX_Size
()
int
{
return
xxx_messageInfo_GuessGameQuery
.
Size
(
m
)
}
func
(
m
*
GuessGameQuery
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_GuessGameQuery
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_GuessGameQuery
proto
.
InternalMessageInfo
func
(
m
*
GuessGameQuery
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
GuessGameQuery
)
GetTy
()
uint32
{
if
m
!=
nil
{
return
m
.
Ty
}
return
0
}
//根据状态和游戏人数查找
type
QueryPBGameListByStatusAndPlayerNum
struct
{
Status
int32
`protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
PlayerNum
int32
`protobuf:"varint,2,opt,name=playerNum,proto3" json:"playerNum,omitempty"`
Index
int64
`protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
Reset
()
{
*
m
=
QueryPBGameListByStatusAndPlayerNum
{}
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryPBGameListByStatusAndPlayerNum
)
ProtoMessage
()
{}
func
(
*
QueryPBGameListByStatusAndPlayerNum
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
21
}
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_QueryPBGameListByStatusAndPlayerNum
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_QueryPBGameListByStatusAndPlayerNum
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_QueryPBGameListByStatusAndPlayerNum
.
Merge
(
m
,
src
)
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
XXX_Size
()
int
{
return
xxx_messageInfo_QueryPBGameListByStatusAndPlayerNum
.
Size
(
m
)
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_QueryPBGameListByStatusAndPlayerNum
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_QueryPBGameListByStatusAndPlayerNum
proto
.
InternalMessageInfo
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
GetStatus
()
int32
{
if
m
!=
nil
{
return
m
.
Status
}
return
0
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
GetPlayerNum
()
int32
{
if
m
!=
nil
{
return
m
.
PlayerNum
}
return
0
}
func
(
m
*
QueryPBGameListByStatusAndPlayerNum
)
GetIndex
()
int64
{
if
m
!=
nil
{
return
m
.
Index
}
return
0
}
// 索引value值
type
PBGameRecord
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Status
int32
`protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"`
Index
int64
`protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBGameRecord
)
Reset
()
{
*
m
=
PBGameRecord
{}
}
func
(
m
*
PBGameRecord
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBGameRecord
)
ProtoMessage
()
{}
func
(
*
PBGameRecord
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
22
}
}
func
(
m
*
PBGameRecord
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBGameRecord
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBGameRecord
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBGameRecord
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBGameRecord
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBGameRecord
.
Merge
(
m
,
src
)
}
func
(
m
*
PBGameRecord
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBGameRecord
.
Size
(
m
)
}
func
(
m
*
PBGameRecord
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBGameRecord
.
DiscardUnknown
(
m
)
func
(
m
*
GuessGameBet
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_GuessGameBet
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_
PBGameRecord
proto
.
InternalMessageInfo
var
xxx_messageInfo_
GuessGameBet
proto
.
InternalMessageInfo
func
(
m
*
PBGameRecord
)
GetGameId
()
string
{
func
(
m
*
GuessGameBet
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
PBGameRecord
)
GetStatus
()
int32
{
func
(
m
*
GuessGameBet
)
GetOption
()
string
{
if
m
!=
nil
{
return
m
.
Status
return
m
.
Option
}
return
""
}
func
(
m
*
GuessGameBet
)
GetBetsNum
()
uint32
{
if
m
!=
nil
{
return
m
.
BetsNum
}
return
0
}
func
(
m
*
PBGameRecord
)
GetIndex
()
int64
{
func
(
m
*
GuessGameBet
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Index
return
m
.
Fee
}
return
0
}
type
PBGameIndexRecord
struct
{
//游戏异常终止,退还下注
type
GuessGameAbort
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Index
int64
`protobuf:"varint,2,opt,name=index,proto3" json:"index
,omitempty"`
Fee
int64
`protobuf:"varint,2,opt,name=fee,proto3" json:"fee
,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBGameIndexRecord
)
Reset
()
{
*
m
=
PBGameIndexRecord
{}
}
func
(
m
*
PBGameIndexRecord
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBGameIndexRecord
)
ProtoMessage
()
{}
func
(
*
PBGameIndexRecord
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
23
}
func
(
m
*
GuessGameAbort
)
Reset
()
{
*
m
=
GuessGameAbort
{}
}
func
(
m
*
GuessGameAbort
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameAbort
)
ProtoMessage
()
{}
func
(
*
GuessGameAbort
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
8
}
}
func
(
m
*
PBGameIndexRecord
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_
PBGameIndexRecord
.
Unmarshal
(
m
,
b
)
func
(
m
*
GuessGameAbort
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_
GuessGameAbort
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBGameIndexRecord
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_
PBGameIndexRecord
.
Marshal
(
b
,
m
,
deterministic
)
func
(
m
*
GuessGameAbort
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_
GuessGameAbort
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBGameIndexRecord
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_
PBGameIndexRecord
.
Merge
(
m
,
src
)
func
(
m
*
GuessGameAbort
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_
GuessGameAbort
.
Merge
(
m
,
src
)
}
func
(
m
*
PBGameIndexRecord
)
XXX_Size
()
int
{
return
xxx_messageInfo_
PBGameIndexRecord
.
Size
(
m
)
func
(
m
*
GuessGameAbort
)
XXX_Size
()
int
{
return
xxx_messageInfo_
GuessGameAbort
.
Size
(
m
)
}
func
(
m
*
PBGameIndexRecord
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_
PBGameIndexRecord
.
DiscardUnknown
(
m
)
func
(
m
*
GuessGameAbort
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_
GuessGameAbort
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_
PBGameIndexRecord
proto
.
InternalMessageInfo
var
xxx_messageInfo_
GuessGameAbort
proto
.
InternalMessageInfo
func
(
m
*
PBGameIndexRecord
)
GetGameId
()
string
{
func
(
m
*
GuessGameAbort
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
PBGameIndexRecord
)
GetIndex
()
int64
{
func
(
m
*
GuessGameAbort
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Index
return
m
.
Fee
}
return
0
}
type
PBGameRecords
struct
{
Records
[]
*
PBGameRecord
`protobuf:"bytes,1,rep,name=records,proto3" json:"records,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBGameRecords
)
Reset
()
{
*
m
=
PBGameRecords
{}
}
func
(
m
*
PBGameRecords
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBGameRecords
)
ProtoMessage
()
{}
func
(
*
PBGameRecords
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
24
}
}
func
(
m
*
PBGameRecords
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBGameRecords
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBGameRecords
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBGameRecords
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBGameRecords
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBGameRecords
.
Merge
(
m
,
src
)
}
func
(
m
*
PBGameRecords
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBGameRecords
.
Size
(
m
)
}
func
(
m
*
PBGameRecords
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBGameRecords
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBGameRecords
proto
.
InternalMessageInfo
func
(
m
*
PBGameRecords
)
GetRecords
()
[]
*
PBGameRecord
{
if
m
!=
nil
{
return
m
.
Records
}
return
nil
}
type
QueryPBGameInfo
struct
{
//游戏结果揭晓
type
GuessGamePublish
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Addr
string
`protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
Status
int32
`protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
Index
int64
`protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"`
Result
string
`protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
Fee
int64
`protobuf:"varint,3,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
QueryPBGameInfo
)
Reset
()
{
*
m
=
QueryPBGameInfo
{}
}
func
(
m
*
QueryPBGameInfo
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryPBGameInfo
)
ProtoMessage
()
{}
func
(
*
QueryPBGameInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
25
}
func
(
m
*
GuessGamePublish
)
Reset
()
{
*
m
=
GuessGamePublish
{}
}
func
(
m
*
GuessGamePublish
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGamePublish
)
ProtoMessage
()
{}
func
(
*
GuessGamePublish
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
9
}
}
func
(
m
*
QueryPBGameInfo
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_
QueryPBGameInfo
.
Unmarshal
(
m
,
b
)
func
(
m
*
GuessGamePublish
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_
GuessGamePublish
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
QueryPBGameInfo
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_
QueryPBGameInfo
.
Marshal
(
b
,
m
,
deterministic
)
func
(
m
*
GuessGamePublish
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_
GuessGamePublish
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
QueryPBGameInfo
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_
QueryPBGameInfo
.
Merge
(
m
,
src
)
func
(
m
*
GuessGamePublish
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_
GuessGamePublish
.
Merge
(
m
,
src
)
}
func
(
m
*
QueryPBGameInfo
)
XXX_Size
()
int
{
return
xxx_messageInfo_
QueryPBGameInfo
.
Size
(
m
)
func
(
m
*
GuessGamePublish
)
XXX_Size
()
int
{
return
xxx_messageInfo_
GuessGamePublish
.
Size
(
m
)
}
func
(
m
*
QueryPBGameInfo
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_
QueryPBGameInfo
.
DiscardUnknown
(
m
)
func
(
m
*
GuessGamePublish
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_
GuessGamePublish
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_
QueryPBGameInfo
proto
.
InternalMessageInfo
var
xxx_messageInfo_
GuessGamePublish
proto
.
InternalMessageInfo
func
(
m
*
QueryPBGameInfo
)
GetGameId
()
string
{
func
(
m
*
GuessGamePublish
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
QueryPBGameInfo
)
GetAddr
()
string
{
func
(
m
*
GuessGamePublish
)
GetResult
()
string
{
if
m
!=
nil
{
return
m
.
Addr
return
m
.
Result
}
return
""
}
func
(
m
*
QueryPBGameInfo
)
GetStatus
()
int32
{
if
m
!=
nil
{
return
m
.
Status
}
return
0
}
func
(
m
*
QueryPBGameInfo
)
GetIndex
()
int64
{
func
(
m
*
GuessGamePublish
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Index
return
m
.
Fee
}
return
0
}
type
ReplyPBGame
struct
{
Game
*
PokerBull
`protobuf:"bytes,1,opt,name=game,proto3" json:"game,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReplyPBGame
)
Reset
()
{
*
m
=
ReplyPBGame
{}
}
func
(
m
*
ReplyPBGame
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyPBGame
)
ProtoMessage
()
{}
func
(
*
ReplyPBGame
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
26
}
}
func
(
m
*
ReplyPBGame
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReplyPBGame
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReplyPBGame
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReplyPBGame
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReplyPBGame
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReplyPBGame
.
Merge
(
m
,
src
)
}
func
(
m
*
ReplyPBGame
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReplyPBGame
.
Size
(
m
)
}
func
(
m
*
ReplyPBGame
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReplyPBGame
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_ReplyPBGame
proto
.
InternalMessageInfo
func
(
m
*
ReplyPBGame
)
GetGame
()
*
PokerBull
{
if
m
!=
nil
{
return
m
.
Game
}
return
nil
}
type
QueryPBGameInfos
struct
{
GameIds
[]
string
`protobuf:"bytes,1,rep,name=gameIds,proto3" json:"gameIds,omitempty"`
//查询游戏结果
type
GuessGameQuery
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Ty
uint32
`protobuf:"varint,2,opt,name=ty,proto3" json:"ty,omitempty"`
Fee
int64
`protobuf:"varint,3,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
QueryPBGameInfos
)
Reset
()
{
*
m
=
QueryPBGameInfos
{}
}
func
(
m
*
QueryPBGameInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryPBGameInfos
)
ProtoMessage
()
{}
func
(
*
QueryPBGameInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
27
}
func
(
m
*
GuessGameQuery
)
Reset
()
{
*
m
=
GuessGameQuery
{}
}
func
(
m
*
GuessGameQuery
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameQuery
)
ProtoMessage
()
{}
func
(
*
GuessGameQuery
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
10
}
}
func
(
m
*
QueryPBGameInfos
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_
QueryPBGameInfos
.
Unmarshal
(
m
,
b
)
func
(
m
*
GuessGameQuery
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_
GuessGameQuery
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
QueryPBGameInfos
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_
QueryPBGameInfos
.
Marshal
(
b
,
m
,
deterministic
)
func
(
m
*
GuessGameQuery
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_
GuessGameQuery
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
QueryPBGameInfos
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_
QueryPBGameInfos
.
Merge
(
m
,
src
)
func
(
m
*
GuessGameQuery
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_
GuessGameQuery
.
Merge
(
m
,
src
)
}
func
(
m
*
QueryPBGameInfos
)
XXX_Size
()
int
{
return
xxx_messageInfo_
QueryPBGameInfos
.
Size
(
m
)
func
(
m
*
GuessGameQuery
)
XXX_Size
()
int
{
return
xxx_messageInfo_
GuessGameQuery
.
Size
(
m
)
}
func
(
m
*
QueryPBGameInfos
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_
QueryPBGameInfos
.
DiscardUnknown
(
m
)
func
(
m
*
GuessGameQuery
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_
GuessGameQuery
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_
QueryPBGameInfos
proto
.
InternalMessageInfo
var
xxx_messageInfo_
GuessGameQuery
proto
.
InternalMessageInfo
func
(
m
*
QueryPBGameInfos
)
GetGameIds
()
[]
string
{
func
(
m
*
GuessGameQuery
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
s
return
m
.
GameId
}
return
nil
}
type
ReplyPBGameList
struct
{
Games
[]
*
PokerBull
`protobuf:"bytes,1,rep,name=games,proto3" json:"games,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
ReplyPBGameList
)
Reset
()
{
*
m
=
ReplyPBGameList
{}
}
func
(
m
*
ReplyPBGameList
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyPBGameList
)
ProtoMessage
()
{}
func
(
*
ReplyPBGameList
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
28
}
return
""
}
func
(
m
*
ReplyPBGameList
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_ReplyPBGameList
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
ReplyPBGameList
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_ReplyPBGameList
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
ReplyPBGameList
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_ReplyPBGameList
.
Merge
(
m
,
src
)
}
func
(
m
*
ReplyPBGameList
)
XXX_Size
()
int
{
return
xxx_messageInfo_ReplyPBGameList
.
Size
(
m
)
}
func
(
m
*
ReplyPBGameList
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_ReplyPBGameList
.
DiscardUnknown
(
m
)
func
(
m
*
GuessGameQuery
)
GetTy
()
uint32
{
if
m
!=
nil
{
return
m
.
Ty
}
return
0
}
var
xxx_messageInfo_ReplyPBGameList
proto
.
InternalMessageInfo
func
(
m
*
ReplyPBGameList
)
GetGames
()
[]
*
PokerBull
{
func
(
m
*
GuessGameQuery
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Games
return
m
.
Fee
}
return
nil
return
0
}
type
QueryGuessGameInfo
struct
{
...
...
@@ -2286,7 +1135,7 @@ func (m *QueryGuessGameInfo) Reset() { *m = QueryGuessGameInfo{} }
func
(
m
*
QueryGuessGameInfo
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryGuessGameInfo
)
ProtoMessage
()
{}
func
(
*
QueryGuessGameInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
29
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
11
}
}
func
(
m
*
QueryGuessGameInfo
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2346,7 +1195,7 @@ func (m *ReplyGuessGameInfo) Reset() { *m = ReplyGuessGameInfo{} }
func
(
m
*
ReplyGuessGameInfo
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyGuessGameInfo
)
ProtoMessage
()
{}
func
(
*
ReplyGuessGameInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
30
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
12
}
}
func
(
m
*
ReplyGuessGameInfo
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2385,7 +1234,7 @@ func (m *QueryGuessGameInfos) Reset() { *m = QueryGuessGameInfos{} }
func
(
m
*
QueryGuessGameInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryGuessGameInfos
)
ProtoMessage
()
{}
func
(
*
QueryGuessGameInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
31
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
13
}
}
func
(
m
*
QueryGuessGameInfos
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2424,7 +1273,7 @@ func (m *ReplyGuessGameInfos) Reset() { *m = ReplyGuessGameInfos{} }
func
(
m
*
ReplyGuessGameInfos
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReplyGuessGameInfos
)
ProtoMessage
()
{}
func
(
*
ReplyGuessGameInfos
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
32
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
14
}
}
func
(
m
*
ReplyGuessGameInfos
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2472,7 +1321,7 @@ func (m *ReceiptPBGame) Reset() { *m = ReceiptPBGame{} }
func
(
m
*
ReceiptPBGame
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptPBGame
)
ProtoMessage
()
{}
func
(
*
ReceiptPBGame
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
33
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
15
}
}
func
(
m
*
ReceiptPBGame
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2565,8 +1414,8 @@ func (m *ReceiptPBGame) GetPreStatus() int32 {
type
ReceiptGuessGame
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
PreStatus
uint32
`protobuf:"varint,2,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
Status
uint32
`protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
PreStatus
int32
`protobuf:"varint,2,opt,name=preStatus,proto3" json:"preStatus,omitempty"`
Status
int32
`protobuf:"varint,3,opt,name=status,proto3" json:"status,omitempty"`
Addr
string
`protobuf:"bytes,4,opt,name=addr,proto3" json:"addr,omitempty"`
AdminAddr
string
`protobuf:"bytes,5,opt,name=adminAddr,proto3" json:"adminAddr,omitempty"`
PreIndex
int64
`protobuf:"varint,6,opt,name=preIndex,proto3" json:"preIndex,omitempty"`
...
...
@@ -2582,7 +1431,7 @@ func (m *ReceiptGuessGame) Reset() { *m = ReceiptGuessGame{} }
func
(
m
*
ReceiptGuessGame
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptGuessGame
)
ProtoMessage
()
{}
func
(
*
ReceiptGuessGame
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
34
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
16
}
}
func
(
m
*
ReceiptGuessGame
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2610,14 +1459,14 @@ func (m *ReceiptGuessGame) GetGameId() string {
return
""
}
func
(
m
*
ReceiptGuessGame
)
GetPreStatus
()
u
int32
{
func
(
m
*
ReceiptGuessGame
)
GetPreStatus
()
int32
{
if
m
!=
nil
{
return
m
.
PreStatus
}
return
0
}
func
(
m
*
ReceiptGuessGame
)
GetStatus
()
u
int32
{
func
(
m
*
ReceiptGuessGame
)
GetStatus
()
int32
{
if
m
!=
nil
{
return
m
.
Status
}
...
...
@@ -2690,7 +1539,7 @@ func (m *GuessStartTxReq) Reset() { *m = GuessStartTxReq{} }
func
(
m
*
GuessStartTxReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessStartTxReq
)
ProtoMessage
()
{}
func
(
*
GuessStartTxReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
35
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
17
}
}
func
(
m
*
GuessStartTxReq
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2822,7 +1671,7 @@ func (m *GuessBetTxReq) Reset() { *m = GuessBetTxReq{} }
func
(
m
*
GuessBetTxReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessBetTxReq
)
ProtoMessage
()
{}
func
(
*
GuessBetTxReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
36
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
18
}
}
func
(
m
*
GuessBetTxReq
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2875,7 +1724,7 @@ func (m *GuessAbortTxReq) Reset() { *m = GuessAbortTxReq{} }
func
(
m
*
GuessAbortTxReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessAbortTxReq
)
ProtoMessage
()
{}
func
(
*
GuessAbortTxReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
37
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
19
}
}
func
(
m
*
GuessAbortTxReq
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2915,7 +1764,7 @@ func (m *GuessPublishTxReq) Reset() { *m = GuessPublishTxReq{} }
func
(
m
*
GuessPublishTxReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessPublishTxReq
)
ProtoMessage
()
{}
func
(
*
GuessPublishTxReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
38
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
20
}
}
func
(
m
*
GuessPublishTxReq
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -2950,147 +1799,6 @@ func (m *GuessPublishTxReq) GetResult() string {
return
""
}
type
PBContinueTxReq
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Fee
int64
`protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBContinueTxReq
)
Reset
()
{
*
m
=
PBContinueTxReq
{}
}
func
(
m
*
PBContinueTxReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBContinueTxReq
)
ProtoMessage
()
{}
func
(
*
PBContinueTxReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
39
}
}
func
(
m
*
PBContinueTxReq
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBContinueTxReq
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBContinueTxReq
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBContinueTxReq
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBContinueTxReq
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBContinueTxReq
.
Merge
(
m
,
src
)
}
func
(
m
*
PBContinueTxReq
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBContinueTxReq
.
Size
(
m
)
}
func
(
m
*
PBContinueTxReq
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBContinueTxReq
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBContinueTxReq
proto
.
InternalMessageInfo
func
(
m
*
PBContinueTxReq
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
PBContinueTxReq
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Fee
}
return
0
}
type
PBQuitTxReq
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Fee
int64
`protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBQuitTxReq
)
Reset
()
{
*
m
=
PBQuitTxReq
{}
}
func
(
m
*
PBQuitTxReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBQuitTxReq
)
ProtoMessage
()
{}
func
(
*
PBQuitTxReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
40
}
}
func
(
m
*
PBQuitTxReq
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBQuitTxReq
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBQuitTxReq
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBQuitTxReq
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBQuitTxReq
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBQuitTxReq
.
Merge
(
m
,
src
)
}
func
(
m
*
PBQuitTxReq
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBQuitTxReq
.
Size
(
m
)
}
func
(
m
*
PBQuitTxReq
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBQuitTxReq
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBQuitTxReq
proto
.
InternalMessageInfo
func
(
m
*
PBQuitTxReq
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
PBQuitTxReq
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Fee
}
return
0
}
type
PBQueryReq
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
Fee
int64
`protobuf:"varint,2,opt,name=fee,proto3" json:"fee,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
PBQueryReq
)
Reset
()
{
*
m
=
PBQueryReq
{}
}
func
(
m
*
PBQueryReq
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PBQueryReq
)
ProtoMessage
()
{}
func
(
*
PBQueryReq
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
41
}
}
func
(
m
*
PBQueryReq
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_PBQueryReq
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
PBQueryReq
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_PBQueryReq
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
PBQueryReq
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_PBQueryReq
.
Merge
(
m
,
src
)
}
func
(
m
*
PBQueryReq
)
XXX_Size
()
int
{
return
xxx_messageInfo_PBQueryReq
.
Size
(
m
)
}
func
(
m
*
PBQueryReq
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_PBQueryReq
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_PBQueryReq
proto
.
InternalMessageInfo
func
(
m
*
PBQueryReq
)
GetGameId
()
string
{
if
m
!=
nil
{
return
m
.
GameId
}
return
""
}
func
(
m
*
PBQueryReq
)
GetFee
()
int64
{
if
m
!=
nil
{
return
m
.
Fee
}
return
0
}
// 索引value值
type
GuessGameRecord
struct
{
GameId
string
`protobuf:"bytes,1,opt,name=gameId,proto3" json:"gameId,omitempty"`
...
...
@@ -3105,7 +1813,7 @@ func (m *GuessGameRecord) Reset() { *m = GuessGameRecord{} }
func
(
m
*
GuessGameRecord
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameRecord
)
ProtoMessage
()
{}
func
(
*
GuessGameRecord
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
42
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
21
}
}
func
(
m
*
GuessGameRecord
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -3159,7 +1867,7 @@ func (m *GuessGameIndexRecord) Reset() { *m = GuessGameIndexRecord{} }
func
(
m
*
GuessGameIndexRecord
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameIndexRecord
)
ProtoMessage
()
{}
func
(
*
GuessGameIndexRecord
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
43
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
22
}
}
func
(
m
*
GuessGameIndexRecord
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -3205,7 +1913,7 @@ func (m *GuessGameRecords) Reset() { *m = GuessGameRecords{} }
func
(
m
*
GuessGameRecords
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
GuessGameRecords
)
ProtoMessage
()
{}
func
(
*
GuessGameRecords
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
44
}
return
fileDescriptor_7574406c5d3430e8
,
[]
int
{
23
}
}
func
(
m
*
GuessGameRecords
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
...
@@ -3239,30 +1947,12 @@ func init() {
proto
.
RegisterType
((
*
GuessBet
)(
nil
),
"types.GuessBet"
)
proto
.
RegisterType
((
*
GuessBetStat
)(
nil
),
"types.GuessBetStat"
)
proto
.
RegisterType
((
*
GuessBetStatItem
)(
nil
),
"types.GuessBetStatItem"
)
proto
.
RegisterType
((
*
PokerBull
)(
nil
),
"types.PokerBull"
)
proto
.
RegisterType
((
*
PBHand
)(
nil
),
"types.PBHand"
)
proto
.
RegisterType
((
*
PBPlayer
)(
nil
),
"types.PBPlayer"
)
proto
.
RegisterType
((
*
PBResult
)(
nil
),
"types.PBResult"
)
proto
.
RegisterType
((
*
PBPoker
)(
nil
),
"types.PBPoker"
)
proto
.
RegisterType
((
*
PBGameAction
)(
nil
),
"types.PBGameAction"
)
proto
.
RegisterType
((
*
PBGameStart
)(
nil
),
"types.PBGameStart"
)
proto
.
RegisterType
((
*
PBGameContinue
)(
nil
),
"types.PBGameContinue"
)
proto
.
RegisterType
((
*
PBGameQuit
)(
nil
),
"types.PBGameQuit"
)
proto
.
RegisterType
((
*
PBGameQuery
)(
nil
),
"types.PBGameQuery"
)
proto
.
RegisterType
((
*
GuessGameAction
)(
nil
),
"types.GuessGameAction"
)
proto
.
RegisterType
((
*
GuessGameStart
)(
nil
),
"types.GuessGameStart"
)
proto
.
RegisterType
((
*
GuessGameBet
)(
nil
),
"types.GuessGameBet"
)
proto
.
RegisterType
((
*
GuessGameAbort
)(
nil
),
"types.GuessGameAbort"
)
proto
.
RegisterType
((
*
GuessGamePublish
)(
nil
),
"types.GuessGamePublish"
)
proto
.
RegisterType
((
*
GuessGameQuery
)(
nil
),
"types.GuessGameQuery"
)
proto
.
RegisterType
((
*
QueryPBGameListByStatusAndPlayerNum
)(
nil
),
"types.QueryPBGameListByStatusAndPlayerNum"
)
proto
.
RegisterType
((
*
PBGameRecord
)(
nil
),
"types.PBGameRecord"
)
proto
.
RegisterType
((
*
PBGameIndexRecord
)(
nil
),
"types.PBGameIndexRecord"
)
proto
.
RegisterType
((
*
PBGameRecords
)(
nil
),
"types.PBGameRecords"
)
proto
.
RegisterType
((
*
QueryPBGameInfo
)(
nil
),
"types.QueryPBGameInfo"
)
proto
.
RegisterType
((
*
ReplyPBGame
)(
nil
),
"types.ReplyPBGame"
)
proto
.
RegisterType
((
*
QueryPBGameInfos
)(
nil
),
"types.QueryPBGameInfos"
)
proto
.
RegisterType
((
*
ReplyPBGameList
)(
nil
),
"types.ReplyPBGameList"
)
proto
.
RegisterType
((
*
QueryGuessGameInfo
)(
nil
),
"types.QueryGuessGameInfo"
)
proto
.
RegisterType
((
*
ReplyGuessGameInfo
)(
nil
),
"types.ReplyGuessGameInfo"
)
proto
.
RegisterType
((
*
QueryGuessGameInfos
)(
nil
),
"types.QueryGuessGameInfos"
)
...
...
@@ -3273,9 +1963,6 @@ func init() {
proto
.
RegisterType
((
*
GuessBetTxReq
)(
nil
),
"types.GuessBetTxReq"
)
proto
.
RegisterType
((
*
GuessAbortTxReq
)(
nil
),
"types.GuessAbortTxReq"
)
proto
.
RegisterType
((
*
GuessPublishTxReq
)(
nil
),
"types.GuessPublishTxReq"
)
proto
.
RegisterType
((
*
PBContinueTxReq
)(
nil
),
"types.PBContinueTxReq"
)
proto
.
RegisterType
((
*
PBQuitTxReq
)(
nil
),
"types.PBQuitTxReq"
)
proto
.
RegisterType
((
*
PBQueryReq
)(
nil
),
"types.PBQueryReq"
)
proto
.
RegisterType
((
*
GuessGameRecord
)(
nil
),
"types.GuessGameRecord"
)
proto
.
RegisterType
((
*
GuessGameIndexRecord
)(
nil
),
"types.GuessGameIndexRecord"
)
proto
.
RegisterType
((
*
GuessGameRecords
)(
nil
),
"types.GuessGameRecords"
)
...
...
@@ -3284,120 +1971,87 @@ func init() {
func
init
()
{
proto
.
RegisterFile
(
"guess.proto"
,
fileDescriptor_7574406c5d3430e8
)
}
var
fileDescriptor_7574406c5d3430e8
=
[]
byte
{
// 1808 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xe4
,
0x59
,
0x4b
,
0x6f
,
0xdb
,
0xca
,
0x15
,
0xb6
,
0x1e
,
0xd4
,
0xe3
,
0xc8
,
0x92
,
0xec
,
0x71
,
0xe2
,
0xcb
,
0x1a
,
0x17
,
0x85
,
0xcb
,
0xeb
,
0xde
,
0x28
,
0x45
,
0x93
,
0x16
,
0x32
,
0x90
,
0x36
,
0x29
,
0x5a
,
0xc0
,
0x4a
,
0x80
,
0xd8
,
0x40
,
0x10
,
0x28
,
0xe3
,
0x14
,
0xe9
,
0x96
,
0x92
,
0xc6
,
0x32
,
0x11
,
0x89
,
0x94
,
0x49
,
0x2a
,
0xb1
,
0x76
,
0x45
,
0xdb
,
0x6d
,
0x17
,
0x5d
,
0xf4
,
0x17
,
0x74
,
0xd3
,
0x3f
,
0xd5
,
0x75
,
0x81
,
0xfe
,
0x81
,
0x6e
,
0x8b
,
0x39
,
0x67
,
0x86
,
0x1c
,
0x52
,
0x94
,
0x1c
,
0x07
,
0xed
,
0xaa
,
0xbb
,
0x39
,
0x0f
,
0xcd
,
0x9c
,
0xf7
,
0x7c
,
0x43
,
0x41
,
0x6b
,
0xba
,
0x14
,
0x51
,
0xf4
,
0x74
,
0x11
,
0x06
,
0x71
,
0xc0
,
0xac
,
0x78
,
0xb5
,
0x10
,
0xd1
,
0xd1
,
0x7e
,
0x1c
,
0xba
,
0x7e
,
0xe4
,
0x8e
,
0x63
,
0x2f
,
0xf0
,
0x49
,
0xe2
,
0xfc
,
0xcb
,
0x82
,
0xe6
,
0x6b
,
0xa9
,
0xf9
,
0xda
,
0x9d
,
0x0b
,
0x76
,
0x08
,
0xb5
,
0xa9
,
0x3b
,
0x17
,
0x17
,
0x13
,
0xbb
,
0x74
,
0x5c
,
0xea
,
0x35
,
0xb9
,
0xa2
,
0x24
,
0x3f
,
0x8a
,
0xdd
,
0x78
,
0x19
,
0xd9
,
0xe5
,
0xe3
,
0x52
,
0xaf
,
0xcd
,
0x15
,
0xc5
,
0xbe
,
0x85
,
0xe6
,
0x22
,
0x14
,
0x97
,
0x24
,
0xaa
,
0xa0
,
0x28
,
0x65
,
0x48
,
0x69
,
0x14
,
0xbb
,
0x61
,
0xfc
,
0xde
,
0x9b
,
0x0b
,
0xbb
,
0x7a
,
0x5c
,
0xea
,
0x55
,
0x78
,
0xca
,
0x60
,
0xc7
,
0xd0
,
0x22
,
0xe2
,
0xf6
,
0xdc
,
0x8d
,
0xae
,
0x6d
,
0x0b
,
0x0f
,
0x34
,
0x59
,
0xec
,
0x01
,
0x58
,
0x71
,
0xb0
,
0xf0
,
0xc6
,
0x76
,
0x0d
,
0x65
,
0x44
,
0xb0
,
0x23
,
0x68
,
0x8c
,
0xdd
,
0x58
,
0x4c
,
0x83
,
0x70
,
0x65
,
0xd7
,
0x51
,
0x90
,
0xd0
,
0xcc
,
0x86
,
0x7a
,
0xb0
,
0x90
,
0xde
,
0x45
,
0x76
,
0x03
,
0x45
,
0x9a
,
0x94
,
0x92
,
0xb9
,
0x7b
,
0x8b
,
0x96
,
0x34
,
0x49
,
0xa2
,
0x48
,
0x69
,
0xe5
,
0xdc
,
0xbd
,
0x3d
,
0x17
,
0xde
,
0xf4
,
0x3a
,
0xb6
,
0x81
,
0xac
,
0x4c
,
0x18
,
0xe8
,
0xf9
,
0x6a
,
0x3e
,
0x0a
,
0x66
,
0x76
,
0x8b
,
0x22
,
0x42
,
0x14
,
0x63
,
0x50
,
0x15
,
0xb7
,
0x62
,
0x6c
,
0xef
,
0x22
,
0x17
,
0xd7
,
0x52
,
0x37
,
0xf0
,
0xc5
,
0x40
,
0xc4
,
0x76
,
0x9b
,
0xa2
,
0x44
,
0x94
,
0x3a
,
0x7b
,
0x20
,
0xe2
,
0xc8
,
0xee
,
0xa0
,
0x40
,
0x93
,
0xec
,
0x04
,
0xda
,
0x6a
,
0xf9
,
0x76
,
0x39
,
0x1f
,
0x89
,
0xd0
,
0xee
,
0xa2
,
0x3c
,
0xcb
,
0x64
,
0x7b
,
0x50
,
0xb9
,
0x12
,
0xc2
,
0xde
,
0x3b
,
0x2e
,
0xf5
,
0xaa
,
0x5c
,
0x2e
,
0xe5
,
0x8e
,
0x57
,
0x42
,
0x9c
,
0x4d
,
0x26
,
0xa1
,
0xbd
,
0x4f
,
0xde
,
0x28
,
0x52
,
0xda
,
0x20
,
0x6e
,
0x17
,
0x5e
,
0x28
,
0x6c
,
0x46
,
0xf6
,
0x12
,
0xc5
,
0x1c
,
0xd8
,
0xa5
,
0x95
,
0x72
,
0xf4
,
0x00
,
0x1d
,
0xcd
,
0xf0
,
0x64
,
0x24
,
0xdc
,
0xc9
,
0xdc
,
0xf3
,
0x71
,
0xdf
,
0x07
,
0xf8
,
0xf3
,
0x94
,
0xc1
,
0x7e
,
0x08
,
0x30
,
0x4a
,
0x0d
,
0x7d
,
0x88
,
0x86
,
0x1a
,
0x1c
,
0xd6
,
0x03
,
0x6b
,
0x31
,
0x73
,
0x57
,
0x91
,
0x7d
,
0x78
,
0x5c
,
0xe9
,
0xb5
,
0xfa
,
0xec
,
0x29
,
0xd6
,
0xdc
,
0x53
,
0x2c
,
0xae
,
0xe1
,
0xcc
,
0x5d
,
0x89
,
0x90
,
0x93
,
0x82
,
0xb4
,
0x31
,
0x14
,
0xd1
,
0x72
,
0x16
,
0xdb
,
0xdf
,
0x90
,
0x8d
,
0x44
,
0xb1
,
0x27
,
0x50
,
0x1f
,
0x89
,
0x58
,
0x16
,
0x8f
,
0x6d
,
0x1f
,
0x97
,
0x7a
,
0xad
,
0xfe
,
0x81
,
0xb9
,
0xc7
,
0x80
,
0x44
,
0x5c
,
0xeb
,
0xc8
,
0xf2
,
0xf0
,
0xfc
,
0x89
,
0xb8
,
0xb5
,
0x7f
,
0x80
,
0xbe
,
0x10
,
0x21
,
0xcb
,
0x63
,
0x11
,
0x8a
,
0x0b
,
0x14
,
0x1c
,
0xa1
,
0x20
,
0xa1
,
0x9d
,
0x57
,
0xd0
,
0x32
,
0xcc
,
0x91
,
0x39
,
0x74
,
0xa5
,
0xab
,
0x54
,
0xeb
,
0xb8
,
0x66
,
0x3f
,
0x82
,
0xca
,
0x48
,
0xc4
,
0x58
,
0xe6
,
0xad
,
0x7e
,
0x37
,
0x77
,
0x3e
,
0x97
,
0x32
,
0xe7
,
0xef
,
0x25
,
0x68
,
0x68
,
0x0e
,
0xe6
,
0x1c
,
0x4b
,
0x4c
,
0x77
,
0x0c
,
0x51
,
0xb9
,
0x68
,
0x95
,
0xd7
,
0xa2
,
0x75
,
0x04
,
0x0d
,
0x2f
,
0xfa
,
0xe0
,
0xf9
,
0xbe
,
0x08
,
0xb1
,
0x71
,
0x1a
,
0x3c
,
0xa1
,
0xe5
,
0x9e
,
0x8b
,
0x30
,
0xb8
,
0xf2
,
0x62
,
0x6c
,
0x9a
,
0x36
,
0x57
,
0x54
,
0xea
,
0xb0
,
0xb5
,
0xc9
,
0xe1
,
0x5a
,
0xce
,
0xe1
,
0x3f
,
0x97
,
0x60
,
0xd7
,
0x0c
,
0x9e
,
0x2c
,
0xb8
,
0x38
,
0x88
,
0xdd
,
0xd9
,
0x40
,
0x60
,
0x13
,
0x46
,
0x68
,
0x75
,
0x9b
,
0x67
,
0x99
,
0xac
,
0x07
,
0x5d
,
0xcd
,
0xc8
,
0x7a
,
0x90
,
0x67
,
0xb3
,
0x27
,
0x60
,
0x79
,
0xb1
,
0x98
,
0xcb
,
0xe6
,
0x97
,
0x49
,
0xff
,
0xa6
,
0x20
,
0x61
,
0x17
,
0xb1
,
0x98
,
0x73
,
0xd2
,
0x72
,
0xae
,
0x61
,
0x2f
,
0x2f
,
0xfa
,
0xea
,
0x08
,
0x7e
,
0x0b
,
0x4d
,
0x49
,
0x91
,
0x1b
,
0x6a
,
0xf6
,
0x24
,
0x0c
,
0xe7
,
0xdf
,
0x15
,
0x68
,
0x0e
,
0x83
,
0x8f
,
0x22
,
0x1c
,
0x2c
,
0x67
,
0xb3
,
0x2f
,
0x9c
,
0x6b
,
0x96
,
0x39
,
0xd7
,
0xd2
,
0xc9
,
0x55
,
0xb9
,
0x63
,
0x72
,
0x55
,
0x0b
,
0x27
,
0xd7
,
0x27
,
0x77
,
0xb6
,
0x14
,
0x3a
,
0x53
,
0x48
,
0xb0
,
0x13
,
0xb0
,
0x16
,
0xd2
,
0x24
,
0x4c
,
0x53
,
0xab
,
0xdf
,
0x51
,
0xc1
,
0x1a
,
0x0e
,
0xd0
,
0x50
,
0x4e
,
0x42
,
0xf6
,
0x18
,
0xea
,
0x0b
,
0xac
,
0xcf
,
0xc8
,
0xae
,
0x63
,
0x50
,
0xbb
,
0xa9
,
0x1e
,
0xb5
,
0x91
,
0x96
,
0xe3
,
0xf8
,
0xc5
,
0xe5
,
0xdb
,
0xe5
,
0x1c
,
0x07
,
0x9e
,
0xc5
,
0x53
,
0x86
,
0xdc
,
0x88
,
0x1a
,
0x2b
,
0xb2
,
0x9b
,
0xb9
,
0x8d
,
0x38
,
0xf2
,
0xb9
,
0x96
,
0xa7
,
0x95
,
0x05
,
0x66
,
0x65
,
0xd1
,
0x74
,
0xff
,
0x44
,
0xa5
,
0xd5
,
0xa2
,
0x28
,
0x24
,
0x0c
,
0x59
,
0x77
,
0x37
,
0x4b
,
0x8f
,
0x42
,
0xb4
,
0x4b
,
0x75
,
0xa7
,
0x69
,
0x99
,
0x3b
,
0x5c
,
0x53
,
0x80
,
0xda
,
0x18
,
0x20
,
0x83
,
0x23
,
0xe5
,
0x13
,
0xe1
,
0xce
,
0x44
,
0x88
,
0xa3
,
0xa6
,
0x43
,
0xf2
,
0x94
,
0x23
,
0x4f
,
0xf6
,
0xa2
,
0x0f
,
0xae
,
0x17
,
0x7b
,
0xfe
,
0x14
,
0x67
,
0x62
,
0x83
,
0xa7
,
0x8c
,
0xec
,
0xad
,
0xb3
,
0xa7
,
0xdc
,
0xd6
,
0x0c
,
0xe7
,
0x0f
,
0x25
,
0xa8
,
0x0d
,
0x07
,
0xe7
,
0xae
,
0x3f
,
0x91
,
0x6e
,
0x8d
,
0xdd
,
0x70
,
0x22
,
0xab
,
0xbc
,
0xd2
,
0xb3
,
0x38
,
0x11
,
0xc6
,
0xf8
,
0x51
,
0x49
,
0x57
,
0xe3
,
0xc7
,
0x86
,
0xba
,
0x1c
,
0x01
,
0x22
,
0xa2
,
0x72
,
0x6a
,
0x72
,
0x4d
,
0x62
,
0x78
,
0x64
,
0x73
,
0x62
,
0xaa
,
0x1b
,
0x9c
,
0x08
,
0x19
,
0x80
,
0x99
,
0xf8
,
0x24
,
0x42
,
0x77
,
0x4a
,
0x79
,
0xb6
,
0x78
,
0x42
,
0x3b
,
0x9f
,
0xa1
,
0xa1
,
0xd3
,
0xc5
,
0xbe
,
0x03
,
0xeb
,
0xda
,
0xf5
,
0x95
,
0x15
,
0xad
,
0x7e
,
0x3b
,
0xc9
,
0x82
,
0xb4
,
0x91
,
0x93
,
0xcc
,
0x3c
,
0xbc
,
0x9c
,
0x3d
,
0xfc
,
0x10
,
0x6a
,
0x31
,
0xc5
,
0x91
,
0x0a
,
0x51
,
0x51
,
0xd2
,
0xa8
,
0x50
,
0xb8
,
0x93
,
0x95
,
0x36
,
0x0a
,
0x09
,
0xe7
,
0x6f
,
0x25
,
0x79
,
0x32
,
0xe5
,
0xf7
,
0xcb
,
0x4e
,
0x3e
,
0x84
,
0xda
,
0x67
,
0x9a
,
0x43
,
0x74
,
0xb0
,
0xa2
,
0x32
,
0xee
,
0x55
,
0xb2
,
0xee
,
0xc9
,
0xdf
,
0x50
,
0xb6
,
0x54
,
0xf1
,
0x2b
,
0x8a
,
0x7d
,
0x0f
,
0x1d
,
0x5a
,
0xbd
,
0xc9
,
0x06
,
0x26
,
0xc7
,
0x75
,
0x9e
,
0x43
,
0x5d
,
0x55
,
0xfd
,
0x86
,
0x1c
,
0xd9
,
0x50
,
0x5f
,
0x04
,
0x9e
,
0x1f
,
0x2b
,
0xab
,
0x2c
,
0xae
,
0x49
,
0xe7
,
0x1f
,
0x25
,
0xd8
,
0x1d
,
0x0e
,
0x24
,
0x5a
,
0x39
,
0x43
,
0x1c
,
0xc3
,
0x7e
,
0x02
,
0x16
,
0xb6
,
0x1e
,
0xb6
,
0x76
,
0x7a
,
0xef
,
0x90
,
0xce
,
0xa5
,
0x94
,
0x9c
,
0xef
,
0x70
,
0x52
,
0x61
,
0xa7
,
0xd0
,
0x18
,
0x07
,
0x7e
,
0xec
,
0xf9
,
0x4b
,
0xa1
,
0x46
,
0xfc
,
0xc3
,
0x8c
,
0xfa
,
0x4b
,
0x25
,
0x3c
,
0xdf
,
0xe1
,
0x89
,
0x22
,
0x7b
,
0x04
,
0x55
,
0x59
,
0xba
,
0x18
,
0x84
,
0x56
,
0x7f
,
0x3f
,
0xf3
,
0x83
,
0x77
,
0x4b
,
0x4f
,
0x6e
,
0x8f
,
0x0a
,
0xd2
,
0x92
,
0x9b
,
0xa5
,
0x08
,
0x29
,
0x23
,
0x79
,
0x4b
,
0xde
,
0x49
,
0x89
,
0xb4
,
0x04
,
0x55
,
0x58
,
0x07
,
0xca
,
0xf1
,
0x0a
,
0xdb
,
0xcd
,
0xe2
,
0xe5
,
0x78
,
0x35
,
0xa8
,
0xab
,
0x89
,
0xe1
,
0x9c
,
0x41
,
0xcb
,
0x30
,
0x3d
,
0x9d
,
0x24
,
0x25
,
0x73
,
0x92
,
0x64
,
0x1a
,
0xbf
,
0x9c
,
0x6b
,
0x7c
,
0xa7
,
0x07
,
0x9d
,
0xac
,
0x3b
,
0x9b
,
0xe6
,
0x9f
,
0x73
,
0x02
,
0x90
,
0xfa
,
0xb1
,
0x51
,
0xeb
,
0xc7
,
0xda
,
0x24
,
0xf4
,
0x61
,
0xa3
,
0xda
,
0x5f
,
0xcb
,
0xd0
,
0x4d
,
0xa0
,
0xa4
,
0x4a
,
0xce
,
0x93
,
0x6c
,
0x72
,
0x1e
,
0x9a
,
0xf7
,
0x43
,
0x41
,
0x7e
,
0x1e
,
0x99
,
0xb7
,
0xef
,
0x41
,
0x5e
,
0x79
,
0x20
,
0xa4
,
0xaa
,
0xd4
,
0x90
,
0xfb
,
0xba
,
0xa3
,
0x20
,
0xd4
,
0x49
,
0x59
,
0xdb
,
0xf7
,
0x4c
,
0x0a
,
0xe5
,
0xbe
,
0xa8
,
0xc5
,
0x4e
,
0xa1
,
0xbe
,
0x58
,
0x8e
,
0x66
,
0x9e
,
0x9a
,
0xd6
,
0xb9
,
0x8b
,
0x4a
,
0xfe
,
0x60
,
0x48
,
0xe2
,
0xf3
,
0x1d
,
0xae
,
0x35
,
0xe5
,
0x19
,
0x94
,
0x4e
,
0xab
,
0xf8
,
0x8c
,
0xc2
,
0x8c
,
0xd6
,
0xf0
,
0x22
,
0xca
,
0x64
,
0xf4
,
0xf7
,
0x15
,
0xe8
,
0x64
,
0x1d
,
0x4e
,
0x91
,
0x6d
,
0xc9
,
0x44
,
0xb6
,
0x06
,
0x7a
,
0x2d
,
0x67
,
0xd1
,
0xab
,
0x89
,
0x79
,
0x2b
,
0xeb
,
0x98
,
0x57
,
0x23
,
0xdb
,
0xea
,
0x16
,
0x64
,
0x6b
,
0x6d
,
0x46
,
0xb6
,
0xb5
,
0x42
,
0x64
,
0x5b
,
0x2f
,
0x44
,
0xb6
,
0x8d
,
0x4d
,
0xc8
,
0xb6
,
0x79
,
0x07
,
0xb2
,
0x85
,
0x2d
,
0xc8
,
0xb6
,
0x55
,
0x88
,
0x6c
,
0x77
,
0x37
,
0x21
,
0xdb
,
0xf6
,
0x56
,
0x64
,
0xdb
,
0x59
,
0x47
,
0xb6
,
0xce
,
0xef
,
0x14
,
0x0c
,
0x52
,
0x55
,
0xb4
,
0x0d
,
0x0f
,
0x28
,
0x2c
,
0x52
,
0xce
,
0x60
,
0x11
,
0x1b
,
0x91
,
0xa9
,
0xb4
,
0x5a
,
0x21
,
0x0d
,
0x4d
,
0xca
,
0x5e
,
0xcb
,
0x16
,
0xdd
,
0xc6
,
0xf6
,
0x18
,
0x28
,
0xec
,
0x63
,
0x54
,
0xdb
,
0x36
,
0x3b
,
0x8c
,
0x2b
,
0x2a
,
0x41
,
0xc8
,
0xce
,
0x2f
,
0x8d
,
0xd3
,
0xb6
,
0x36
,
0xa3
,
0xaa
,
0xc6
,
0xb2
,
0xae
,
0x46
,
0xe7
,
0x06
,
0xbe
,
0xc3
,
0x1f
,
0x50
,
0x23
,
0xbf
,
0xf1
,
0xa2
,
0x78
,
0xb0
,
0xa2
,
0x0b
,
0xf3
,
0xcc
,
0x9f
,
0x0c
,
0x13
,
0xcc
,
0x90
,
0x02
,
0xa2
,
0x52
,
0x1e
,
0x10
,
0x6d
,
0x1e
,
0x38
,
0x29
,
0x7c
,
0xa8
,
0x18
,
0xf0
,
0xc1
,
0x79
,
0xaf
,
0x07
,
0x35
,
0x17
,
0xe3
,
0x20
,
0x9c
,
0xdc
,
0x1b
,
0x84
,
0x15
,
0xef
,
0x7a
,
0x06
,
0xfb
,
0xb4
,
0x2b
,
0xa2
,
0x90
,
0x3b
,
0xb6
,
0x4e
,
0xb6
,
0x28
,
0x9b
,
0x5b
,
0xfc
,
0x06
,
0xda
,
0xa6
,
0x61
,
0x91
,
0x7c
,
0x78
,
0x84
,
0xb4
,
0x54
,
0x37
,
0xe5
,
0x41
,
0x66
,
0x74
,
0x93
,
0x1a
,
0xd7
,
0x3a
,
0xce
,
0x47
,
0xe8
,
0x1a
,
0xb1
,
0xbc
,
0xf0
,
0xaf
,
0x82
,
0x8d
,
0x06
,
0xe8
,
0x27
,
0x46
,
0xd9
,
0x78
,
0x62
,
0xa4
,
0xfe
,
0x56
,
0x8a
,
0xfd
,
0xad
,
0x9a
,
0xc6
,
0x9e
,
0x42
,
0x8b
,
0x8b
,
0xc5
,
0x4c
,
0x1d
,
0xc6
,
0x4e
,
0xa0
,
0x2a
,
0xb7
,
0x56
,
0xf3
,
0x74
,
0x4f
,
0xdb
,
0xa9
,
0x91
,
0x2e
,
0x47
,
0xa9
,
0xf3
,
0x53
,
0xd8
,
0xcb
,
0x59
,
0x88
,
0x57
,
0x2a
,
0x19
,
0x45
,
0x4e
,
0x36
,
0xb9
,
0x26
,
0x9d
,
0xe7
,
0xd0
,
0x35
,
0x8e
,
0x90
,
0xb5
,
0xc1
,
0xbe
,
0x07
,
0x4b
,
0x4a
,
0x75
,
0x3c
,
0xd6
,
0xcf
,
0x21
,
0xb1
,
0xe3
,
0x03
,
0xc3
,
0x83
,
0x92
,
0xaa
,
0xfc
,
0x1f
,
0x47
,
0xe3
,
0x05
,
0x30
,
0x34
,
0x35
,
0x7b
,
0x5e
,
0x71
,
0x50
,
0x12
,
0x1d
,
0x15
,
0x94
,
0x9f
,
0xc1
,
0xc1
,
0xba
,
0xad
,
0xdb
,
0xe2
,
0xf2
,
0x6b
,
0x38
,
0x58
,
0x3f
,
0x2c
,
0xda
,
0x14
,
0x9b
,
0xf4
,
0x38
,
0x15
,
0x9b
,
0xbf
,
0x94
,
0xa1
,
0xcd
,
0xc5
,
0x58
,
0x78
,
0x8b
,
0x58
,
0x25
,
0xef
,
0xbe
,
0x1d
,
0xa0
,
0xe3
,
0x55
,
0x31
,
0xe2
,
0x55
,
0x18
,
0x97
,
0x2c
,
0x54
,
0xb7
,
0xf2
,
0x50
,
0x3d
,
0xd3
,
0xbd
,
0xb5
,
0x82
,
0xee
,
0x25
,
0x88
,
0x51
,
0xcf
,
0x41
,
0x8c
,
0x14
,
0x82
,
0x37
,
0xf2
,
0x10
,
0xdc
,
0x4e
,
0x1f
,
0x29
,
0x4d
,
0x0a
,
0x9a
,
0xf9
,
0x26
,
0x49
,
0xc0
,
0x39
,
0xe4
,
0xc1
,
0xf9
,
0x9f
,
0xca
,
0xb0
,
0xa7
,
0x62
,
0x72
,
0xf7
,
0x57
,
0xa7
,
0xcc
,
0x56
,
0xe5
,
0xfc
,
0xd7
,
0xa5
,
0x6c
,
0xe1
,
0xb4
,
0xd7
,
0x82
,
0x56
,
0x35
,
0x82
,
0x96
,
0xf9
,
0xb2
,
0x61
,
0xe5
,
0xbf
,
0x6c
,
0x6c
,
0x79
,
0x41
,
0xa7
,
0xe1
,
0xae
,
0xe7
,
0xde
,
0xdc
,
0xc9
,
0x7d
,
0xdc
,
0xc8
,
0xdd
,
0xc7
,
0x0e
,
0xec
,
0x92
,
0x25
,
0x2f
,
0xaf
,
0x5d
,
0x7f
,
0x4a
,
0x9f
,
0x9b
,
0x1a
,
0x3c
,
0xc3
,
0x73
,
0xfe
,
0x58
,
0x51
,
0x50
,
0xe9
,
0x92
,
0x1e
,
0x8d
,
0x5c
,
0xdc
,
0xdc
,
0x1b
,
0x13
,
0x6c
,
0x7f
,
0xa3
,
0xde
,
0x03
,
0x15
,
0xb4
,
0xff
,
0x5f
,
0x50
,
0x41
,
0x3b
,
0x87
,
0x0a
,
0x2e
,
0xa1
,
0xad
,
0xbf
,
0x46
,
0x50
,
0x0a
,
0xee
,
0x0b
,
0x0b
,
0x18
,
0x54
,
0x25
,
0x0e
,
0x50
,
0x05
,
0x88
,
0x6b
,
0xe7
,
0xb1
,
0xca
,
0x2c
,
0x82
,
0x81
,
0xad
,
0xdb
,
0x3a
,
0x2f
,
0x61
,
0x9f
,
0x3e
,
0x47
,
0x11
,
0x1a
,
0xb8
,
0xd3
,
0x86
,
0x42
,
0x48
,
0xf0
,
0x2b
,
0xe8
,
0x0e
,
0x07
,
0x1a
,
0xe8
,
0x6f
,
0xdf
,
0x42
,
0xc5
,
0x95
,
0xee
,
0x42
,
0xb9
,
0x74
,
0x7e
,
0x21
,
0x91
,
0xfd
,
0x3b
,
0x7c
,
0x97
,
0xdf
,
0xef
,
0x87
,
0xcf
,
0xe4
,
0xc3
,
0x01
,
0xa7
,
0xe9
,
0xfd
,
0x7e
,
0xf7
,
0xc1
,
0x78
,
0x22
,
0xfc
,
0x57
,
0x61
,
0xc1
,
0x2b
,
0x78
,
0x60
,
0x8c
,
0xe9
,
0xaf
,
0x45
,
0x06
,
0xaf
,
0x0c
,
0x8c
,
0xa6
,
0xc1
,
0xc1
,
0xcf
,
0xf3
,
0xe0
,
0xe0
,
0x70
,
0x6d
,
0xe0
,
0x67
,
0xf1
,
0x41
,
0xff
,
0x9f
,
0x25
,
0xb0
,
0xf0
,
0xeb
,
0x3b
,
0x7b
,
0x06
,
0x90
,
0xb6
,
0x39
,
0x2b
,
0x7e
,
0xfd
,
0x1c
,
0xe9
,
0xcf
,
0x32
,
0xbf
,
0xf5
,
0x23
,
0x6f
,
0xea
,
0xbf
,
0xbf
,
0x75
,
0x76
,
0x58
,
0xdf
,
0xf8
,
0xc2
,
0x58
,
0xf4
,
0x0c
,
0x2a
,
0xfa
,
0x8d
,
0x3e
,
0x8b
,
0x50
,
0x68
,
0xf1
,
0x8b
,
0xa8
,
0xe8
,
0x77
,
0x2f
,
0x14
,
0x36
,
0xd6
,
0x98
,
0x74
,
0xd3
,
0xd3
,
0xa8
,
0xe0
,
0xb7
,
0xa3
,
0x1a
,
0xfe
,
0x89
,
0x70
,
0xfa
,
0x9f
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0x6c
,
0x1e
,
0x01
,
0xe9
,
0x6d
,
0x18
,
0x00
,
0x00
,
// 1267 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xcc
,
0x58
,
0x4b
,
0x6f
,
0xdb
,
0xc6
,
0x13
,
0x8f
,
0x48
,
0x51
,
0x8f
,
0x91
,
0x65
,
0x2b
,
0xeb
,
0x3c
,
0xf6
,
0x6f
,
0x04
,
0x7f
,
0xa8
,
0x44
,
0xd0
,
0xaa
,
0x87
,
0xa4
,
0x85
,
0x02
,
0xf4
,
0x60
,
0xa0
,
0x07
,
0x2b
,
0x01
,
0x62
,
0xf7
,
0x50
,
0xb8
,
0x6b
,
0x17
,
0x3e
,
0x53
,
0xd2
,
0x5a
,
0x66
,
0x21
,
0x91
,
0x0c
,
0xb9
,
0x0a
,
0xa4
,
0x5b
,
0x81
,
0xf6
,
0xda
,
0x43
,
0x0f
,
0xfd
,
0x0e
,
0xfd
,
0x66
,
0x05
,
0xfa
,
0x29
,
0x8a
,
0x99
,
0x5d
,
0x8a
,
0x0f
,
0x51
,
0x32
,
0x1c
,
0xf4
,
0xd0
,
0x1b
,
0xe7
,
0xb1
,
0xb3
,
0x33
,
0xb3
,
0x33
,
0xbf
,
0x19
,
0x09
,
0x3a
,
0xb3
,
0xa5
,
0x4c
,
0x92
,
0xd7
,
0x51
,
0x1c
,
0xaa
,
0x90
,
0x39
,
0x6a
,
0x1d
,
0xc9
,
0xe4
,
0xe4
,
0xb1
,
0x8a
,
0xbd
,
0x20
,
0xf1
,
0x26
,
0xca
,
0x0f
,
0x03
,
0x2d
,
0x71
,
0xff
,
0x76
,
0xa0
,
0xfd
,
0x1e
,
0x35
,
0xdf
,
0x7b
,
0x0b
,
0xc9
,
0x9e
,
0x41
,
0x63
,
0xe6
,
0x2d
,
0xe4
,
0xc5
,
0x94
,
0xd7
,
0xfa
,
0xb5
,
0x41
,
0x5b
,
0x18
,
0x0a
,
0xf9
,
0x89
,
0xf2
,
0xd4
,
0x32
,
0xe1
,
0x56
,
0xbf
,
0x36
,
0x70
,
0x84
,
0xa1
,
0xd8
,
0x0b
,
0x68
,
0x47
,
0xb1
,
0xbc
,
0xd2
,
0x22
,
0x9b
,
0x44
,
0x19
,
0x03
,
0xa5
,
0x89
,
0xf2
,
0x62
,
0x75
,
0xed
,
0x2f
,
0x24
,
0xaf
,
0xf7
,
0x6b
,
0x03
,
0x5b
,
0x64
,
0x0c
,
0xd6
,
0x87
,
0x8e
,
0x26
,
0x56
,
0xe7
,
0x5e
,
0x72
,
0xc7
,
0x1d
,
0xba
,
0x30
,
0xcf
,
0x62
,
0x4f
,
0xc0
,
0x51
,
0x61
,
0xe4
,
0x4f
,
0x78
,
0x83
,
0x64
,
0x9a
,
0x60
,
0x27
,
0xd0
,
0x9a
,
0x78
,
0x4a
,
0xce
,
0xc2
,
0x78
,
0xcd
,
0x9b
,
0x24
,
0xd8
,
0xd0
,
0x8c
,
0x43
,
0x33
,
0x8c
,
0x30
,
0xba
,
0x84
,
0xb7
,
0x48
,
0x94
,
0x92
,
0x28
,
0x59
,
0x78
,
0x2b
,
0xf2
,
0xa4
,
0xad
,
0x25
,
0x86
,
0x44
,
0x2f
,
0x17
,
0xde
,
0xea
,
0x5c
,
0xfa
,
0xb3
,
0x3b
,
0xc5
,
0x41
,
0x7b
,
0xb9
,
0x61
,
0x50
,
0xe4
,
0xeb
,
0xc5
,
0x38
,
0x9c
,
0xf3
,
0x8e
,
0xce
,
0x88
,
0xa6
,
0x18
,
0x83
,
0xba
,
0x5c
,
0xc9
,
0x09
,
0x3f
,
0x20
,
0x2e
,
0x7d
,
0xa3
,
0x6e
,
0x18
,
0xc8
,
0x91
,
0x54
,
0xbc
,
0xdb
,
0xaf
,
0x0d
,
0xba
,
0xc2
,
0x50
,
0xe6
,
0xee
,
0x91
,
0x54
,
0x09
,
0x3f
,
0x24
,
0x41
,
0x4a
,
0xb2
,
0x97
,
0xd0
,
0x35
,
0x9f
,
0xdf
,
0x2f
,
0x17
,
0x63
,
0x19
,
0xf3
,
0x23
,
0x92
,
0x17
,
0x99
,
0xac
,
0x07
,
0xf6
,
0xad
,
0x94
,
0xbc
,
0x47
,
0xbe
,
0xe1
,
0x27
,
0x5a
,
0xbc
,
0x95
,
0xf2
,
0x6c
,
0x3a
,
0x8d
,
0xf9
,
0x63
,
0x1d
,
0x8d
,
0x21
,
0xd1
,
0x07
,
0xb9
,
0x8a
,
0xfc
,
0x58
,
0x72
,
0xa6
,
0xfd
,
0xd5
,
0x14
,
0x73
,
0xe1
,
0x40
,
0x7f
,
0x99
,
0x40
,
0x8f
,
0xc9
,
0x58
,
0x81
,
0x87
,
0x99
,
0xf0
,
0xa6
,
0x0b
,
0x3f
,
0x20
,
0xbb
,
0x4f
,
0xe8
,
0x78
,
0xc6
,
0x60
,
0xff
,
0x07
,
0x18
,
0x67
,
0x8e
,
0x3e
,
0x25
,
0x47
,
0x73
,
0x1c
,
0x36
,
0x00
,
0x27
,
0x9a
,
0x7b
,
0xeb
,
0x84
,
0x3f
,
0xeb
,
0xdb
,
0x83
,
0xce
,
0x90
,
0xbd
,
0xa6
,
0x9a
,
0x7b
,
0x4d
,
0xc5
,
0x75
,
0x39
,
0xf7
,
0xd6
,
0x32
,
0x16
,
0x5a
,
0x01
,
0x7d
,
0x8c
,
0x65
,
0xb2
,
0x9c
,
0x2b
,
0xfe
,
0x5c
,
0xfb
,
0xa8
,
0x29
,
0xf6
,
0x0a
,
0x9a
,
0x63
,
0xa9
,
0xb0
,
0x78
,
0x38
,
0xef
,
0xd7
,
0x06
,
0x9d
,
0xe1
,
0x71
,
0xde
,
0xc6
,
0x48
,
0x8b
,
0x44
,
0xaa
,
0x83
,
0xe5
,
0xe1
,
0x07
,
0x53
,
0xb9
,
0xe2
,
0xff
,
0xa3
,
0x58
,
0x34
,
0x81
,
0xe5
,
0x11
,
0xc5
,
0xf2
,
0x82
,
0x04
,
0x27
,
0x24
,
0xd8
,
0xd0
,
0xee
,
0x3b
,
0xe8
,
0xe4
,
0xdc
,
0xc1
,
0x37
,
0xf4
,
0x30
,
0x54
,
0x5d
,
0xeb
,
0xf4
,
0xcd
,
0x3e
,
0x03
,
0x7b
,
0x2c
,
0x15
,
0x95
,
0x79
,
0x67
,
0x78
,
0x54
,
0xba
,
0x5f
,
0xa0
,
0xcc
,
0xfd
,
0xb3
,
0x06
,
0xad
,
0x94
,
0x43
,
0x6f
,
0x4e
,
0x25
,
0x96
,
0x76
,
0x8c
,
0xa6
,
0x4a
,
0xd9
,
0xb2
,
0xb6
,
0xb2
,
0x75
,
0x02
,
0x2d
,
0x3f
,
0xb9
,
0xf1
,
0x83
,
0x40
,
0xc6
,
0xd4
,
0x38
,
0x2d
,
0xb1
,
0xa1
,
0xd1
,
0x66
,
0x14
,
0x87
,
0xb7
,
0xbe
,
0xa2
,
0xa6
,
0xe9
,
0x0a
,
0x43
,
0x65
,
0x01
,
0x3b
,
0xbb
,
0x02
,
0x6e
,
0x94
,
0x02
,
0xfe
,
0xad
,
0x06
,
0x07
,
0xf9
,
0xe4
,
0x61
,
0xc1
,
0xa9
,
0x50
,
0x79
,
0xf3
,
0x91
,
0xa4
,
0x26
,
0x4c
,
0xc8
,
0xeb
,
0xae
,
0x28
,
0x32
,
0xd9
,
0x00
,
0x8e
,
0x52
,
0x46
,
0x31
,
0x82
,
0x32
,
0x9b
,
0xbd
,
0x02
,
0xc7
,
0x57
,
0x72
,
0x81
,
0xcd
,
0x8f
,
0x8f
,
0xfe
,
0xbc
,
0xe2
,
0xc1
,
0x2e
,
0x94
,
0x5c
,
0x08
,
0xad
,
0xe5
,
0xde
,
0x41
,
0xaf
,
0x2c
,
0xfa
,
0xe4
,
0x0c
,
0xbe
,
0x80
,
0x36
,
0x52
,
0x3a
,
0x0c
,
0x9b
,
0xc4
,
0x19
,
0xc3
,
0xfd
,
0xc3
,
0x82
,
0xa3
,
0x0d
,
0xae
,
0x9d
,
0x11
,
0xe2
,
0xa1
,
0xb3
,
0x04
,
0x2f
,
0x74
,
0x51
,
0x67
,
0xf8
,
0x34
,
0xef
,
0x2c
,
0xaa
,
0x5d
,
0xa1
,
0xf0
,
0xfc
,
0x91
,
0xd0
,
0x5a
,
0xec
,
0x8b
,
0x7c
,
0x29
,
0x1c
,
0x97
,
0x95
,
0x47
,
0x12
,
0x55
,
0x51
,
0x03
,
0xed
,
0x7a
,
0xe3
,
0x30
,
0x56
,
0xe4
,
0x45
,
0x85
,
0xdd
,
0x33
,
0x14
,
0xa2
,
0x5d
,
0xd2
,
0x62
,
0x6f
,
0xa0
,
0x19
,
0x2d
,
0xc7
,
0x73
,
0x3f
,
0xb9
,
0xa3
,
0xf7
,
0x2d
,
0x65
,
0x0d
,
0x0f
,
0x5c
,
0x6a
,
0xf1
,
0xf9
,
0x23
,
0x91
,
0x6a
,
0xe2
,
0x1d
,
0x1f
,
0x96
,
0x32
,
0x5e
,
0xd3
,
0xdb
,
0x57
,
0xdc
,
0xf1
,
0x03
,
0x0a
,
0xf1
,
0x0e
,
0xd2
,
0x62
,
0x87
,
0x60
,
0xa9
,
0x35
,
0x95
,
0x43
,
0x57
,
0x58
,
0x6a
,
0x3d
,
0x6a
,
0x82
,
0xf3
,
0xd1
,
0x9b
,
0x2f
,
0xa5
,
0xfb
,
0xb3
,
0x0d
,
0x87
,
0xc5
,
0x80
,
0x33
,
0x98
,
0xad
,
0xe5
,
0x61
,
0x36
,
0x07
,
0xa5
,
0x56
,
0x11
,
0x4a
,
0xf3
,
0x00
,
0x6c
,
0x6f
,
0x03
,
0x70
,
0x0a
,
0xb3
,
0xf5
,
0x3d
,
0x30
,
0xeb
,
0xec
,
0x86
,
0xd9
,
0x46
,
0x25
,
0xcc
,
0x36
,
0x2b
,
0x61
,
0xb6
,
0xb5
,
0x0b
,
0x66
,
0xdb
,
0xf7
,
0xc0
,
0x2c
,
0xec
,
0x81
,
0xd9
,
0x4e
,
0x25
,
0xcc
,
0x1e
,
0xec
,
0x82
,
0xd9
,
0xee
,
0x5e
,
0x98
,
0x3d
,
0xdc
,
0x86
,
0x59
,
0xf7
,
0x27
,
0xd3
,
0x93
,
0xa6
,
0x8a
,
0xf6
,
0x0d
,
0x5d
,
0xd3
,
0x18
,
0x56
,
0xa1
,
0x31
,
0x38
,
0xc1
,
0x24
,
0x7a
,
0x6d
,
0xca
,
0x3e
,
0x25
,
0xd3
,
0x08
,
0xea
,
0x9b
,
0x08
,
0xdc
,
0xd3
,
0xdc
,
0x6b
,
0x53
,
0x19
,
0xee
,
0xbc
,
0xcd
,
0x9c
,
0xb5
,
0xb2
,
0xb3
,
0xd7
,
0xa6
,
0x59
,
0x73
,
0x15
,
0xb9
,
0xcf
,
0x57
,
0x03
,
0xe9
,
0x56
,
0x01
,
0xd2
,
0x8d
,
0x55
,
0x3b
,
0xb3
,
0xfa
,
0x5d
,
0xce
,
0x23
,
0x2a
,
0xda
,
0x9d
,
0x36
,
0x75
,
0x0d
,
0x5b
,
0x69
,
0x0d
,
0x57
,
0xd8
,
0x0a
,
0x80
,
0x91
,
0x89
,
0x8d
,
0xc1
,
0x8b
,
0xe0
,
0x36
,
0xdc
,
0x69
,
0x2f
,
0x85
,
0x7b
,
0x2b
,
0x07
,
0xf7
,
0xd9
,
0x62
,
0x63
,
0x17
,
0x16
,
0x9b
,
0x0d
,
0xd4
,
0xd6
,
0x73
,
0x50
,
0xeb
,
0x9e
,
0x02
,
0x13
,
0x32
,
0x9a
,
0x97
,
0xee
,
0x7b
,
0x09
,
0x75
,
0xbc
,
0xc1
,
0xa0
,
0x4a
,
0xaf
,
0xdc
,
0x99
,
0x82
,
0xa4
,
0xee
,
0x57
,
0x70
,
0xbc
,
0xed
,
0x2b
,
0xed
,
0x25
,
0xda
,
0x3d
,
0x84
,
0x62
,
0x1b
,
0x4b
,
0xcc
,
0x90
,
0xee
,
0xb7
,
0x70
,
0xbc
,
0x7d
,
0x59
,
0xc2
,
0x3e
,
0x07
,
0x07
,
0x35
,
0xb4
,
0x7a
,
0xd5
,
0x75
,
0x5a
,
0xec
,
0xfe
,
0x6e
,
0x41
,
0x57
,
0xc8
,
0x89
,
0xf4
,
0x23
,
0x75
,
0x39
,
0xfa
,
0xa4
,
0xe5
,
0x2e
,
0xcd
,
0x97
,
0x9d
,
0xcb
,
0x57
,
0x65
,
0x5e
,
0xcc
,
0x1a
,
0xf8
,
0xf1
,
0x22
,
0x37
,
0x9c
,
0x32
,
0x06
,
0x49
,
0x69
,
0xe0
,
0x62
,
0xc5
,
0x36
,
0xcc
,
0x92
,
0x98
,
0x32
,
0xd0
,
0x22
,
0x21
,
0x13
,
0xb5
,
0xb8
,
0x2d
,
0x34
,
0x81
,
0x67
,
0xfc
,
0xe4
,
0xc6
,
0xf3
,
0x95
,
0x1f
,
0xcc
,
0xa8
,
0xcd
,
0x5b
,
0x22
,
0x63
,
0x60
,
0xd2
,
0xb4
,
0x01
,
0xec
,
0x74
,
0x4a
,
0x9a
,
0x21
,
0x8b
,
0x0b
,
0x29
,
0x94
,
0x16
,
0x52
,
0xf7
,
0x57
,
0x0b
,
0x7a
,
0x26
,
0x27
,
0xf7
,
0xef
,
0xbc
,
0x05
,
0x53
,
0x56
,
0x79
,
0xb7
,
0xdd
,
0x55
,
0x38
,
0x69
,
0xd2
,
0xea
,
0xb9
,
0xa4
,
0x15
,
0xf6
,
0x2a
,
0xa7
,
0xbc
,
0x57
,
0xed
,
0x99
,
0xdf
,
0x59
,
0xba
,
0x9b
,
0xa5
,
0x89
,
0xbf
,
0x01
,
0xe0
,
0x56
,
0x09
,
0x80
,
0x5d
,
0x38
,
0xd0
,
0x9e
,
0xbc
,
0xbd
,
0xf3
,
0x82
,
0x99
,
0x5e
,
0x76
,
0x5b
,
0xa2
,
0xc0
,
0x73
,
0x7f
,
0xb1
,
0xcd
,
0x6c
,
0xbc
,
0xd2
,
0xcb
,
0xb6
,
0x90
,
0x1f
,
0x1e
,
0x3c
,
0x04
,
0x0a
,
0xbb
,
0xbd
,
0x5d
,
0xde
,
0xed
,
0x1f
,
0x30
,
0x06
,
0xba
,
0xff
,
0xe1
,
0x31
,
0x50
,
0xff
,
0x37
,
0xc7
,
0x40
,
0xb7
,
0x34
,
0x06
,
0xae
,
0xa0
,
0x9b
,
0xee
,
0x42
,
0xfa
,
0x09
,
0x1e
,
0x3a
,
0x07
,
0x18
,
0xd4
,
0x11
,
0xf8
,
0xcd
,
0x10
,
0xa0
,
0x6f
,
0xf7
,
0x4b
,
0xf3
,
0xb2
,
0x84
,
0xf5
,
0x7b
,
0xcd
,
0xba
,
0x6f
,
0xe1
,
0xb1
,
0x5e
,
0x86
,
0x35
,
0xb4
,
0xdf
,
0xeb
,
0x43
,
0x15
,
0xbe
,
0xbb
,
0x37
,
0xb9
,
0x2d
,
0x4b
,
0xc8
,
0x49
,
0x18
,
0x4f
,
0x1f
,
0x0c
,
0x33
,
0x9b
,
0x1a
,
0xb7
,
0xf3
,
0x50
,
0xfb
,
0x0e
,
0x9e
,
0xe4
,
0x80
,
0x6f
,
0x2a
,
0x57
,
0xf7
,
0x58
,
0xdf
,
0x58
,
0xb1
,
0x8a
,
0x56
,
0x7a
,
0x25
,
0xf7
,
0x12
,
0xf6
,
0x35
,
0x34
,
0x63
,
0xfd
,
0x69
,
0x20
,
0xf4
,
0xd9
,
0x16
,
0x84
,
0x92
,
0x58
,
0xa4
,
0x6a
,
0xc3
,
0xbf
,
0x6a
,
0xe0
,
0xd0
,
0xaf
,
0x69
,
0xf6
,
0x0d
,
0x40
,
0xd6
,
0x38
,
0xac
,
0x7a
,
0x81
,
0x3c
,
0x49
,
0x7f
,
0x35
,
0xfc
,
0x18
,
0x24
,
0xfe
,
0x2c
,
0xb8
,
0x5e
,
0xb9
,
0x8f
,
0xd8
,
0x30
,
0xf7
,
0x8b
,
0xa1
,
0x6a
,
0x93
,
0xac
,
0x3a
,
0x93
,
0xde
,
0xa5
,
0xc7
,
0x76
,
0xf5
,
0x52
,
0x59
,
0x75
,
0xee
,
0xd4
,
0xac
,
0x17
,
0xe9
,
0xc8
,
0xde
,
0xb5
,
0x5d
,
0x56
,
0x9c
,
0x1d
,
0x37
,
0xe8
,
0x4f
,
0x81
,
0x37
,
0xff
,
0x04
,
0x00
,
0x00
,
0xff
,
0xff
,
0x19
,
0x3c
,
0x77
,
0xc4
,
0x3d
,
0x10
,
0x00
,
0x00
,
}
// Reference imports to suppress errors if they are not otherwise used.
...
...
plugin/dapp/guess/types/types.go
View file @
82b582dc
...
...
@@ -5,9 +5,16 @@
package
types
import
(
"encoding/json"
"github.com/33cn/chain33/common/address"
"reflect"
"github.com/33cn/chain33/types"
log
"github.com/33cn/chain33/common/log/log15"
)
var
(
llog
=
log
.
New
(
"module"
,
"exectype."
+
GuessX
)
)
func
init
()
{
...
...
@@ -53,5 +60,149 @@ func (t *GuessType) GetLogMap() map[int64]*types.LogInfo {
}
}
// CreateTx method
func
(
t
*
GuessType
)
CreateTx
(
action
string
,
message
json
.
RawMessage
)
(
*
types
.
Transaction
,
error
)
{
llog
.
Debug
(
"Guess.CreateTx"
,
"action"
,
action
)
if
action
==
"GuessStart"
{
var
param
GuessStartTxReq
err
:=
json
.
Unmarshal
(
message
,
&
param
)
if
err
!=
nil
{
llog
.
Error
(
"CreateTx.GuessStart"
,
"Error"
,
err
)
return
nil
,
types
.
ErrInvalidParam
}
return
CreateRawGuessStartTx
(
&
param
)
}
else
if
action
==
"GuessBet"
{
var
param
GuessBetTxReq
err
:=
json
.
Unmarshal
(
message
,
&
param
)
if
err
!=
nil
{
llog
.
Error
(
"CreateTx.GuessBet"
,
"Error"
,
err
)
return
nil
,
types
.
ErrInvalidParam
}
return
CreateRawGuessBetTx
(
&
param
)
}
else
if
action
==
"GuessPublish"
{
var
param
GuessPublishTxReq
err
:=
json
.
Unmarshal
(
message
,
&
param
)
if
err
!=
nil
{
llog
.
Error
(
"CreateTx.GuessPublish"
,
"Error"
,
err
)
return
nil
,
types
.
ErrInvalidParam
}
return
CreateRawGuessPublishTx
(
&
param
)
}
else
if
action
==
"GuessAbort"
{
var
param
GuessAbortTxReq
err
:=
json
.
Unmarshal
(
message
,
&
param
)
if
err
!=
nil
{
llog
.
Error
(
"CreateTx.GuessAbort"
,
"Error"
,
err
)
return
nil
,
types
.
ErrInvalidParam
}
return
CreateRawGuessAbortTx
(
&
param
)
}
else
{
return
nil
,
types
.
ErrNotSupport
}
}
// CreateRawLotteryCreateTx method
func
CreateRawGuessStartTx
(
parm
*
GuessGameStart
)
(
*
types
.
Transaction
,
error
)
{
if
parm
==
nil
{
llog
.
Error
(
"CreateRawGuessStartTx"
,
"parm"
,
parm
)
return
nil
,
types
.
ErrInvalidParam
}
val
:=
&
GuessGameAction
{
Ty
:
GuessGameActionStart
,
Value
:
&
GuessGameAction_Start
{
Start
:
parm
},
}
name
:=
types
.
ExecName
(
GuessX
)
tx
:=
&
types
.
Transaction
{
Execer
:
[]
byte
(
types
.
ExecName
(
GuessX
)),
Payload
:
types
.
Encode
(
val
),
Fee
:
parm
.
Fee
,
To
:
address
.
ExecAddress
(
name
),
}
tx
,
err
:=
types
.
FormatTx
(
name
,
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
tx
,
nil
}
// CreateRawGuessBetTx method
func
CreateRawGuessBetTx
(
parm
*
GuessGameBet
)
(
*
types
.
Transaction
,
error
)
{
if
parm
==
nil
{
llog
.
Error
(
"CreateRawGuessBet"
,
"parm"
,
parm
)
return
nil
,
types
.
ErrInvalidParam
}
val
:=
&
GuessGameAction
{
Ty
:
GuessGameActionBet
,
Value
:
&
GuessGameAction_Bet
{
Bet
:
parm
},
}
name
:=
types
.
ExecName
(
GuessX
)
tx
:=
&
types
.
Transaction
{
Execer
:
[]
byte
(
types
.
ExecName
(
GuessX
)),
Payload
:
types
.
Encode
(
val
),
Fee
:
parm
.
Fee
,
To
:
address
.
ExecAddress
(
name
),
}
tx
,
err
:=
types
.
FormatTx
(
name
,
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
tx
,
nil
}
// CreateRawGuessPublishTx method
func
CreateRawGuessPublishTx
(
parm
*
GuessGamePublish
)
(
*
types
.
Transaction
,
error
)
{
if
parm
==
nil
{
llog
.
Error
(
"CreateRawGuessPublish"
,
"parm"
,
parm
)
return
nil
,
types
.
ErrInvalidParam
}
val
:=
&
GuessGameAction
{
Ty
:
GuessGameActionPublish
,
Value
:
&
GuessGameAction_Publish
{
Publish
:
parm
},
}
name
:=
types
.
ExecName
(
GuessX
)
tx
:=
&
types
.
Transaction
{
Execer
:
[]
byte
(
types
.
ExecName
(
GuessX
)),
Payload
:
types
.
Encode
(
val
),
Fee
:
parm
.
Fee
,
To
:
address
.
ExecAddress
(
name
),
}
tx
,
err
:=
types
.
FormatTx
(
name
,
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
tx
,
nil
}
// CreateRawGuessAbortTx method
func
CreateRawGuessAbortTx
(
parm
*
GuessGameAbort
)
(
*
types
.
Transaction
,
error
)
{
if
parm
==
nil
{
llog
.
Error
(
"CreateRawGuessAbortTx"
,
"parm"
,
parm
)
return
nil
,
types
.
ErrInvalidParam
}
val
:=
&
GuessGameAction
{
Ty
:
GuessGameActionAbort
,
Value
:
&
GuessGameAction_Abort
{
Abort
:
parm
},
}
name
:=
types
.
ExecName
(
GuessX
)
tx
:=
&
types
.
Transaction
{
Execer
:
[]
byte
(
types
.
ExecName
(
GuessX
)),
Payload
:
types
.
Encode
(
val
),
Fee
:
parm
.
Fee
,
To
:
address
.
ExecAddress
(
name
),
}
tx
,
err
:=
types
.
FormatTx
(
name
,
tx
)
if
err
!=
nil
{
return
nil
,
err
}
return
tx
,
nil
}
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