mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-20 00:21:21 +00:00
Make order be decided first; Remove TMSP Commit/Rollback
This commit is contained in:
128
proxy/local_app_conn.go
Normal file
128
proxy/local_app_conn.go
Normal file
@ -0,0 +1,128 @@
|
||||
package proxy
|
||||
|
||||
import (
|
||||
tmsp "github.com/tendermint/tmsp/types"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type localAppConn struct {
|
||||
mtx *sync.Mutex
|
||||
tmsp.Application
|
||||
Callback
|
||||
}
|
||||
|
||||
func NewLocalAppConn(mtx *sync.Mutex, app tmsp.Application) *localAppConn {
|
||||
return &localAppConn{
|
||||
mtx: mtx,
|
||||
Application: app,
|
||||
}
|
||||
}
|
||||
|
||||
func (app *localAppConn) SetResponseCallback(cb Callback) {
|
||||
app.mtx.Lock()
|
||||
defer app.mtx.Unlock()
|
||||
app.Callback = cb
|
||||
}
|
||||
|
||||
// TODO: change tmsp.Application to include Error()?
|
||||
func (app *localAppConn) Error() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (app *localAppConn) EchoAsync(msg string) {
|
||||
app.mtx.Lock()
|
||||
msg2 := app.Application.Echo(msg)
|
||||
app.mtx.Unlock()
|
||||
app.Callback(
|
||||
tmsp.RequestEcho{msg},
|
||||
tmsp.ResponseEcho{msg2},
|
||||
)
|
||||
}
|
||||
|
||||
func (app *localAppConn) FlushAsync() {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
func (app *localAppConn) SetOptionAsync(key string, value string) {
|
||||
app.mtx.Lock()
|
||||
retCode := app.Application.SetOption(key, value)
|
||||
app.mtx.Unlock()
|
||||
app.Callback(
|
||||
tmsp.RequestSetOption{key, value},
|
||||
tmsp.ResponseSetOption{retCode},
|
||||
)
|
||||
}
|
||||
|
||||
func (app *localAppConn) AppendTxAsync(tx []byte) {
|
||||
app.mtx.Lock()
|
||||
events, retCode := app.Application.AppendTx(tx)
|
||||
app.mtx.Unlock()
|
||||
app.Callback(
|
||||
tmsp.RequestAppendTx{tx},
|
||||
tmsp.ResponseAppendTx{retCode},
|
||||
)
|
||||
for _, event := range events {
|
||||
app.Callback(
|
||||
nil,
|
||||
tmsp.ResponseEvent{event},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
func (app *localAppConn) CheckTxAsync(tx []byte) {
|
||||
app.mtx.Lock()
|
||||
retCode := app.Application.CheckTx(tx)
|
||||
app.mtx.Unlock()
|
||||
app.Callback(
|
||||
tmsp.RequestCheckTx{tx},
|
||||
tmsp.ResponseCheckTx{retCode},
|
||||
)
|
||||
}
|
||||
|
||||
func (app *localAppConn) GetHashAsync() {
|
||||
app.mtx.Lock()
|
||||
hash, retCode := app.Application.GetHash()
|
||||
app.mtx.Unlock()
|
||||
app.Callback(
|
||||
tmsp.RequestGetHash{},
|
||||
tmsp.ResponseGetHash{retCode, hash},
|
||||
)
|
||||
}
|
||||
|
||||
func (app *localAppConn) AddListenerAsync(key string) {
|
||||
app.mtx.Lock()
|
||||
retCode := app.Application.AddListener(key)
|
||||
app.mtx.Unlock()
|
||||
app.Callback(
|
||||
tmsp.RequestAddListener{key},
|
||||
tmsp.ResponseAddListener{retCode},
|
||||
)
|
||||
}
|
||||
|
||||
func (app *localAppConn) RemListenerAsync(key string) {
|
||||
app.mtx.Lock()
|
||||
retCode := app.Application.RemListener(key)
|
||||
app.mtx.Unlock()
|
||||
app.Callback(
|
||||
tmsp.RequestRemListener{key},
|
||||
tmsp.ResponseRemListener{retCode},
|
||||
)
|
||||
}
|
||||
|
||||
func (app *localAppConn) InfoSync() (info []string, err error) {
|
||||
app.mtx.Lock()
|
||||
info = app.Application.Info()
|
||||
app.mtx.Unlock()
|
||||
return info, nil
|
||||
}
|
||||
|
||||
func (app *localAppConn) FlushSync() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (app *localAppConn) GetHashSync() (hash []byte, err error) {
|
||||
app.mtx.Lock()
|
||||
hash, retCode := app.Application.GetHash()
|
||||
app.mtx.Unlock()
|
||||
return hash, retCode.Error()
|
||||
}
|
Reference in New Issue
Block a user