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
e78a46ce
Commit
e78a46ce
authored
Oct 13, 2021
by
harrylee
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update broker
parent
6e5ca49f
Pipeline
#8128
failed with stages
in 0 seconds
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
367 additions
and
162 deletions
+367
-162
brokerdb.go
plugin/dapp/broker/executor/brokerdb.go
+97
-65
exec.go
plugin/dapp/broker/executor/exec.go
+3
-3
kv.go
plugin/dapp/broker/executor/kv.go
+7
-3
query.go
plugin/dapp/broker/executor/query.go
+18
-10
broker.proto
plugin/dapp/broker/proto/broker.proto
+27
-5
broker.go
plugin/dapp/broker/types/broker.go
+4
-0
broker.pb.go
plugin/dapp/broker/types/broker.pb.go
+211
-76
No files found.
plugin/dapp/broker/executor/brokerdb.go
View file @
e78a46ce
...
@@ -22,6 +22,11 @@ type BrokerDB struct {
...
@@ -22,6 +22,11 @@ type BrokerDB struct {
index
int
index
int
}
}
var
(
// DefaultManagerAddr 默认管理员地址
DefaultManagerAddr
=
"12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
)
func
newBrokerDB
(
b
*
broker
,
tx
*
types
.
Transaction
,
index
int
)
*
BrokerDB
{
func
newBrokerDB
(
b
*
broker
,
tx
*
types
.
Transaction
,
index
int
)
*
BrokerDB
{
hash
:=
tx
.
Hash
()
hash
:=
tx
.
Hash
()
fromaddr
:=
tx
.
From
()
fromaddr
:=
tx
.
From
()
...
@@ -30,12 +35,12 @@ func newBrokerDB(b *broker, tx *types.Transaction, index int) *BrokerDB {
...
@@ -30,12 +35,12 @@ func newBrokerDB(b *broker, tx *types.Transaction, index int) *BrokerDB {
}
}
//GetKVSet ...
//GetKVSet ...
func
(
b
*
BrokerDB
)
GetMetaKVSet
(
req
uint64
,
meta
*
brokertypes
.
Meta
)
(
kvset
[]
*
types
.
KeyValue
)
{
func
(
b
*
BrokerDB
)
GetMetaKVSet
(
req
uint64
,
meta
*
brokertypes
.
Meta
)
(
kvset
[]
*
types
.
KeyValue
)
{
if
req
==
brokertypes
.
Req_Callback
{
if
req
==
brokertypes
.
Req_Callback
{
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
calCallBackMetaKey
(),
Value
:
types
.
Encode
(
meta
)})
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
calCallBackMetaKey
(),
Value
:
types
.
Encode
(
meta
)})
}
else
if
req
==
brokertypes
.
Req_Inner
{
}
else
if
req
==
brokertypes
.
Req_Inner
{
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
calInnerMetaKey
(),
Value
:
types
.
Encode
(
meta
)})
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
calInnerMetaKey
(),
Value
:
types
.
Encode
(
meta
)})
}
else
if
req
==
brokertypes
.
Req_DstRollback
{
}
else
if
req
==
brokertypes
.
Req_DstRollback
{
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
calDstRollBackMetaKey
(),
Value
:
types
.
Encode
(
meta
)})
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
calDstRollBackMetaKey
(),
Value
:
types
.
Encode
(
meta
)})
}
}
return
kvset
return
kvset
...
@@ -43,14 +48,28 @@ func (b *BrokerDB) GetMetaKVSet(req uint64,meta *brokertypes.Meta) (kvset []*typ
...
@@ -43,14 +48,28 @@ func (b *BrokerDB) GetMetaKVSet(req uint64,meta *brokertypes.Meta) (kvset []*typ
//GetKVSet ...
//GetKVSet ...
func
(
b
*
BrokerDB
)
GetEventKVSet
(
event
*
brokertypes
.
InterchainEvent
)
(
kvset
[]
*
types
.
KeyValue
)
{
func
(
b
*
BrokerDB
)
GetEventKVSet
(
event
*
brokertypes
.
InterchainEvent
)
(
kvset
[]
*
types
.
KeyValue
)
{
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
calServicePair
(
event
.
GetSrcServiceID
(),
event
.
GetDstServiceID
(),
event
.
Index
),
Value
:
types
.
Encode
(
event
)})
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
calServicePair
(
event
.
GetSrcServiceID
(),
event
.
GetDstServiceID
(),
event
.
Index
),
Value
:
types
.
Encode
(
event
)})
return
kvset
return
kvset
}
}
//初始化broker
func
(
b
*
BrokerDB
)
initBroker
(
payload
*
brokertypes
.
Init
)
(
*
types
.
Receipt
,
error
)
{
//权限检查且只能初始化一次
if
b
.
fromaddr
!=
getManagerAddr
(
b
.
api
.
GetConfig
(),
b
.
db
,
brokerAdmin
,
DefaultManagerAddr
)
{
return
nil
,
fmt
.
Errorf
(
"the addr %s is not admin"
,
b
.
fromaddr
)
}
receipt
:=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
}
receipt
.
KV
=
append
(
receipt
.
KV
,
&
types
.
KeyValue
{
Key
:
BxhIDKey
(),
Value
:
types
.
Encode
(
payload
)})
receipt
.
Ty
=
brokertypes
.
TyInitLog
return
receipt
,
nil
}
//其他执行器注册授权
//其他执行器注册授权
func
(
b
*
BrokerDB
)
register
(
payload
*
brokertypes
.
Register
)
(
*
types
.
Receipt
,
error
)
{
func
(
b
*
BrokerDB
)
register
(
payload
*
brokertypes
.
Register
)
(
*
types
.
Receipt
,
error
)
{
return
nil
,
nil
return
nil
,
nil
}
}
//管理员审批
//管理员审批
func
(
b
*
BrokerDB
)
audit
(
payload
*
brokertypes
.
Audit
)
(
*
types
.
Receipt
,
error
)
{
func
(
b
*
BrokerDB
)
audit
(
payload
*
brokertypes
.
Audit
)
(
*
types
.
Receipt
,
error
)
{
...
@@ -60,9 +79,9 @@ func (b *BrokerDB) audit(payload *brokertypes.Audit) (*types.Receipt, error) {
...
@@ -60,9 +79,9 @@ func (b *BrokerDB) audit(payload *brokertypes.Audit) (*types.Receipt, error) {
func
(
b
*
BrokerDB
)
updateIndex
(
payload
*
brokertypes
.
UpdateIndex
)
(
*
types
.
Receipt
,
error
)
{
func
(
b
*
BrokerDB
)
updateIndex
(
payload
*
brokertypes
.
UpdateIndex
)
(
*
types
.
Receipt
,
error
)
{
//FIXME 权限检查
//FIXME 权限检查
receipt
:=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
}
receipt
:=
&
types
.
Receipt
{
Ty
:
types
.
ExecOk
}
if
payload
.
ReqType
==
brokertypes
.
Req_Inner
{
if
payload
.
ReqType
==
brokertypes
.
Req_Inner
{
meta
,
err
:=
getMeta
(
b
.
db
,
calInnerMetaKey
())
meta
,
err
:=
getMeta
(
b
.
db
,
calInnerMetaKey
())
if
err
!=
nil
{
if
err
!=
nil
{
meta
=
&
brokertypes
.
Meta
{
meta
=
&
brokertypes
.
Meta
{
Meta
:
make
(
map
[
string
]
uint64
),
Meta
:
make
(
map
[
string
]
uint64
),
XXX_NoUnkeyedLiteral
:
struct
{}{},
XXX_NoUnkeyedLiteral
:
struct
{}{},
...
@@ -70,19 +89,18 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
...
@@ -70,19 +89,18 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
XXX_sizecache
:
0
,
XXX_sizecache
:
0
,
}
}
}
}
idx
:=
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
idx
:=
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
if
payload
.
SequenceNum
!=
idx
+
1
{
if
payload
.
SequenceNum
!=
idx
+
1
{
return
nil
,
fmt
.
Errorf
(
"incorrect index, expect %d"
,
idx
+
1
)
return
nil
,
fmt
.
Errorf
(
"incorrect index, expect %d"
,
idx
+
1
)
}
}
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
=
idx
+
1
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
=
idx
+
1
kvset
:=
b
.
GetMetaKVSet
(
payload
.
ReqType
,
meta
)
kvset
:=
b
.
GetMetaKVSet
(
payload
.
ReqType
,
meta
)
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
inMsgKey
(
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
),
idx
+
1
),
Value
:
types
.
Encode
(
payload
.
Response
)})
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
inMsgKey
(
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
),
idx
+
1
),
Value
:
types
.
Encode
(
payload
.
Response
)})
receipt
.
KV
=
append
(
receipt
.
KV
,
kvset
...
)
receipt
.
KV
=
append
(
receipt
.
KV
,
kvset
...
)
}
else
if
payload
.
ReqType
==
brokertypes
.
Req_Callback
{
}
else
if
payload
.
ReqType
==
brokertypes
.
Req_Callback
{
meta
,
err
:=
getMeta
(
b
.
db
,
calCallBackMetaKey
())
meta
,
err
:=
getMeta
(
b
.
db
,
calCallBackMetaKey
())
if
err
!=
nil
{
if
err
!=
nil
{
meta
=
&
brokertypes
.
Meta
{
meta
=
&
brokertypes
.
Meta
{
Meta
:
make
(
map
[
string
]
uint64
),
Meta
:
make
(
map
[
string
]
uint64
),
XXX_NoUnkeyedLiteral
:
struct
{}{},
XXX_NoUnkeyedLiteral
:
struct
{}{},
...
@@ -90,18 +108,18 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
...
@@ -90,18 +108,18 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
XXX_sizecache
:
0
,
XXX_sizecache
:
0
,
}
}
}
}
idx
:=
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
idx
:=
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
if
payload
.
SequenceNum
!=
idx
+
1
{
if
payload
.
SequenceNum
!=
idx
+
1
{
return
nil
,
fmt
.
Errorf
(
"incorrect index, expect %d"
,
idx
+
1
)
return
nil
,
fmt
.
Errorf
(
"incorrect index, expect %d"
,
idx
+
1
)
}
}
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
=
idx
+
1
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
=
idx
+
1
kvset
:=
b
.
GetMetaKVSet
(
payload
.
ReqType
,
meta
)
kvset
:=
b
.
GetMetaKVSet
(
payload
.
ReqType
,
meta
)
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
outMsgKey
(
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
),
idx
+
1
),
Value
:
types
.
Encode
(
payload
.
Response
)})
kvset
=
append
(
kvset
,
&
types
.
KeyValue
{
Key
:
outMsgKey
(
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
),
idx
+
1
),
Value
:
types
.
Encode
(
payload
.
Response
)})
receipt
.
KV
=
append
(
receipt
.
KV
,
kvset
...
)
receipt
.
KV
=
append
(
receipt
.
KV
,
kvset
...
)
}
else
if
payload
.
ReqType
==
brokertypes
.
Req_DstRollback
{
}
else
if
payload
.
ReqType
==
brokertypes
.
Req_DstRollback
{
//todo
//todo
meta
,
err
:=
getMeta
(
b
.
db
,
calDstRollBackMetaKey
())
meta
,
err
:=
getMeta
(
b
.
db
,
calDstRollBackMetaKey
())
if
err
!=
nil
{
if
err
!=
nil
{
meta
=
&
brokertypes
.
Meta
{
meta
=
&
brokertypes
.
Meta
{
Meta
:
make
(
map
[
string
]
uint64
),
Meta
:
make
(
map
[
string
]
uint64
),
XXX_NoUnkeyedLiteral
:
struct
{}{},
XXX_NoUnkeyedLiteral
:
struct
{}{},
...
@@ -109,13 +127,13 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
...
@@ -109,13 +127,13 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
XXX_sizecache
:
0
,
XXX_sizecache
:
0
,
}
}
}
}
idx
:=
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
idx
:=
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
if
payload
.
SequenceNum
<
idx
+
1
{
if
payload
.
SequenceNum
<
idx
+
1
{
return
nil
,
fmt
.
Errorf
(
"incorrect dstrollback index, expect %d"
,
idx
+
1
)
return
nil
,
fmt
.
Errorf
(
"incorrect dstrollback index, expect %d"
,
idx
+
1
)
}
}
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
=
payload
.
SequenceNum
meta
.
Meta
[
genServicePair
(
payload
.
SrcServiceID
,
payload
.
DstServiceID
)]
=
payload
.
SequenceNum
kvset
:=
b
.
GetMetaKVSet
(
payload
.
ReqType
,
meta
)
kvset
:=
b
.
GetMetaKVSet
(
payload
.
ReqType
,
meta
)
receipt
.
KV
=
append
(
receipt
.
KV
,
kvset
...
)
receipt
.
KV
=
append
(
receipt
.
KV
,
kvset
...
)
}
}
log
:=
&
brokertypes
.
ReceiptBrokerLog
{
Value
:
&
brokertypes
.
ReceiptBrokerLog_UpdateIndex
{
payload
},
Ty
:
brokertypes
.
TyEmitInterchainEventAction
}
log
:=
&
brokertypes
.
ReceiptBrokerLog
{
Value
:
&
brokertypes
.
ReceiptBrokerLog_UpdateIndex
{
payload
},
Ty
:
brokertypes
.
TyEmitInterchainEventAction
}
receiptlog
:=
&
types
.
ReceiptLog
{
Ty
:
brokertypes
.
TyUpdateIndexLog
,
Log
:
types
.
Encode
(
log
)}
receiptlog
:=
&
types
.
ReceiptLog
{
Ty
:
brokertypes
.
TyUpdateIndexLog
,
Log
:
types
.
Encode
(
log
)}
...
@@ -142,17 +160,17 @@ func (b *BrokerDB) emitInterchainEvent(payload *brokertypes.InterchainEvent) (*t
...
@@ -142,17 +160,17 @@ func (b *BrokerDB) emitInterchainEvent(payload *brokertypes.InterchainEvent) (*t
XXX_sizecache
:
0
,
XXX_sizecache
:
0
,
}
}
}
}
currServiceID
,
err
:=
b
.
getCurrServiceID
()
currServiceID
,
err
:=
b
.
getCurrServiceID
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
payload
.
SrcServiceID
=
currServiceID
payload
.
SrcServiceID
=
currServiceID
//idx :=meta.Meta[genServicePair(currServiceID, payload.DstServiceID)]
//idx :=meta.Meta[genServicePair(currServiceID, payload.DstServiceID)]
meta
.
Meta
[
genServicePair
(
currServiceID
,
payload
.
DstServiceID
)]
++
meta
.
Meta
[
genServicePair
(
currServiceID
,
payload
.
DstServiceID
)]
++
kvset
:=
&
types
.
KeyValue
{
Key
:
calOutterMetaKey
(),
Value
:
types
.
Encode
(
meta
)}
kvset
:=
&
types
.
KeyValue
{
Key
:
calOutterMetaKey
(),
Value
:
types
.
Encode
(
meta
)}
payload
.
Index
=
meta
.
Meta
[
genServicePair
(
currServiceID
,
payload
.
DstServiceID
)]
payload
.
Index
=
meta
.
Meta
[
genServicePair
(
currServiceID
,
payload
.
DstServiceID
)]
receipt
.
KV
=
append
(
receipt
.
KV
,
kvset
)
receipt
.
KV
=
append
(
receipt
.
KV
,
kvset
)
receipt
.
KV
=
append
(
receipt
.
KV
,
b
.
GetEventKVSet
(
payload
)
...
)
receipt
.
KV
=
append
(
receipt
.
KV
,
b
.
GetEventKVSet
(
payload
)
...
)
log
:=
&
brokertypes
.
ReceiptBrokerLog
{
Value
:
&
brokertypes
.
ReceiptBrokerLog_EmitInterchainEvent
{
payload
},
Ty
:
brokertypes
.
TyEmitInterchainEventAction
}
log
:=
&
brokertypes
.
ReceiptBrokerLog
{
Value
:
&
brokertypes
.
ReceiptBrokerLog_EmitInterchainEvent
{
payload
},
Ty
:
brokertypes
.
TyEmitInterchainEventAction
}
receiptlog
:=
&
types
.
ReceiptLog
{
Ty
:
brokertypes
.
TyEmitInterchainEventLog
,
Log
:
types
.
Encode
(
log
)}
receiptlog
:=
&
types
.
ReceiptLog
{
Ty
:
brokertypes
.
TyEmitInterchainEventLog
,
Log
:
types
.
Encode
(
log
)}
...
@@ -165,24 +183,35 @@ func (b *BrokerDB) emitInterchainEvent(payload *brokertypes.InterchainEvent) (*t
...
@@ -165,24 +183,35 @@ func (b *BrokerDB) emitInterchainEvent(payload *brokertypes.InterchainEvent) (*t
}
}
return
receipt
,
nil
return
receipt
,
nil
}
}
//获取当前链得ID
//获取当前链得ID
func
(
b
*
BrokerDB
)
getCurrServiceID
()
(
string
,
error
)
{
func
(
b
*
BrokerDB
)
getCurrServiceID
()
(
string
,
error
)
{
return
b
.
genFullServiceID
(
b
.
api
.
GetConfig
()
.
GetTitle
())
return
b
.
genFullServiceID
(
b
.
api
.
GetConfig
()
.
GetTitle
())
}
}
func
(
b
*
BrokerDB
)
genFullServiceID
(
serviceId
string
)
(
string
,
error
)
{
func
(
b
*
BrokerDB
)
genFullServiceID
(
serviceId
string
)
(
string
,
error
)
{
//TODO 需要init方法,用于初始化bixhID和appChainID
//TODO 需要init方法,用于初始化bixhID和appChainID
bxhId
,
err
:=
b
.
db
.
Get
([]
byte
(
KeyPrefixStateDB
+
bxhID
))
data
,
err
:=
b
.
db
.
Get
(
BxhIDKey
(
))
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
appchainId
,
err
:=
b
.
db
.
Get
([]
byte
(
KeyPrefixLocalDB
+
appchainID
))
var
info
brokertypes
.
BrokerInfo
types
.
Decode
(
data
,
&
info
)
return
fmt
.
Sprintf
(
"%s:%s:%s"
,
info
.
GetBxhId
(),
info
.
GetAppChainId
(),
serviceId
),
nil
}
//获取broker信息
func
getBrokerInfo
(
statedb
dbm
.
KV
)
(
*
brokertypes
.
BrokerInfo
,
error
)
{
//TODO 需要init方法,用于初始化bixhID和appChainID
data
,
err
:=
statedb
.
Get
(
BxhIDKey
())
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
nil
,
err
}
}
return
fmt
.
Sprintf
(
"%s:%s:%s"
,
bxhId
,
appchainId
,
serviceId
),
nil
var
info
brokertypes
.
BrokerInfo
types
.
Decode
(
data
,
&
info
)
return
&
info
,
nil
}
}
//去状态数据库中查询Event
//去状态数据库中查询Event
func
getEvent
(
statedb
dbm
.
KV
,
key
[]
byte
)
(
*
brokertypes
.
InterchainEvent
,
error
)
{
func
getEvent
(
statedb
dbm
.
KV
,
key
[]
byte
)
(
*
brokertypes
.
InterchainEvent
,
error
)
{
data
,
err
:=
statedb
.
Get
(
key
)
data
,
err
:=
statedb
.
Get
(
key
)
...
@@ -230,46 +259,50 @@ func getMessage(statedb dbm.KV, key []byte) (*brokertypes.Response, error) {
...
@@ -230,46 +259,50 @@ func getMessage(statedb dbm.KV, key []byte) (*brokertypes.Response, error) {
}
}
return
&
resp
,
nil
return
&
resp
,
nil
}
}
//监听获取跨出事件列表
//监听获取跨出事件列表
func
pollInterEvent
(
statedb
dbm
.
KV
,
meta
*
brokertypes
.
Meta
)(
*
brokertypes
.
InterChainEventList
,
error
)
{
func
pollInterEvent
(
statedb
dbm
.
KV
,
meta
*
brokertypes
.
Meta
)
(
*
brokertypes
.
InterChainEventList
,
error
)
{
outMeta
,
err
:=
getMeta
(
statedb
,
calOutterMetaKey
())
outMeta
,
err
:=
getMeta
(
statedb
,
calOutterMetaKey
())
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"getMeta"
,
"not found"
,
"key:"
,
calOutterMetaKey
)
elog
.
Error
(
"getMeta"
,
"not found"
,
"key:"
,
calOutterMetaKey
)
return
nil
,
err
return
nil
,
err
}
}
var
eventList
brokertypes
.
InterChainEventList
var
eventList
brokertypes
.
InterChainEventList
for
method
,
idx
:=
range
outMeta
.
Meta
{
for
method
,
idx
:=
range
outMeta
.
Meta
{
startPos
,
ok
:=
meta
.
Meta
[
method
]
startPos
,
ok
:=
meta
.
Meta
[
method
]
if
!
ok
{
if
!
ok
{
startPos
=
0
startPos
=
0
}
}
for
i
:=
startPos
+
1
;
i
<=
idx
;
i
++
{
for
i
:=
startPos
+
1
;
i
<=
idx
;
i
++
{
event
,
err
:=
getEvent
(
statedb
,
calEventKey
(
method
,
i
))
event
,
err
:=
getEvent
(
statedb
,
calEventKey
(
method
,
i
))
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"get out event by key %s fail"
,
calEventKey
(
method
,
i
))
elog
.
Error
(
"get out event by key %s fail"
,
calEventKey
(
method
,
i
))
continue
continue
}
}
eventList
.
List
=
append
(
eventList
.
List
,
event
)
eventList
.
List
=
append
(
eventList
.
List
,
event
)
}
}
}
}
return
&
eventList
,
nil
return
&
eventList
,
nil
}
}
//获取outerMeta
//获取outerMeta
func
getOutterMeta
(
statedb
dbm
.
KV
)
(
*
brokertypes
.
Meta
,
error
)
{
func
getOutterMeta
(
statedb
dbm
.
KV
)
(
*
brokertypes
.
Meta
,
error
)
{
return
getMeta
(
statedb
,
calOutterMetaKey
())
return
getMeta
(
statedb
,
calOutterMetaKey
())
}
}
//获取innerMeta
//获取innerMeta
func
getInnerMeta
(
statedb
dbm
.
KV
)
(
*
brokertypes
.
Meta
,
error
)
{
func
getInnerMeta
(
statedb
dbm
.
KV
)
(
*
brokertypes
.
Meta
,
error
)
{
return
getMeta
(
statedb
,
calInnerMetaKey
())
return
getMeta
(
statedb
,
calInnerMetaKey
())
}
}
//获取message
//获取message
func
getInMessage
(
statedb
dbm
.
KV
,
query
*
brokertypes
.
QueryInMessage
)(
*
brokertypes
.
Response
,
error
)
{
func
getInMessage
(
statedb
dbm
.
KV
,
query
*
brokertypes
.
QueryInMessage
)
(
*
brokertypes
.
Response
,
error
)
{
return
getMessage
(
statedb
,
inMsgKey
(
query
.
InServicePair
,
query
.
SequenceNum
))
return
getMessage
(
statedb
,
inMsgKey
(
query
.
InServicePair
,
query
.
SequenceNum
))
}
}
//获取message
//获取message
func
getOutMessage
(
statedb
dbm
.
KV
,
query
*
brokertypes
.
QueryOutMessage
)(
*
brokertypes
.
Response
,
error
)
{
func
getOutMessage
(
statedb
dbm
.
KV
,
query
*
brokertypes
.
QueryOutMessage
)
(
*
brokertypes
.
Response
,
error
)
{
return
getMessage
(
statedb
,
outMsgKey
(
query
.
InServicePair
,
query
.
SequenceNum
))
return
getMessage
(
statedb
,
outMsgKey
(
query
.
InServicePair
,
query
.
SequenceNum
))
}
}
func
getConfValue
(
cfg
*
types
.
Chain33Config
,
db
dbm
.
KV
,
key
string
,
defaultValue
int64
)
int64
{
func
getConfValue
(
cfg
*
types
.
Chain33Config
,
db
dbm
.
KV
,
key
string
,
defaultValue
int64
)
int64
{
...
@@ -341,4 +374,4 @@ func getConfigKey(key string, db dbm.KV) ([]byte, error) {
...
@@ -341,4 +374,4 @@ func getConfigKey(key string, db dbm.KV) ([]byte, error) {
return
nil
,
err
return
nil
,
err
}
}
return
value
,
nil
return
value
,
nil
}
}
\ No newline at end of file
plugin/dapp/broker/executor/exec.go
View file @
e78a46ce
...
@@ -10,9 +10,9 @@ import (
...
@@ -10,9 +10,9 @@ import (
* 关键数据上链(statedb)并生成交易回执(log)
* 关键数据上链(statedb)并生成交易回执(log)
*/
*/
func
(
b
*
broker
)
Exec_Init
()(
*
types
.
Receipt
,
error
){
func
(
b
*
broker
)
Exec_Init
(
payload
*
brokertypes
.
Init
,
tx
*
types
.
Transaction
,
index
int
)(
*
types
.
Receipt
,
error
){
return
nil
,
nil
db
:=
newBrokerDB
(
b
,
tx
,
index
)
return
db
.
initBroker
(
payload
)
}
}
func
(
b
*
broker
)
Exec_Register
(
payload
*
brokertypes
.
Register
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
func
(
b
*
broker
)
Exec_Register
(
payload
*
brokertypes
.
Register
,
tx
*
types
.
Transaction
,
index
int
)
(
*
types
.
Receipt
,
error
)
{
...
...
plugin/dapp/broker/executor/kv.go
View file @
e78a46ce
...
@@ -19,14 +19,18 @@ const (
...
@@ -19,14 +19,18 @@ const (
callbackMeta
=
"callback-meta"
callbackMeta
=
"callback-meta"
dstRollbackMeta
=
"dst-rollback-meta"
dstRollbackMeta
=
"dst-rollback-meta"
whiteList
=
"white-list"
whiteList
=
"white-list"
adminList
=
"admin-list"
//
adminList = "admin-list"
passed
=
"1"
passed
=
"1"
rejected
=
"2"
rejected
=
"2"
delimiter
=
"&"
delimiter
=
"&"
bxhID
=
"bxh-id"
bxhID
=
"bxh-id"
appchainID
=
"appchain-id"
//appchainID = "appchain-id"
brokerAdmin
=
"broker-admin"
)
)
//跨链协议版本信息
func
BxhIDKey
()[]
byte
{
return
[]
byte
(
KeyPrefixStateDB
+
bxhID
)
}
//状态数据库中存储innermeta信息
//状态数据库中存储innermeta信息
func
calInnerMetaKey
()
[]
byte
{
func
calInnerMetaKey
()
[]
byte
{
key
:=
fmt
.
Sprintf
(
"%s"
+
":%s"
,
KeyPrefixStateDB
,
innerMeta
)
key
:=
fmt
.
Sprintf
(
"%s"
+
":%s"
,
KeyPrefixStateDB
,
innerMeta
)
...
...
plugin/dapp/broker/executor/query.go
View file @
e78a46ce
...
@@ -3,24 +3,33 @@ package executor
...
@@ -3,24 +3,33 @@ package executor
import
(
import
(
brokertypes
"github.com/33cn/plugin/plugin/dapp/broker/types"
brokertypes
"github.com/33cn/plugin/plugin/dapp/broker/types"
)
)
//获取innterMeta
//获取innterMeta
func
(
b
*
broker
)
Query_QueryInnerMeta
(
query
*
brokertypes
.
QueryInnerMeta
)(
*
brokertypes
.
Meta
,
error
)
{
func
(
b
*
broker
)
Query_QueryInnerMeta
(
query
*
brokertypes
.
QueryInnerMeta
)
(
*
brokertypes
.
Meta
,
error
)
{
return
getInnerMeta
(
b
.
GetStateDB
())
return
getInnerMeta
(
b
.
GetStateDB
())
}
}
//获取outterMeta
//获取outterMeta
func
(
b
*
broker
)
Query_QueryOutterMeta
(
query
*
brokertypes
.
QueryOutterMeta
)(
*
brokertypes
.
Meta
,
error
)
{
func
(
b
*
broker
)
Query_QueryOutterMeta
(
query
*
brokertypes
.
QueryOutterMeta
)
(
*
brokertypes
.
Meta
,
error
)
{
return
getOutterMeta
(
b
.
GetStateDB
())
return
getOutterMeta
(
b
.
GetStateDB
())
}
}
//获取inMessage
//获取inMessage
func
(
b
*
broker
)
Query_QueryInMessage
(
query
*
brokertypes
.
QueryInMessage
)(
*
brokertypes
.
Response
,
error
)
{
func
(
b
*
broker
)
Query_QueryInMessage
(
query
*
brokertypes
.
QueryInMessage
)
(
*
brokertypes
.
Response
,
error
)
{
return
getInMessage
(
b
.
GetStateDB
(),
query
)
return
getInMessage
(
b
.
GetStateDB
(),
query
)
}
}
//获取outMessage
//获取outMessage
func
(
b
*
broker
)
Query_QueryOutMessage
(
query
*
brokertypes
.
QueryOutMessage
)(
*
brokertypes
.
Response
,
error
)
{
func
(
b
*
broker
)
Query_QueryOutMessage
(
query
*
brokertypes
.
QueryOutMessage
)
(
*
brokertypes
.
Response
,
error
)
{
return
getOutMessage
(
b
.
GetStateDB
(),
query
)
return
getOutMessage
(
b
.
GetStateDB
(),
query
)
}
}
//获取监听列表
//获取监听列表
func
(
b
*
broker
)
Query_PollingEvent
(
query
*
brokertypes
.
PollingEvent
)(
*
brokertypes
.
InterChainEventList
,
error
){
func
(
b
*
broker
)
Query_PollingEvent
(
query
*
brokertypes
.
PollingEvent
)
(
*
brokertypes
.
InterChainEventList
,
error
)
{
return
pollInterEvent
(
b
.
GetStateDB
(),
query
.
Meta
)
return
pollInterEvent
(
b
.
GetStateDB
(),
query
.
Meta
)
}
}
\ No newline at end of file
//get bitxhub and chainID
func
(
b
*
broker
)
Query_GetBrokerInfo
(
query
*
brokertypes
.
QueryNilParam
)
(
*
brokertypes
.
BrokerInfo
,
error
)
{
return
getBrokerInfo
(
b
.
GetStateDB
())
}
plugin/dapp/broker/proto/broker.proto
View file @
e78a46ce
...
@@ -3,13 +3,23 @@ package types;
...
@@ -3,13 +3,23 @@ package types;
option
go_package
=
"../types"
;
option
go_package
=
"../types"
;
message
BrokerAction
{
message
BrokerAction
{
oneof
value
{
oneof
value
{
Register
register
=
1
;
Init
init
=
1
;
Audit
audit
=
2
;
Register
register
=
2
;
InterchainEvent
emitInterchainEvent
=
3
;
Audit
audit
=
3
;
UpdateIndex
updateIndex
=
4
;
InterchainEvent
emitInterchainEvent
=
4
;
UpdateIndex
updateIndex
=
5
;
}
}
int32
ty
=
5
;
int32
ty
=
6
;
}
//broker初始化信息
message
Init
{
string
bxhId
=
1
;
string
appChainId
=
2
;
}
}
// 业务合约注册模型: 0表示正在审核,1表示审核通过,2表示审核失败
// 业务合约注册模型: 0表示正在审核,1表示审核通过,2表示审核失败
message
Register
{
message
Register
{
//业务合约名称
//业务合约名称
...
@@ -101,6 +111,10 @@ message InterChainEventList{
...
@@ -101,6 +111,10 @@ message InterChainEventList{
// repeated InterchainEvent list = 1;
// repeated InterchainEvent list = 1;
// string primaryKey = 2;
// string primaryKey = 2;
//}
//}
message
QueryNilParam
{
}
message
QueryOutterMeta
{
message
QueryOutterMeta
{
}
}
...
@@ -119,6 +133,14 @@ message QueryOutMessage{
...
@@ -119,6 +133,14 @@ message QueryOutMessage{
uint64
sequenceNum
=
2
;
uint64
sequenceNum
=
2
;
}
}
message
BrokerInfo
{
//跨链协议版本ID
string
bxhId
=
1
;
//应用链ID
string
appChainId
=
2
;
}
message
Meta
{
message
Meta
{
map
<
string
,
uint64
>
meta
=
1
;
map
<
string
,
uint64
>
meta
=
1
;
}
}
...
...
plugin/dapp/broker/types/broker.go
View file @
e78a46ce
...
@@ -14,11 +14,13 @@ import (
...
@@ -14,11 +14,13 @@ import (
// action类型id和name,这些常量可以自定义修改
// action类型id和name,这些常量可以自定义修改
const
(
const
(
TyUnknowAction
=
iota
+
100
TyUnknowAction
=
iota
+
100
TyInitAction
TyRegisterAction
TyRegisterAction
TyAuditAction
TyAuditAction
TyUpdateIndexAction
TyUpdateIndexAction
TyEmitInterchainEventAction
TyEmitInterchainEventAction
NameInitAction
=
"Init"
NameRegisterAction
=
"Register"
NameRegisterAction
=
"Register"
NameAuditAction
=
"Audit"
NameAuditAction
=
"Audit"
NameUpdateIndexAction
=
"UpdateIndex"
NameUpdateIndexAction
=
"UpdateIndex"
...
@@ -69,6 +71,7 @@ const (
...
@@ -69,6 +71,7 @@ const (
// log类型id值
// log类型id值
const
(
const
(
TyUnknownLog
=
iota
+
100
TyUnknownLog
=
iota
+
100
TyInitLog
TyRegisterLog
TyRegisterLog
TyAuditLog
TyAuditLog
TyUpdateIndexLog
TyUpdateIndexLog
...
@@ -80,6 +83,7 @@ var (
...
@@ -80,6 +83,7 @@ var (
BrokerX
=
"broker"
BrokerX
=
"broker"
//定义actionMap
//定义actionMap
actionMap
=
map
[
string
]
int32
{
actionMap
=
map
[
string
]
int32
{
NameInitAction
:
TyInitAction
,
NameRegisterAction
:
TyRegisterAction
,
NameRegisterAction
:
TyRegisterAction
,
NameAuditAction
:
TyAuditAction
,
NameAuditAction
:
TyAuditAction
,
NameUpdateIndexAction
:
TyUpdateIndexAction
,
NameUpdateIndexAction
:
TyUpdateIndexAction
,
...
...
plugin/dapp/broker/types/broker.pb.go
View file @
e78a46ce
...
@@ -24,12 +24,13 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
...
@@ -24,12 +24,13 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type
BrokerAction
struct
{
type
BrokerAction
struct
{
// Types that are valid to be assigned to Value:
// Types that are valid to be assigned to Value:
// *BrokerAction_Init
// *BrokerAction_Register
// *BrokerAction_Register
// *BrokerAction_Audit
// *BrokerAction_Audit
// *BrokerAction_EmitInterchainEvent
// *BrokerAction_EmitInterchainEvent
// *BrokerAction_UpdateIndex
// *BrokerAction_UpdateIndex
Value
isBrokerAction_Value
`protobuf_oneof:"value"`
Value
isBrokerAction_Value
`protobuf_oneof:"value"`
Ty
int32
`protobuf:"varint,
5
,opt,name=ty,proto3" json:"ty,omitempty"`
Ty
int32
`protobuf:"varint,
6
,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
@@ -64,22 +65,28 @@ type isBrokerAction_Value interface {
...
@@ -64,22 +65,28 @@ type isBrokerAction_Value interface {
isBrokerAction_Value
()
isBrokerAction_Value
()
}
}
type
BrokerAction_Init
struct
{
Init
*
Init
`protobuf:"bytes,1,opt,name=init,proto3,oneof"`
}
type
BrokerAction_Register
struct
{
type
BrokerAction_Register
struct
{
Register
*
Register
`protobuf:"bytes,
1
,opt,name=register,proto3,oneof"`
Register
*
Register
`protobuf:"bytes,
2
,opt,name=register,proto3,oneof"`
}
}
type
BrokerAction_Audit
struct
{
type
BrokerAction_Audit
struct
{
Audit
*
Audit
`protobuf:"bytes,
2
,opt,name=audit,proto3,oneof"`
Audit
*
Audit
`protobuf:"bytes,
3
,opt,name=audit,proto3,oneof"`
}
}
type
BrokerAction_EmitInterchainEvent
struct
{
type
BrokerAction_EmitInterchainEvent
struct
{
EmitInterchainEvent
*
InterchainEvent
`protobuf:"bytes,
3
,opt,name=emitInterchainEvent,proto3,oneof"`
EmitInterchainEvent
*
InterchainEvent
`protobuf:"bytes,
4
,opt,name=emitInterchainEvent,proto3,oneof"`
}
}
type
BrokerAction_UpdateIndex
struct
{
type
BrokerAction_UpdateIndex
struct
{
UpdateIndex
*
UpdateIndex
`protobuf:"bytes,
4
,opt,name=updateIndex,proto3,oneof"`
UpdateIndex
*
UpdateIndex
`protobuf:"bytes,
5
,opt,name=updateIndex,proto3,oneof"`
}
}
func
(
*
BrokerAction_Init
)
isBrokerAction_Value
()
{}
func
(
*
BrokerAction_Register
)
isBrokerAction_Value
()
{}
func
(
*
BrokerAction_Register
)
isBrokerAction_Value
()
{}
func
(
*
BrokerAction_Audit
)
isBrokerAction_Value
()
{}
func
(
*
BrokerAction_Audit
)
isBrokerAction_Value
()
{}
...
@@ -95,6 +102,13 @@ func (m *BrokerAction) GetValue() isBrokerAction_Value {
...
@@ -95,6 +102,13 @@ func (m *BrokerAction) GetValue() isBrokerAction_Value {
return
nil
return
nil
}
}
func
(
m
*
BrokerAction
)
GetInit
()
*
Init
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
BrokerAction_Init
);
ok
{
return
x
.
Init
}
return
nil
}
func
(
m
*
BrokerAction
)
GetRegister
()
*
Register
{
func
(
m
*
BrokerAction
)
GetRegister
()
*
Register
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
BrokerAction_Register
);
ok
{
if
x
,
ok
:=
m
.
GetValue
()
.
(
*
BrokerAction_Register
);
ok
{
return
x
.
Register
return
x
.
Register
...
@@ -133,6 +147,7 @@ func (m *BrokerAction) GetTy() int32 {
...
@@ -133,6 +147,7 @@ func (m *BrokerAction) GetTy() int32 {
// XXX_OneofWrappers is for the internal use of the proto package.
// XXX_OneofWrappers is for the internal use of the proto package.
func
(
*
BrokerAction
)
XXX_OneofWrappers
()
[]
interface
{}
{
func
(
*
BrokerAction
)
XXX_OneofWrappers
()
[]
interface
{}
{
return
[]
interface
{}{
return
[]
interface
{}{
(
*
BrokerAction_Init
)(
nil
),
(
*
BrokerAction_Register
)(
nil
),
(
*
BrokerAction_Register
)(
nil
),
(
*
BrokerAction_Audit
)(
nil
),
(
*
BrokerAction_Audit
)(
nil
),
(
*
BrokerAction_EmitInterchainEvent
)(
nil
),
(
*
BrokerAction_EmitInterchainEvent
)(
nil
),
...
@@ -140,6 +155,54 @@ func (*BrokerAction) XXX_OneofWrappers() []interface{} {
...
@@ -140,6 +155,54 @@ func (*BrokerAction) XXX_OneofWrappers() []interface{} {
}
}
}
}
//broker初始化信息
type
Init
struct
{
BxhId
string
`protobuf:"bytes,1,opt,name=bxhId,proto3" json:"bxhId,omitempty"`
AppChainId
string
`protobuf:"bytes,2,opt,name=appChainId,proto3" json:"appChainId,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
Init
)
Reset
()
{
*
m
=
Init
{}
}
func
(
m
*
Init
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Init
)
ProtoMessage
()
{}
func
(
*
Init
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
}
}
func
(
m
*
Init
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_Init
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
Init
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_Init
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
Init
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_Init
.
Merge
(
m
,
src
)
}
func
(
m
*
Init
)
XXX_Size
()
int
{
return
xxx_messageInfo_Init
.
Size
(
m
)
}
func
(
m
*
Init
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_Init
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_Init
proto
.
InternalMessageInfo
func
(
m
*
Init
)
GetBxhId
()
string
{
if
m
!=
nil
{
return
m
.
BxhId
}
return
""
}
func
(
m
*
Init
)
GetAppChainId
()
string
{
if
m
!=
nil
{
return
m
.
AppChainId
}
return
""
}
// 业务合约注册模型: 0表示正在审核,1表示审核通过,2表示审核失败
// 业务合约注册模型: 0表示正在审核,1表示审核通过,2表示审核失败
type
Register
struct
{
type
Register
struct
{
//业务合约名称
//业务合约名称
...
@@ -153,7 +216,7 @@ func (m *Register) Reset() { *m = Register{} }
...
@@ -153,7 +216,7 @@ func (m *Register) Reset() { *m = Register{} }
func
(
m
*
Register
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
Register
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Register
)
ProtoMessage
()
{}
func
(
*
Register
)
ProtoMessage
()
{}
func
(
*
Register
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
Register
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
2
}
}
}
func
(
m
*
Register
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
Register
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -196,7 +259,7 @@ func (m *Audit) Reset() { *m = Audit{} }
...
@@ -196,7 +259,7 @@ func (m *Audit) Reset() { *m = Audit{} }
func
(
m
*
Audit
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
Audit
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Audit
)
ProtoMessage
()
{}
func
(
*
Audit
)
ProtoMessage
()
{}
func
(
*
Audit
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
Audit
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
2
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
3
}
}
}
func
(
m
*
Audit
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
Audit
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -243,7 +306,7 @@ func (m *PollingEvent) Reset() { *m = PollingEvent{} }
...
@@ -243,7 +306,7 @@ func (m *PollingEvent) Reset() { *m = PollingEvent{} }
func
(
m
*
PollingEvent
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
PollingEvent
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
PollingEvent
)
ProtoMessage
()
{}
func
(
*
PollingEvent
)
ProtoMessage
()
{}
func
(
*
PollingEvent
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
PollingEvent
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
3
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
4
}
}
}
func
(
m
*
PollingEvent
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
PollingEvent
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -292,7 +355,7 @@ func (m *UpdateIndex) Reset() { *m = UpdateIndex{} }
...
@@ -292,7 +355,7 @@ func (m *UpdateIndex) Reset() { *m = UpdateIndex{} }
func
(
m
*
UpdateIndex
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
UpdateIndex
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
UpdateIndex
)
ProtoMessage
()
{}
func
(
*
UpdateIndex
)
ProtoMessage
()
{}
func
(
*
UpdateIndex
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
UpdateIndex
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
4
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
5
}
}
}
func
(
m
*
UpdateIndex
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
UpdateIndex
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -373,7 +436,7 @@ func (m *InterchainEvent) Reset() { *m = InterchainEvent{} }
...
@@ -373,7 +436,7 @@ func (m *InterchainEvent) Reset() { *m = InterchainEvent{} }
func
(
m
*
InterchainEvent
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
InterchainEvent
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
InterchainEvent
)
ProtoMessage
()
{}
func
(
*
InterchainEvent
)
ProtoMessage
()
{}
func
(
*
InterchainEvent
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
InterchainEvent
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
5
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
6
}
}
}
func
(
m
*
InterchainEvent
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
InterchainEvent
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -461,7 +524,7 @@ func (m *ReceiptBrokerLog) Reset() { *m = ReceiptBrokerLog{} }
...
@@ -461,7 +524,7 @@ func (m *ReceiptBrokerLog) Reset() { *m = ReceiptBrokerLog{} }
func
(
m
*
ReceiptBrokerLog
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
ReceiptBrokerLog
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
ReceiptBrokerLog
)
ProtoMessage
()
{}
func
(
*
ReceiptBrokerLog
)
ProtoMessage
()
{}
func
(
*
ReceiptBrokerLog
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
ReceiptBrokerLog
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
6
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
7
}
}
}
func
(
m
*
ReceiptBrokerLog
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
ReceiptBrokerLog
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -578,7 +641,7 @@ func (m *QueryInterchainEvent) Reset() { *m = QueryInterchainEvent{} }
...
@@ -578,7 +641,7 @@ func (m *QueryInterchainEvent) Reset() { *m = QueryInterchainEvent{} }
func
(
m
*
QueryInterchainEvent
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
QueryInterchainEvent
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryInterchainEvent
)
ProtoMessage
()
{}
func
(
*
QueryInterchainEvent
)
ProtoMessage
()
{}
func
(
*
QueryInterchainEvent
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
QueryInterchainEvent
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
7
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
8
}
}
}
func
(
m
*
QueryInterchainEvent
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
QueryInterchainEvent
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -632,7 +695,7 @@ func (m *InterChainEventList) Reset() { *m = InterChainEventList{} }
...
@@ -632,7 +695,7 @@ func (m *InterChainEventList) Reset() { *m = InterChainEventList{} }
func
(
m
*
InterChainEventList
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
InterChainEventList
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
InterChainEventList
)
ProtoMessage
()
{}
func
(
*
InterChainEventList
)
ProtoMessage
()
{}
func
(
*
InterChainEventList
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
InterChainEventList
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
8
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
9
}
}
}
func
(
m
*
InterChainEventList
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
InterChainEventList
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -660,22 +723,37 @@ func (m *InterChainEventList) GetList() []*InterchainEvent {
...
@@ -660,22 +723,37 @@ func (m *InterChainEventList) GetList() []*InterchainEvent {
return
nil
return
nil
}
}
////根据状态查看跨链事件
type
QueryNilParam
struct
{
//message QueryInterchainEventList {
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
// //事件状态必填(默认是0,只查询待处理状态的事件)
XXX_unrecognized
[]
byte
`json:"-"`
// int32 status = 1;
XXX_sizecache
int32
`json:"-"`
// // 主键索引
}
// string primaryKey = 2;
// //单页返回多少条记录,默认返回10条,为了系统安全最多单次只能返回20条
func
(
m
*
QueryNilParam
)
Reset
()
{
*
m
=
QueryNilParam
{}
}
// int32 count = 3;
func
(
m
*
QueryNilParam
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
// // 0降序,1升序,默认降序
func
(
*
QueryNilParam
)
ProtoMessage
()
{}
// int32 direction = 4;
func
(
*
QueryNilParam
)
Descriptor
()
([]
byte
,
[]
int
)
{
//}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
10
}
////跨链事件列表
}
//message InterchainEventList {
// repeated InterchainEvent list = 1;
func
(
m
*
QueryNilParam
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
// string primaryKey = 2;
return
xxx_messageInfo_QueryNilParam
.
Unmarshal
(
m
,
b
)
//}
}
func
(
m
*
QueryNilParam
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_QueryNilParam
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
QueryNilParam
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_QueryNilParam
.
Merge
(
m
,
src
)
}
func
(
m
*
QueryNilParam
)
XXX_Size
()
int
{
return
xxx_messageInfo_QueryNilParam
.
Size
(
m
)
}
func
(
m
*
QueryNilParam
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_QueryNilParam
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_QueryNilParam
proto
.
InternalMessageInfo
type
QueryOutterMeta
struct
{
type
QueryOutterMeta
struct
{
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
...
@@ -686,7 +764,7 @@ func (m *QueryOutterMeta) Reset() { *m = QueryOutterMeta{} }
...
@@ -686,7 +764,7 @@ func (m *QueryOutterMeta) Reset() { *m = QueryOutterMeta{} }
func
(
m
*
QueryOutterMeta
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
QueryOutterMeta
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryOutterMeta
)
ProtoMessage
()
{}
func
(
*
QueryOutterMeta
)
ProtoMessage
()
{}
func
(
*
QueryOutterMeta
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
QueryOutterMeta
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
9
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
11
}
}
}
func
(
m
*
QueryOutterMeta
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
QueryOutterMeta
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -717,7 +795,7 @@ func (m *QueryInnerMeta) Reset() { *m = QueryInnerMeta{} }
...
@@ -717,7 +795,7 @@ func (m *QueryInnerMeta) Reset() { *m = QueryInnerMeta{} }
func
(
m
*
QueryInnerMeta
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
QueryInnerMeta
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryInnerMeta
)
ProtoMessage
()
{}
func
(
*
QueryInnerMeta
)
ProtoMessage
()
{}
func
(
*
QueryInnerMeta
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
QueryInnerMeta
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
0
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
2
}
}
}
func
(
m
*
QueryInnerMeta
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
QueryInnerMeta
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -750,7 +828,7 @@ func (m *QueryInMessage) Reset() { *m = QueryInMessage{} }
...
@@ -750,7 +828,7 @@ func (m *QueryInMessage) Reset() { *m = QueryInMessage{} }
func
(
m
*
QueryInMessage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
QueryInMessage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryInMessage
)
ProtoMessage
()
{}
func
(
*
QueryInMessage
)
ProtoMessage
()
{}
func
(
*
QueryInMessage
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
QueryInMessage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
1
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
3
}
}
}
func
(
m
*
QueryInMessage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
QueryInMessage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -797,7 +875,7 @@ func (m *QueryOutMessage) Reset() { *m = QueryOutMessage{} }
...
@@ -797,7 +875,7 @@ func (m *QueryOutMessage) Reset() { *m = QueryOutMessage{} }
func
(
m
*
QueryOutMessage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
QueryOutMessage
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
QueryOutMessage
)
ProtoMessage
()
{}
func
(
*
QueryOutMessage
)
ProtoMessage
()
{}
func
(
*
QueryOutMessage
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
QueryOutMessage
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
2
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
4
}
}
}
func
(
m
*
QueryOutMessage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
QueryOutMessage
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -832,6 +910,55 @@ func (m *QueryOutMessage) GetSequenceNum() uint64 {
...
@@ -832,6 +910,55 @@ func (m *QueryOutMessage) GetSequenceNum() uint64 {
return
0
return
0
}
}
type
BrokerInfo
struct
{
//跨链协议版本ID
BxhId
string
`protobuf:"bytes,1,opt,name=bxhId,proto3" json:"bxhId,omitempty"`
//应用链ID
AppChainId
string
`protobuf:"bytes,2,opt,name=appChainId,proto3" json:"appChainId,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
}
func
(
m
*
BrokerInfo
)
Reset
()
{
*
m
=
BrokerInfo
{}
}
func
(
m
*
BrokerInfo
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
BrokerInfo
)
ProtoMessage
()
{}
func
(
*
BrokerInfo
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
15
}
}
func
(
m
*
BrokerInfo
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
return
xxx_messageInfo_BrokerInfo
.
Unmarshal
(
m
,
b
)
}
func
(
m
*
BrokerInfo
)
XXX_Marshal
(
b
[]
byte
,
deterministic
bool
)
([]
byte
,
error
)
{
return
xxx_messageInfo_BrokerInfo
.
Marshal
(
b
,
m
,
deterministic
)
}
func
(
m
*
BrokerInfo
)
XXX_Merge
(
src
proto
.
Message
)
{
xxx_messageInfo_BrokerInfo
.
Merge
(
m
,
src
)
}
func
(
m
*
BrokerInfo
)
XXX_Size
()
int
{
return
xxx_messageInfo_BrokerInfo
.
Size
(
m
)
}
func
(
m
*
BrokerInfo
)
XXX_DiscardUnknown
()
{
xxx_messageInfo_BrokerInfo
.
DiscardUnknown
(
m
)
}
var
xxx_messageInfo_BrokerInfo
proto
.
InternalMessageInfo
func
(
m
*
BrokerInfo
)
GetBxhId
()
string
{
if
m
!=
nil
{
return
m
.
BxhId
}
return
""
}
func
(
m
*
BrokerInfo
)
GetAppChainId
()
string
{
if
m
!=
nil
{
return
m
.
AppChainId
}
return
""
}
type
Meta
struct
{
type
Meta
struct
{
Meta
map
[
string
]
uint64
`protobuf:"bytes,1,rep,name=meta,proto3" json:"meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
Meta
map
[
string
]
uint64
`protobuf:"bytes,1,rep,name=meta,proto3" json:"meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
...
@@ -843,7 +970,7 @@ func (m *Meta) Reset() { *m = Meta{} }
...
@@ -843,7 +970,7 @@ func (m *Meta) Reset() { *m = Meta{} }
func
(
m
*
Meta
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
Meta
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Meta
)
ProtoMessage
()
{}
func
(
*
Meta
)
ProtoMessage
()
{}
func
(
*
Meta
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
Meta
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
3
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
6
}
}
}
func
(
m
*
Meta
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
Meta
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -887,7 +1014,7 @@ func (m *Response) Reset() { *m = Response{} }
...
@@ -887,7 +1014,7 @@ func (m *Response) Reset() { *m = Response{} }
func
(
m
*
Response
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
m
*
Response
)
String
()
string
{
return
proto
.
CompactTextString
(
m
)
}
func
(
*
Response
)
ProtoMessage
()
{}
func
(
*
Response
)
ProtoMessage
()
{}
func
(
*
Response
)
Descriptor
()
([]
byte
,
[]
int
)
{
func
(
*
Response
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
4
}
return
fileDescriptor_f209535e190f2bed
,
[]
int
{
1
7
}
}
}
func
(
m
*
Response
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
func
(
m
*
Response
)
XXX_Unmarshal
(
b
[]
byte
)
error
{
...
@@ -931,6 +1058,7 @@ func (m *Response) GetPayload() []byte {
...
@@ -931,6 +1058,7 @@ func (m *Response) GetPayload() []byte {
func
init
()
{
func
init
()
{
proto
.
RegisterType
((
*
BrokerAction
)(
nil
),
"types.BrokerAction"
)
proto
.
RegisterType
((
*
BrokerAction
)(
nil
),
"types.BrokerAction"
)
proto
.
RegisterType
((
*
Init
)(
nil
),
"types.Init"
)
proto
.
RegisterType
((
*
Register
)(
nil
),
"types.Register"
)
proto
.
RegisterType
((
*
Register
)(
nil
),
"types.Register"
)
proto
.
RegisterType
((
*
Audit
)(
nil
),
"types.Audit"
)
proto
.
RegisterType
((
*
Audit
)(
nil
),
"types.Audit"
)
proto
.
RegisterType
((
*
PollingEvent
)(
nil
),
"types.PollingEvent"
)
proto
.
RegisterType
((
*
PollingEvent
)(
nil
),
"types.PollingEvent"
)
...
@@ -939,10 +1067,12 @@ func init() {
...
@@ -939,10 +1067,12 @@ func init() {
proto
.
RegisterType
((
*
ReceiptBrokerLog
)(
nil
),
"types.ReceiptBrokerLog"
)
proto
.
RegisterType
((
*
ReceiptBrokerLog
)(
nil
),
"types.ReceiptBrokerLog"
)
proto
.
RegisterType
((
*
QueryInterchainEvent
)(
nil
),
"types.QueryInterchainEvent"
)
proto
.
RegisterType
((
*
QueryInterchainEvent
)(
nil
),
"types.QueryInterchainEvent"
)
proto
.
RegisterType
((
*
InterChainEventList
)(
nil
),
"types.InterChainEventList"
)
proto
.
RegisterType
((
*
InterChainEventList
)(
nil
),
"types.InterChainEventList"
)
proto
.
RegisterType
((
*
QueryNilParam
)(
nil
),
"types.QueryNilParam"
)
proto
.
RegisterType
((
*
QueryOutterMeta
)(
nil
),
"types.QueryOutterMeta"
)
proto
.
RegisterType
((
*
QueryOutterMeta
)(
nil
),
"types.QueryOutterMeta"
)
proto
.
RegisterType
((
*
QueryInnerMeta
)(
nil
),
"types.QueryInnerMeta"
)
proto
.
RegisterType
((
*
QueryInnerMeta
)(
nil
),
"types.QueryInnerMeta"
)
proto
.
RegisterType
((
*
QueryInMessage
)(
nil
),
"types.QueryInMessage"
)
proto
.
RegisterType
((
*
QueryInMessage
)(
nil
),
"types.QueryInMessage"
)
proto
.
RegisterType
((
*
QueryOutMessage
)(
nil
),
"types.QueryOutMessage"
)
proto
.
RegisterType
((
*
QueryOutMessage
)(
nil
),
"types.QueryOutMessage"
)
proto
.
RegisterType
((
*
BrokerInfo
)(
nil
),
"types.BrokerInfo"
)
proto
.
RegisterType
((
*
Meta
)(
nil
),
"types.Meta"
)
proto
.
RegisterType
((
*
Meta
)(
nil
),
"types.Meta"
)
proto
.
RegisterMapType
((
map
[
string
]
uint64
)(
nil
),
"types.Meta.MetaEntry"
)
proto
.
RegisterMapType
((
map
[
string
]
uint64
)(
nil
),
"types.Meta.MetaEntry"
)
proto
.
RegisterType
((
*
Response
)(
nil
),
"types.Response"
)
proto
.
RegisterType
((
*
Response
)(
nil
),
"types.Response"
)
...
@@ -953,47 +1083,52 @@ func init() {
...
@@ -953,47 +1083,52 @@ func init() {
}
}
var
fileDescriptor_f209535e190f2bed
=
[]
byte
{
var
fileDescriptor_f209535e190f2bed
=
[]
byte
{
// 629 bytes of a gzipped FileDescriptorProto
// 715 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xe4
,
0x55
,
0x4d
,
0x6f
,
0xd3
,
0x4c
,
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xbc
,
0x55
,
0xcd
,
0x6e
,
0xd3
,
0x40
,
0x10
,
0x8e
,
0x13
,
0x3b
,
0x4d
,
0x26
,
0x79
,
0xdb
,
0xbe
,
0xdb
,
0x52
,
0x59
,
0x5c
,
0x88
,
0xac
,
0x1e
,
0x10
,
0x8e
,
0x1d
,
0x3b
,
0x4d
,
0x26
,
0x69
,
0x53
,
0xb6
,
0xa5
,
0xb2
,
0x38
,
0x40
,
0xb0
,
0x7a
,
0x28
,
0xca
,
0x57
,
0x2a
,
0x15
,
0x09
,
0x10
,
0xb7
,
0x14
,
0x2a
,
0xa5
,
0xa8
,
0x2d
,
0x65
,
0xf9
,
0x10
,
0x70
,
0x7f
,
0xa9
,
0x54
,
0x24
,
0x40
,
0x88
,
0x4b
,
0x52
,
0x2a
,
0x25
,
0xa8
,
0x2d
,
0x65
,
0xf9
,
0x11
,
0x70
,
0xdb
,
0x3a
,
0x43
,
0x58
,
0x9a
,
0xd8
,
0xee
,
0xee
,
0xba
,
0xaa
,
0x6f
,
0x1c
,
0xf8
,
0x5d
,
0x5c
,
0xf8
,
0xdb
,
0x3a
,
0xd3
,
0x74
,
0x69
,
0x62
,
0xbb
,
0xeb
,
0x75
,
0x55
,
0xdf
,
0x79
,
0x13
,
0xde
,
0x83
,
0x0b
,
0x63
,
0x68
,
0xc7
,
0x9b
,
0xc4
,
0x2d
,
0x20
,
0x2e
,
0x15
,
0x17
,
0x2e
,
0xd6
,
0xce
,
0xb3
,
0xcf
,
0xee
,
0x2f
,
0x86
,
0x76
,
0xbd
,
0x49
,
0x9c
,
0x16
,
0x84
,
0x5a
,
0x55
,
0x5c
,
0xa2
,
0x9d
,
0x6f
,
0xbe
,
0xdd
,
0x7c
,
0xed
,
0x33
,
0x86
,
0xee
,
0x89
,
0x4a
,
0x4f
,
0x51
,
0xf5
,
0x33
,
0x95
,
0x9a
,
0x94
,
0x05
,
0xa6
,
0x99
,
0xcc
,
0xcc
,
0x37
,
0x86
,
0xc6
,
0xa1
,
0x88
,
0x4e
,
0x50
,
0xb4
,
0x63
,
0x11
,
0xc9
,
0x88
,
0xb8
,
0xc8
,
0x50
,
0x47
,
0x5f
,
0xea
,
0xd0
,
0xdd
,
0x25
,
0x7c
,
0x10
,
0x1b
,
0x99
,
0x26
,
0xec
,
0x3e
,
0xb4
,
0x32
,
0x8b
,
0x31
,
0xf1
,
0x7f
,
0xd8
,
0xd0
,
0xe8
,
0x6a
,
0xbc
,
0x13
,
0x48
,
0x1e
,
0x85
,
0xe4
,
0x3e
,
0x14
,
0x8e
,
0xa5
,
0x36
,
0xa8
,
0x42
,
0xaf
,
0xe7
,
0x6d
,
0x75
,
0x76
,
0x56
,
0xfa
,
0x44
,
0xed
,
0x73
,
0x38
,
0x3c
,
0xe4
,
0xd2
,
0xb3
,
0x5a
,
0xd6
,
0x46
,
0x7d
,
0xab
,
0xde
,
0xd6
,
0xb4
,
0x76
,
0x3f
,
0xe4
,
0x07
,
0x0f
,
0x6b
,
0x7c
,
0x4e
,
0x61
,
0x9b
,
0x10
,
0x88
,
0x7c
,
0x24
,
0x4d
,
0x58
,
0x27
,
0x6e
,
0xd7
,
0xb2
,
0x57
,
0xa2
,
0xda
,
0x45
,
0x9e
,
0x40
,
0x55
,
0xe0
,
0x90
,
0x27
,
0x12
,
0x85
,
0x67
,
0x6b
,
0x5a
,
0x71
,
0x07
,
0x16
,
0x1b
,
0xd6
,
0x78
,
0xb9
,
0xc9
,
0x9e
,
0xc3
,
0x1a
,
0x4e
,
0xa5
,
0xd9
,
0x4f
,
0x0c
,
0xd3
,
0xd0
,
0xa8
,
0x81
,
0x7b
,
0x25
,
0x3a
,
0xa5
,
0x90
,
0x75
,
0x70
,
0x59
,
0x3a
,
0xe0
,
0xd2
,
0x2b
,
0xaa
,
0xf8
,
0x93
,
0x90
,
0xc9
,
0xde
,
0x39
,
0x26
,
0x26
,
0x6c
,
0xd0
,
0x99
,
0x0d
,
0x77
,
0xe6
,
0xca
,
0x6b
,
0x6e
,
0xc3
,
0x70
,
0x3b
,
0x0a
,
0xeb
,
0x95
,
0x68
,
0xee
,
0x24
,
0x6f
,
0x60
,
0x05
,
0xc7
,
0x5c
,
0xee
,
0xb0
,
0xc6
,
0x7f
,
0x75
,
0x88
,
0x3d
,
0x84
,
0x4e
,
0x9e
,
0x8d
,
0x84
,
0xc1
,
0xfd
,
0x64
,
0x84
,
0xf6
,
0x43
,
0x89
,
0x22
,
0x38
,
0x66
,
0x3c
,
0xdc
,
0x39
,
0xc3
,
0x50
,
0x7a
,
0x8e
,
0xbe
,
0xb3
,
0x36
,
0x17
,
0xa1
,
0x4f
,
0x77
,
0x30
,
0x77
,
0xc7
,
0x9b
,
0xc5
,
0xce
,
0xb0
,
0xc6
,
0xab
,
0x44
,
0xb6
,
0x0c
,
0x4d
,
0x63
,
0xce
,
0xdb
,
0x2b
,
0xd1
,
0x3f
,
0x5d
,
0x22
,
0xcf
,
0xa0
,
0x9e
,
0xc6
,
0x03
,
0x26
,
0xb1
,
0x75
,
0x53
,
0x84
,
0x41
,
0xcf
,
0xdb
,
0x0a
,
0x78
,
0xdd
,
0x14
,
0xbb
,
0x4b
,
0x10
,
0x9c
,
0x8b
,
0x49
,
0x1f
,
0x0e
,
0xf0
,
0xdc
,
0x73
,
0xf5
,
0x1b
,
0xc4
,
0xbc
,
0xf1
,
0x71
,
0xe6
,
0xe9
,
0x95
,
0x68
,
0x91
,
0x8e
,
0xd1
,
0x3d
,
0x68
,
0xcd
,
0x52
,
0x63
,
0x3d
,
0xe8
,
0xe0
,
0x05
,
0xc6
,
0x26
,
0x55
,
0x47
,
0x62
,
0x48
,
0x96
,
0xc0
,
0x96
,
0x99
,
0x57
,
0x69
,
0x59
,
0x1b
,
0x2e
,
0xb5
,
0x65
,
0xd6
,
0x5d
,
0x00
,
0xf7
,
0x8a
,
0x54
,
0x80
,
0x36
,
0xaf
,
0x42
,
0xd1
,
0x00
,
0x02
,
0x4a
,
0xee
,
0xcf
,
0x54
,
0xb6
,
0x01
,
0x4d
,
0x8c
,
0x8d
,
0x52
,
0xf4
,
0x5f
,
0x81
,
0xa3
,
0x2a
,
0x40
,
0x56
,
0xc1
,
0x3d
,
0x3c
,
0x3f
,
0xee
,
0x0f
,
0x6d
,
0x84
,
0xc9
,
0x35
,
0x15
,
0xa7
,
0xcd
,
0x9d
,
0x15
,
0x6d
,
0x43
,
0xf7
,
0x38
,
0x9d
,
0x4c
,
0x64
,
0x74
,
0x75
,
0x6a
,
0x34
,
0x37
,
0xc8
,
0x5d
,
0x00
,
0x16
,
0xc7
,
0xdb
,
0x2a
,
0x7e
,
0x7f
,
0xa0
,
0x2b
,
0x32
,
0x2e
,
0x33
,
0xba
,
0x05
,
0xfe
,
0x14
,
0x8d
,
0x70
,
0xe5
,
0xee
,
0xb8
,
0x54
,
0x0e
,
0xd1
,
0x08
,
0x52
,
0xa3
,
0x05
,
0xc4
,
0x7f
,
0x0c
,
0xd5
,
0x49
,
0x61
,
0x48
,
0x0b
,
0xea
,
0x78
,
0x8e
,
0x81
,
0x8c
,
0x4e
,
0x1b
,
0xd1
,
0x37
,
0x0f
,
0x3a
,
0x95
,
0xcc
,
0xac
,
0x6b
,
0x8d
,
0x67
,
0x39
,
0x26
,
0x31
,
0x1e
,
0xc4
,
0x3e
,
0x1b
,
0xa3
,
0x79
,
0xa7
,
0x08
,
0xf9
,
0x1d
,
0x70
,
0x75
,
0x69
,
0xfe
,
0x4d
,
0x25
,
0x6b
,
0xe5
,
0x53
,
0x3a
,
0xe7
,
0xf3
,
0x2a
,
0xc4
,
0x22
,
0xe8
,
0x8e
,
0xb4
,
0x79
,
0x85
,
0xea
,
0x5c
,
0xc6
,
0x50
,
0x49
,
0x24
,
0x93
,
0x69
,
0x62
,
0x82
,
0x1a
,
0xcb
,
0xdf
,
0x84
,
0xc6
,
0x41
,
0x34
,
0x1a
,
0xf1
,
0xb8
,
0xff
,
0xcc
,
0x05
,
0x70
,
0x09
,
0xb3
,
0x1c
,
0xad
,
0xe2
,
0x05
,
0xa7
,
0x51
,
0x72
,
0xaa
,
0x18
,
0x70
,
0x98
,
0xd7
,
0xe3
,
0x1e
,
0x38
,
0x63
,
0x94
,
0xec
,
0x42
,
0x4f
,
0xf7
,
0x50
,
0x32
,
0xaa
,
0x1d
,
0x0b
,
0x61
,
0x49
,
0xe1
,
0xd9
,
0xeb
,
0x22
,
0x43
,
0x2a
,
0xb4
,
0xcf
,
0x67
,
0x26
,
0xbb
,
0x6b
,
0xdf
,
0xfe
,
0x4f
,
0x0b
,
0xea
,
0x85
,
0xba
,
0xa8
,
0xd0
,
0x09
,
0x9e
,
0xa6
,
0x18
,
0x06
,
0xb8
,
0x9f
,
0x8e
,
0x89
,
0xce
,
0xd2
,
0x44
,
0x23
,
0x15
,
0xb5
,
0xfa
,
0x4e
,
0x4a
,
0x98
,
0xcf
,
0x09
,
0xd1
,
0x77
,
0x0f
,
0xf5
,
0x3d
,
0x87
,
0x16
,
0x21
,
0xe2
,
0x43
,
0x63
,
0x90
,
0xc8
,
0xf7
,
0x28
,
0xce
,
0x78
,
0x80
,
0xfd
,
0x56
,
0xae
,
0xf6
,
0x71
,
0x1d
,
0x02
,
0x49
,
0x1d
,
0x2c
,
0xc3
,
0x2f
,
0x8d
,
0x6b
,
0x0b
,
0x9c
,
0x81
,
0xd7
,
0x26
,
0x81
,
0x39
,
0x4c
,
0x71
,
0x12
,
0x11
,
0xcc
,
0x38
,
0xe5
,
0x9c
,
0x53
,
0xc4
,
0x88
,
0x07
,
0x6f
,
0x16
,
0x51
,
0xd3
,
0xda
,
0x62
,
0x1f
,
0xf3
,
0x24
,
0xa6
,
0x70
,
0xdb
,
0x9c
,
0xd6
,
0x16
,
0x13
,
0x0b
,
0x02
,
0x4f
,
0x3f
,
0x64
,
0x31
,
0xea
,
0x56
,
0x3b
,
0x74
,
0x62
,
0x92
,
0x47
,
0x6a
,
0xca
,
0x92
,
0x6a
,
0xac
,
0xc3
,
0x66
,
0xaf
,
0x61
,
0x31
,
0xbb
,
0xae
,
0xf4
,
0x6d
,
0x89
,
0x5e
,
0xcb
,
0xac
,
0x6f
,
0x38
,
0x0a
,
0x13
,
0x34
,
0x1d
,
0x9c
,
0x4d
,
0x59
,
0x0e
,
0xd3
,
0x29
,
0xc1
,
0xff
,
0x65
,
0x41
,
0xf3
,
0x5f
,
0xeb
,
0xb0
,
0xca
,
0x31
,
0x46
,
0x99
,
0x99
,
0x52
,
0x32
,
0x07
,
0xe9
,
0xf8
,
0x1f
,
0xd4
,
0x8b
,
0xe2
,
0x14
,
0xac
,
0x82
,
0xcb
,
0x75
,
0xff
,
0xf3
,
0xf4
,
0x73
,
0xe3
,
0xc6
,
0x12
,
0x27
,
0xe0
,
0xc8
,
0x81
,
0xf5
,
0x97
,
0x39
,
0xaa
,
0xe2
,
0xaf
,
0x36
,
0x34
,
0x1a
,
0xc0
,
0x1a
,
0x39
,
0x7c
,
0x3a
,
0x77
,
0x59
,
0xd6
,
0xfa
,
0xac
,
0xb0
,
0xa3
,
0x34
,
0x0c
,
0x74
,
0xba
,
0x35
,
0xaa
,
0xcf
,
0x0a
,
0x63
,
0x62
,
0x78
,
0x20
,
0xb5
,
0x61
,
0x77
,
0xc0
,
0x9f
,
0x48
,
0x6d
,
0x42
,
0xaf
,
0xd7
,
0xf8
,
0x7d
,
0x69
,
0x38
,
0x98
,
0x78
,
0x95
,
0x56
,
0x59
,
0x61
,
0xea
,
0x5c
,
0xe8
,
0xdb
,
0x82
,
0x9e
,
0xb5
,
0x49
,
0xdf
,
0xbe
,
0x71
,
0xa2
,
0xff
,
0x61
,
0x85
,
0x02
,
0x7f
,
0x91
,
0x1b
,
0x83
,
0xca
,
0xea
,
0x2b
,
0x5a
,
0x85
,
0x65
,
0xdb
,
0xb0
,
0x4c
,
0x31
,
0x40
,
0x1e
,
0xcb
,
0x5c
,
0x93
,
0xbb
,
0xd1
,
0x70
,
0x4e
,
0x6d
,
0xd6
,
0x15
,
0x97
,
0x4b
,
0xe2
,
0x90
,
0x77
,
0x73
,
0xe4
,
0x10
,
0xb5
,
0x16
,
0x63
,
0x64
,
0x9b
,
0xf0
,
0x9f
,
0x4c
,
0xd4
,
0x66
,
0x5f
,
0x43
,
0x6d
,
0xe5
,
0x1b
,
0x50
,
0x9b
,
0x73
,
0x35
,
0xb5
,
0xb9
,
0x97
,
0xd5
,
0x26
,
0x5c
,
0x20
,
0xc7
,
0x42
,
0x2a
,
0x27
,
0xf5
,
0xcb
,
0xe0
,
0x55
,
0x4d
,
0xd6
,
0x7f
,
0xd2
,
0x64
,
0xf4
,
0x61
,
0xf5
,
0x5d
,
0x8a
,
0x22
,
0xfb
,
0xaf
,
0x0d
,
0xf5
,
0x3b
,
0xb0
,
0xa2
,
0x03
,
0x6e
,
0x4f
,
0x03
,
0x7e
,
0xe1
,
0xfe
,
0xba
,
0xaf
,
0xfe
,
0x0c
,
0xbe
,
0x0d
,
0x9e
,
0xdd
,
0x9e
,
0x4f
,
0x12
,
0x5b
,
0x8d
,
0xee
,
0xf2
,
0x44
,
0x92
,
0x87
,
0xe0
,
0x8c
,
0x78
,
0xa2
,
0xf6
,
0x61
,
0xf9
,
0xef
,
0xa5
,
0xa1
,
0x9a
,
0x1b
,
0x95
,
0x49
,
0x42
,
0x9f
,
0xbd
,
0xc4
,
0xa8
,
0xa2
,
0x9c
,
0x29
,
0x37
,
0x1f
,
0x41
,
0x7b
,
0x0e
,
0xe3
,
0x37
,
0x61
,
0x51
,
0x27
,
0xbe
,
0xcf
,
0x47
,
0x07
,
0x4c
,
0xb0
,
0xb1
,
0x7f
,
0x0b
,
0x9a
,
0x1a
,
0xb1
,
0x55
,
0x68
,
0x9c
,
0x62
,
0xe1
,
0xbc
,
0xdb
,
0xa5
,
0x6d
,
0x26
,
0x75
,
0xdb
,
0x79
,
0x2b
,
0x8d
,
0x78
,
0x9b
,
0x4a
,
0x89
,
0x42
,
0x09
,
0xce
,
0x5f
,
0x86
,
0x25
,
0xf3
,
0xe7
,
0x42
,
0x83
,
0x7c
,
0x9e
,
0x27
,
0xf5
,
0xc7
,
0x5e
,
0xf4
,
0xd6
,
0x8e
,
0xcb
,
0x52
,
0xd7
,
0x15
,
0xa5
,
0x78
,
0x55
,
0xa5
,
0xd8
,
0x22
,
0x7b
,
0x98
,
0x24
,
0x6c
,
0x88
,
0x64
,
0x1d
,
0x16
,
0x79
,
0x68
,
0x32
,
0x3b
,
0x60
,
0x5c
,
0x18
,
0xb1
,
0x31
,
0x2d
,
0x53
,
0x74
,
0xfd
,
0x9e
,
0x99
,
0x76
,
0x27
,
0x13
,
0xc5
,
0x24
,
0x15
,
0x23
,
0xea
,
0xed
,
0xcf
,
0x83
,
0x17
,
0x45
,
0x6a
,
0x5f
,
0x12
,
0xa9
,
0xff
,
0x65
,
0x16
,
0xfe
,
0xa6
,
0x9f
,
0xee
,
0x72
,
0x97
,
0xcf
,
0xcc
,
0x9d
,
0x16
,
0x34
,
0xcb
,
0x1f
,
0xd4
,
0x2e
,
0x7c
,
0x68
,
0xf5
,
0xfb
,
0xdb
,
0x02
,
0xe4
,
0x23
,
0xda
,
0x0f
,
0x8f
,
0xa2
,
0x6b
,
0xee
,
0xc5
,
0x6f
,
0xe0
,
0xa8
,
0x02
,
0x90
,
0x07
,
0x14
,
0xfb
,
0x49
,
0x93
,
0xfe
,
0x56
,
0x0f
,
0x7e
,
0x04
,
0x00
,
0x00
,
0xff
,
0xff
,
0xc2
,
0xf6
,
0xd8
,
0xd3
,
0xf5
,
0xa4
,
0x4a
,
0x7c
,
0xbb
,
0xb0
,
0x9e
,
0xf4
,
0xcf
,
0x4e
,
0x28
,
0x45
,
0x96
,
0x2f
,
0xaa
,
0x9f
,
0xbd
,
0x06
,
0x00
,
0x00
,
0x3b
,
0xcf
,
0xa1
,
0x36
,
0x85
,
0xc8
,
0x32
,
0x94
,
0x4f
,
0x30
,
0x33
,
0x31
,
0xd5
,
0x51
,
0xe5
,
0xa1
,
0x47
,
0xc8
,
0x64
,
0x9c
,
0x1b
,
0x2f
,
0xed
,
0x17
,
0x96
,
0xff
,
0x49
,
0xed
,
0xe0
,
0x7c
,
0x59
,
0x14
,
0xe4
,
0x67
,
0x15
,
0xe5
,
0xa7
,
0x76
,
0xd1
,
0x38
,
0x2f
,
0x93
,
0x49
,
0x76
,
0x62
,
0x2a
,
0x4f
,
0xcc
,
0xb2
,
0x51
,
0xc4
,
0x06
,
0x7a
,
0x74
,
0x1a
,
0x74
,
0x62
,
0x6e
,
0x55
,
0xa1
,
0x92
,
0x7f
,
0x56
,
0xbb
,
0xf0
,
0xb5
,
0xda
,
0x6e
,
0x6f
,
0xea
,
0xdc
,
0x0f
,
0x2b
,
0xfa
,
0x1b
,
0xfb
,
0xf4
,
0x77
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0x7a
,
0x60
,
0xf5
,
0x80
,
0x73
,
0x07
,
0x00
,
0x00
,
}
}
// Reference imports to suppress errors if they are not otherwise used.
// Reference imports to suppress errors if they are not otherwise used.
...
...
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