From e40c4834a8ac6caa438a14f413d412b72222e942 Mon Sep 17 00:00:00 2001 From: Jae Kwon Date: Fri, 27 Nov 2015 10:14:46 -0800 Subject: [PATCH] Replace SetEventsMode with SetOption --- README.md | 20 ++++----- example/main.go | 8 ++-- server/server.go | 6 +-- types/application.go | 6 +-- types/events.go | 7 --- types/messages.go | 105 ++++++++++++++++++++++--------------------- 6 files changed, 74 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index b1790e03..5000b819 100644 --- a/README.md +++ b/README.md @@ -34,16 +34,6 @@ TMSP is an asynchronous streaming protocol: message responses are written back a * __Usage__:
Roll back to the last commit -#### SetEventsMode - * __Arguments__: - * `EventsMode (int8)`: - * `EventsModeOff (0)`: Events are not reported. Used for mempool. - * `EventsModeOn (1)`: Report events that are listened on. - * __Returns__: - * `RetCode (int8)` - * __Usage__:
- Set event reporting mode for future transactions - #### AddListener * __Arguments__: * `EventKey (string)` @@ -70,3 +60,13 @@ TMSP is an asynchronous streaming protocol: message responses are written back a * __Usage__:
Return an array of strings about the application state. Application specific. +#### SetOption + * __Arguments__: + * `Key (string)` + * `Value (string)` + * __Returns__: + * `RetCode (int8)` + * __Usage__:
+ Set application options. E.g. Key="mode", Value="mempool" for a mempool connection, or Key="mode", Value="consensus" for a consensus connection. + Other options are application specific. + diff --git a/example/main.go b/example/main.go index dabb486e..828ccb1a 100644 --- a/example/main.go +++ b/example/main.go @@ -51,6 +51,10 @@ func (dapp *DummyApplication) Info() []string { return []string{Fmt("size:%v", dapp.state.Size())} } +func (dapp *DummyApplication) SetOption(key string, value string) types.RetCode { + return 0 +} + func (dapp *DummyApplication) AppendTx(tx []byte) ([]types.Event, types.RetCode) { dapp.state.Set(tx, tx) return nil, 0 @@ -71,10 +75,6 @@ func (dapp *DummyApplication) Rollback() types.RetCode { return 0 } -func (dapp *DummyApplication) SetEventsMode(mode types.EventsMode) types.RetCode { - return 0 -} - func (dapp *DummyApplication) AddListener(key string) types.RetCode { return 0 } diff --git a/server/server.go b/server/server.go index 27faa1d3..f7e18738 100644 --- a/server/server.go +++ b/server/server.go @@ -77,6 +77,9 @@ func handleRequest(app types.Application, req types.Request, responses chan<- ty case types.RequestInfo: data := app.Info() responses <- types.ResponseInfo{data} + case types.RequestSetOption: + retCode := app.SetOption(req.Key, req.Value) + responses <- types.ResponseSetOption{retCode} case types.RequestAppendTx: events, retCode := app.AppendTx(req.TxBytes) responses <- types.ResponseAppendTx{retCode} @@ -92,9 +95,6 @@ func handleRequest(app types.Application, req types.Request, responses chan<- ty case types.RequestRollback: retCode := app.Rollback() responses <- types.ResponseRollback{retCode} - case types.RequestSetEventsMode: - retCode := app.SetEventsMode(req.EventsMode) - responses <- types.ResponseSetEventsMode{retCode} case types.RequestAddListener: retCode := app.AddListener(req.EventKey) responses <- types.ResponseAddListener{retCode} diff --git a/types/application.go b/types/application.go index 2b4e942f..d3a46cb7 100644 --- a/types/application.go +++ b/types/application.go @@ -8,6 +8,9 @@ type Application interface { // Return application info Info() []string + // Set application option (e.g. mode=mempool, mode=consensus) + SetOption(key string, value string) RetCode + // Append a tx, which may or may not get committed AppendTx(tx []byte) ([]Event, RetCode) @@ -20,9 +23,6 @@ type Application interface { // Rollback to the latest commit Rollback() RetCode - // Set events reporting mode - SetEventsMode(mode EventsMode) RetCode - // Add event listener AddListener(key string) RetCode diff --git a/types/events.go b/types/events.go index 37f51a44..d1ba5f1f 100644 --- a/types/events.go +++ b/types/events.go @@ -1,12 +1,5 @@ package types -type EventsMode int8 - -const ( - EventsModeOff = EventsMode(0) - EventsModeOn = EventsMode(1) -) - type Event struct { Key string Data []byte diff --git a/types/messages.go b/types/messages.go index 5ef3944f..634c89b3 100644 --- a/types/messages.go +++ b/types/messages.go @@ -3,32 +3,34 @@ package types import "github.com/tendermint/go-wire" const ( - requestTypeEcho = byte(0x01) - requestTypeFlush = byte(0x02) - requestTypeInfo = byte(0x03) + requestTypeEcho = byte(0x01) + requestTypeFlush = byte(0x02) + requestTypeInfo = byte(0x03) + requestTypeSetOption = byte(0x04) + // reserved for GetOption = byte(0x05) responseTypeException = byte(0x10) responseTypeEcho = byte(0x11) responseTypeFlush = byte(0x12) responseTypeInfo = byte(0x13) + responseTypeSetOption = byte(0x14) + // reserved for GetOption = byte(0x15) - requestTypeAppendTx = byte(0x21) - requestTypeGetHash = byte(0x22) - requestTypeCommit = byte(0x23) - requestTypeRollback = byte(0x24) - requestTypeSetEventsMode = byte(0x25) - requestTypeAddListener = byte(0x26) - requestTypeRemListener = byte(0x27) - // reserved for responseTypeEvent 0x28 + requestTypeAppendTx = byte(0x21) + requestTypeGetHash = byte(0x22) + requestTypeCommit = byte(0x23) + requestTypeRollback = byte(0x24) + requestTypeAddListener = byte(0x25) + requestTypeRemListener = byte(0x26) + // reserved for responseTypeEvent 0x27 - responseTypeAppendTx = byte(0x31) - responseTypeGetHash = byte(0x32) - responseTypeCommit = byte(0x33) - responseTypeRollback = byte(0x34) - responseTypeSetEventsMode = byte(0x35) - responseTypeAddListener = byte(0x36) - responseTypeRemListener = byte(0x37) - responseTypeEvent = byte(0x38) + responseTypeAppendTx = byte(0x31) + responseTypeGetHash = byte(0x32) + responseTypeCommit = byte(0x33) + responseTypeRollback = byte(0x34) + responseTypeAddListener = byte(0x35) + responseTypeRemListener = byte(0x36) + responseTypeEvent = byte(0x37) ) //---------------------------------------- @@ -43,6 +45,11 @@ type RequestFlush struct { type RequestInfo struct { } +type RequestSetOption struct { + Key string + Value string +} + type RequestAppendTx struct { TxBytes []byte } @@ -56,10 +63,6 @@ type RequestCommit struct { type RequestRollback struct { } -type RequestSetEventsMode struct { - EventsMode -} - type RequestAddListener struct { EventKey string } @@ -72,27 +75,27 @@ type Request interface { AssertRequestType() } -func (_ RequestEcho) AssertRequestType() {} -func (_ RequestFlush) AssertRequestType() {} -func (_ RequestInfo) AssertRequestType() {} -func (_ RequestAppendTx) AssertRequestType() {} -func (_ RequestGetHash) AssertRequestType() {} -func (_ RequestCommit) AssertRequestType() {} -func (_ RequestRollback) AssertRequestType() {} -func (_ RequestSetEventsMode) AssertRequestType() {} -func (_ RequestAddListener) AssertRequestType() {} -func (_ RequestRemListener) AssertRequestType() {} +func (_ RequestEcho) AssertRequestType() {} +func (_ RequestFlush) AssertRequestType() {} +func (_ RequestInfo) AssertRequestType() {} +func (_ RequestSetOption) AssertRequestType() {} +func (_ RequestAppendTx) AssertRequestType() {} +func (_ RequestGetHash) AssertRequestType() {} +func (_ RequestCommit) AssertRequestType() {} +func (_ RequestRollback) AssertRequestType() {} +func (_ RequestAddListener) AssertRequestType() {} +func (_ RequestRemListener) AssertRequestType() {} var _ = wire.RegisterInterface( struct{ Request }{}, wire.ConcreteType{RequestEcho{}, requestTypeEcho}, wire.ConcreteType{RequestFlush{}, requestTypeFlush}, wire.ConcreteType{RequestInfo{}, requestTypeInfo}, + wire.ConcreteType{RequestSetOption{}, requestTypeSetOption}, wire.ConcreteType{RequestAppendTx{}, requestTypeAppendTx}, wire.ConcreteType{RequestGetHash{}, requestTypeGetHash}, wire.ConcreteType{RequestCommit{}, requestTypeCommit}, wire.ConcreteType{RequestRollback{}, requestTypeRollback}, - wire.ConcreteType{RequestSetEventsMode{}, requestTypeSetEventsMode}, wire.ConcreteType{RequestAddListener{}, requestTypeAddListener}, wire.ConcreteType{RequestRemListener{}, requestTypeRemListener}, ) @@ -110,6 +113,10 @@ type ResponseInfo struct { Data []string } +type ResponseSetOption struct { + RetCode +} + type ResponseAppendTx struct { RetCode } @@ -127,10 +134,6 @@ type ResponseRollback struct { RetCode } -type ResponseSetEventsMode struct { - RetCode -} - type ResponseAddListener struct { RetCode } @@ -151,29 +154,29 @@ type Response interface { AssertResponseType() } -func (_ ResponseEcho) AssertResponseType() {} -func (_ ResponseFlush) AssertResponseType() {} -func (_ ResponseInfo) AssertResponseType() {} -func (_ ResponseAppendTx) AssertResponseType() {} -func (_ ResponseGetHash) AssertResponseType() {} -func (_ ResponseCommit) AssertResponseType() {} -func (_ ResponseRollback) AssertResponseType() {} -func (_ ResponseSetEventsMode) AssertResponseType() {} -func (_ ResponseAddListener) AssertResponseType() {} -func (_ ResponseRemListener) AssertResponseType() {} -func (_ ResponseException) AssertResponseType() {} -func (_ ResponseEvent) AssertResponseType() {} +func (_ ResponseEcho) AssertResponseType() {} +func (_ ResponseFlush) AssertResponseType() {} +func (_ ResponseInfo) AssertResponseType() {} +func (_ ResponseSetOption) AssertResponseType() {} +func (_ ResponseAppendTx) AssertResponseType() {} +func (_ ResponseGetHash) AssertResponseType() {} +func (_ ResponseCommit) AssertResponseType() {} +func (_ ResponseRollback) AssertResponseType() {} +func (_ ResponseAddListener) AssertResponseType() {} +func (_ ResponseRemListener) AssertResponseType() {} +func (_ ResponseException) AssertResponseType() {} +func (_ ResponseEvent) AssertResponseType() {} var _ = wire.RegisterInterface( struct{ Response }{}, wire.ConcreteType{ResponseEcho{}, responseTypeEcho}, wire.ConcreteType{ResponseFlush{}, responseTypeFlush}, wire.ConcreteType{ResponseInfo{}, responseTypeInfo}, + wire.ConcreteType{ResponseSetOption{}, responseTypeSetOption}, wire.ConcreteType{ResponseAppendTx{}, responseTypeAppendTx}, wire.ConcreteType{ResponseGetHash{}, responseTypeGetHash}, wire.ConcreteType{ResponseCommit{}, responseTypeCommit}, wire.ConcreteType{ResponseRollback{}, responseTypeRollback}, - wire.ConcreteType{ResponseSetEventsMode{}, responseTypeSetEventsMode}, wire.ConcreteType{ResponseAddListener{}, responseTypeAddListener}, wire.ConcreteType{ResponseRemListener{}, responseTypeRemListener}, wire.ConcreteType{ResponseException{}, responseTypeException},