Complete output queue for create packet

This commit is contained in:
Ethan Frey 2017-07-17 21:28:36 +02:00
parent 7d3c0cd3e7
commit 1fc222e449
2 changed files with 24 additions and 3 deletions

View File

@ -173,7 +173,7 @@ func (h Handler) createPacket(ctx basecoin.Context, store state.KVStore,
// start making the packet to send
packet := Packet{
DestChain: t.DestChain,
DestChain: dest,
Tx: t.Tx,
Permissions: make([]basecoin.Actor, len(t.Permissions)),
}
@ -188,6 +188,9 @@ func (h Handler) createPacket(ctx basecoin.Context, store state.KVStore,
}
// now add it to the output queue....
// TODO: where to store, also set the sequence....
q := OutputQueue(store, dest)
packet.Sequence = q.Tail()
q.Push(packet.Bytes())
return res, nil
}

View File

@ -12,8 +12,12 @@ const (
// we otherwise use the chainid as prefix, so this must not be an
// alpha-numeric byte
prefixChains = "**"
prefixInput = "i"
prefixOutput = "o"
)
// this is used for the global handler info
var (
handlerKey = []byte{0x2}
)
@ -77,7 +81,7 @@ func (c ChainSet) Register(chainID string, ourHeight uint64, theirHeight int) er
// send off to another chain.
type Packet struct {
DestChain string `json:"dest_chain"`
Sequence int `json:"sequence"`
Sequence uint64 `json:"sequence"`
Permissions []basecoin.Actor `json:"permissions"`
Tx basecoin.Tx `json:"tx"`
}
@ -86,3 +90,17 @@ type Packet struct {
func (p Packet) Bytes() []byte {
return wire.BinaryBytes(p)
}
// InputQueue returns the queue of input packets from this chain
func InputQueue(store state.KVStore, chainID string) *state.Queue {
ch := stack.PrefixedStore(chainID, store)
space := stack.PrefixedStore(prefixInput, ch)
return state.NewQueue(space)
}
// OutputQueue returns the queue of output packets destined for this chain
func OutputQueue(store state.KVStore, chainID string) *state.Queue {
ch := stack.PrefixedStore(chainID, store)
space := stack.PrefixedStore(prefixOutput, ch)
return state.NewQueue(space)
}