6 types "github.com/tendermint/abci/types"
7 cmn "github.com/tendermint/tmlibs/common"
10 type localClient struct {
17 func NewLocalClient(mtx *sync.Mutex, app types.Application) *localClient {
25 cli.BaseService = *cmn.NewBaseService(nil, "localClient", cli)
29 func (app *localClient) SetResponseCallback(cb Callback) {
31 defer app.mtx.Unlock()
35 // TODO: change types.Application to include Error()?
36 func (app *localClient) Error() error {
40 func (app *localClient) FlushAsync() *ReqRes {
42 return newLocalReqRes(types.ToRequestFlush(), nil)
45 func (app *localClient) EchoAsync(msg string) *ReqRes {
47 types.ToRequestEcho(msg),
48 types.ToResponseEcho(msg),
52 func (app *localClient) InfoAsync(req types.RequestInfo) *ReqRes {
54 resInfo := app.Application.Info(req)
57 types.ToRequestInfo(req),
58 types.ToResponseInfo(resInfo),
62 func (app *localClient) SetOptionAsync(key string, value string) *ReqRes {
64 log := app.Application.SetOption(key, value)
67 types.ToRequestSetOption(key, value),
68 types.ToResponseSetOption(log),
72 func (app *localClient) DeliverTxAsync(tx []byte) *ReqRes {
74 res := app.Application.DeliverTx(tx)
77 types.ToRequestDeliverTx(tx),
78 types.ToResponseDeliverTx(res.Code, res.Data, res.Log),
82 func (app *localClient) CheckTxAsync(tx []byte) *ReqRes {
84 res := app.Application.CheckTx(tx)
87 types.ToRequestCheckTx(tx),
88 types.ToResponseCheckTx(res.Code, res.Data, res.Log),
92 func (app *localClient) QueryAsync(reqQuery types.RequestQuery) *ReqRes {
94 resQuery := app.Application.Query(reqQuery)
97 types.ToRequestQuery(reqQuery),
98 types.ToResponseQuery(resQuery),
102 func (app *localClient) CommitAsync() *ReqRes {
104 res := app.Application.Commit()
107 types.ToRequestCommit(),
108 types.ToResponseCommit(res.Code, res.Data, res.Log),
112 func (app *localClient) InitChainAsync(params types.RequestInitChain) *ReqRes {
114 app.Application.InitChain(params)
115 reqRes := app.callback(
116 types.ToRequestInitChain(params),
117 types.ToResponseInitChain(),
123 func (app *localClient) BeginBlockAsync(params types.RequestBeginBlock) *ReqRes {
125 app.Application.BeginBlock(params)
128 types.ToRequestBeginBlock(params),
129 types.ToResponseBeginBlock(),
133 func (app *localClient) EndBlockAsync(height uint64) *ReqRes {
135 resEndBlock := app.Application.EndBlock(height)
138 types.ToRequestEndBlock(height),
139 types.ToResponseEndBlock(resEndBlock),
143 //-------------------------------------------------------
145 func (app *localClient) FlushSync() error {
149 func (app *localClient) EchoSync(msg string) (res types.Result) {
150 return types.OK.SetData([]byte(msg))
153 func (app *localClient) InfoSync(req types.RequestInfo) (resInfo types.ResponseInfo, err error) {
155 defer app.mtx.Unlock()
156 resInfo = app.Application.Info(req)
160 func (app *localClient) SetOptionSync(key string, value string) (res types.Result) {
162 log := app.Application.SetOption(key, value)
164 return types.OK.SetLog(log)
167 func (app *localClient) DeliverTxSync(tx []byte) (res types.Result) {
169 res = app.Application.DeliverTx(tx)
174 func (app *localClient) CheckTxSync(tx []byte) (res types.Result) {
176 res = app.Application.CheckTx(tx)
181 func (app *localClient) QuerySync(reqQuery types.RequestQuery) (resQuery types.ResponseQuery, err error) {
183 resQuery = app.Application.Query(reqQuery)
188 func (app *localClient) CommitSync() (res types.Result) {
190 res = app.Application.Commit()
195 func (app *localClient) InitChainSync(params types.RequestInitChain) (err error) {
197 app.Application.InitChain(params)
202 func (app *localClient) BeginBlockSync(params types.RequestBeginBlock) (err error) {
204 app.Application.BeginBlock(params)
209 func (app *localClient) EndBlockSync(height uint64) (resEndBlock types.ResponseEndBlock, err error) {
211 resEndBlock = app.Application.EndBlock(height)
213 return resEndBlock, nil
216 //-------------------------------------------------------
218 func (app *localClient) callback(req *types.Request, res *types.Response) *ReqRes {
219 app.Callback(req, res)
220 return newLocalReqRes(req, res)
223 func newLocalReqRes(req *types.Request, res *types.Response) *ReqRes {
224 reqRes := NewReqRes(req)
225 reqRes.Response = res