package proxy import ( tmsp "github.com/tendermint/tmsp/types" ) type localAppContext struct { tmsp.AppContext Callback } func NewLocalAppContext(app tmsp.AppContext) *localAppContext { return &localAppContext{ AppContext: app, } } func (app *localAppContext) SetResponseCallback(cb Callback) { app.Callback = cb } // TODO: change tmsp.AppContext to include Error()? func (app *localAppContext) Error() error { return nil } func (app *localAppContext) EchoAsync(msg string) { msg2 := app.AppContext.Echo(msg) app.Callback( tmsp.RequestEcho{msg}, tmsp.ResponseEcho{msg2}, ) } func (app *localAppContext) FlushAsync() { // Do nothing } func (app *localAppContext) SetOptionAsync(key string, value string) { retCode := app.AppContext.SetOption(key, value) app.Callback( tmsp.RequestSetOption{key, value}, tmsp.ResponseSetOption{retCode}, ) } func (app *localAppContext) AppendTxAsync(tx []byte) { events, retCode := app.AppContext.AppendTx(tx) app.Callback( tmsp.RequestAppendTx{tx}, tmsp.ResponseAppendTx{retCode}, ) for _, event := range events { app.Callback( nil, tmsp.ResponseEvent{event}, ) } } func (app *localAppContext) GetHashAsync() { hash, retCode := app.AppContext.GetHash() app.Callback( tmsp.RequestGetHash{}, tmsp.ResponseGetHash{retCode, hash}, ) } func (app *localAppContext) CommitAsync() { retCode := app.AppContext.Commit() app.Callback( tmsp.RequestCommit{}, tmsp.ResponseCommit{retCode}, ) } func (app *localAppContext) RollbackAsync() { retCode := app.AppContext.Rollback() app.Callback( tmsp.RequestRollback{}, tmsp.ResponseRollback{retCode}, ) } func (app *localAppContext) AddListenerAsync(key string) { retCode := app.AppContext.AddListener(key) app.Callback( tmsp.RequestAddListener{key}, tmsp.ResponseAddListener{retCode}, ) } func (app *localAppContext) RemListenerAsync(key string) { retCode := app.AppContext.RemListener(key) app.Callback( tmsp.RequestRemListener{key}, tmsp.ResponseRemListener{retCode}, ) } func (app *localAppContext) InfoSync() (info []string, err error) { info = app.AppContext.Info() return info, nil } func (app *localAppContext) FlushSync() error { return nil } func (app *localAppContext) GetHashSync() (hash []byte, err error) { hash, retCode := app.AppContext.GetHash() return hash, retCode.Error() } func (app *localAppContext) CommitSync() (err error) { retCode := app.AppContext.Commit() return retCode.Error() } func (app *localAppContext) RollbackSync() (err error) { retCode := app.AppContext.Rollback() return retCode.Error() }