Use protobuf enums for RetCode. s/RetCode/CodeType/g

This commit is contained in:
Jae Kwon 2016-01-31 20:39:43 -08:00
parent 012abc437b
commit 69e587f57f
10 changed files with 110 additions and 90 deletions

View File

@ -219,24 +219,24 @@ func (cli *TMSPClient) FlushSync() error {
return cli.err
}
func (cli *TMSPClient) AppendTxSync(tx []byte) (code types.RetCode, result []byte, log string, err error) {
func (cli *TMSPClient) AppendTxSync(tx []byte) (code types.CodeType, result []byte, log string, err error) {
reqres := cli.queueRequest(types.RequestAppendTx(tx))
cli.FlushSync()
if cli.err != nil {
return types.RetCodeInternalError, nil, "", cli.err
return types.CodeType_InternalError, nil, "", cli.err
}
res := reqres.Response
return types.RetCode(res.Code), res.Data, res.Log, nil
return res.Code, res.Data, res.Log, nil
}
func (cli *TMSPClient) CheckTxSync(tx []byte) (code types.RetCode, result []byte, log string, err error) {
func (cli *TMSPClient) CheckTxSync(tx []byte) (code types.CodeType, result []byte, log string, err error) {
reqres := cli.queueRequest(types.RequestCheckTx(tx))
cli.FlushSync()
if cli.err != nil {
return types.RetCodeInternalError, nil, "", cli.err
return types.CodeType_InternalError, nil, "", cli.err
}
res := reqres.Response
return types.RetCode(res.Code), res.Data, res.Log, nil
return res.Code, res.Data, res.Log, nil
}
func (cli *TMSPClient) GetHashSync() (hash []byte, log string, err error) {
@ -249,14 +249,14 @@ func (cli *TMSPClient) GetHashSync() (hash []byte, log string, err error) {
return res.Data, res.Log, nil
}
func (cli *TMSPClient) QuerySync(query []byte) (code types.RetCode, result []byte, log string, err error) {
func (cli *TMSPClient) QuerySync(query []byte) (code types.CodeType, result []byte, log string, err error) {
reqres := cli.queueRequest(types.RequestQuery(query))
cli.FlushSync()
if cli.err != nil {
return types.RetCodeInternalError, nil, "", cli.err
return types.CodeType_InternalError, nil, "", cli.err
}
res := reqres.Response
return types.RetCode(res.Code), res.Data, res.Log, nil
return res.Code, res.Data, res.Log, nil
}
//----------------------------------------

View File

@ -29,29 +29,29 @@ func (app *CounterApplication) SetOption(key string, value string) (log string)
return ""
}
func (app *CounterApplication) AppendTx(tx []byte) (code types.RetCode, result []byte, log string) {
func (app *CounterApplication) AppendTx(tx []byte) (code types.CodeType, result []byte, log string) {
if app.serial {
tx8 := make([]byte, 8)
copy(tx8[len(tx8)-len(tx):], tx)
txValue := binary.BigEndian.Uint64(tx8)
if txValue != uint64(app.txCount) {
return types.RetCodeBadNonce, nil, fmt.Sprintf("Invalid nonce. Expected %v, got %v", app.txCount, txValue)
return types.CodeType_BadNonce, nil, fmt.Sprintf("Invalid nonce. Expected %v, got %v", app.txCount, txValue)
}
}
app.txCount += 1
return types.RetCodeOK, nil, ""
return types.CodeType_OK, nil, ""
}
func (app *CounterApplication) CheckTx(tx []byte) (code types.RetCode, result []byte, log string) {
func (app *CounterApplication) CheckTx(tx []byte) (code types.CodeType, result []byte, log string) {
if app.serial {
tx8 := make([]byte, 8)
copy(tx8[len(tx8)-len(tx):], tx)
txValue := binary.BigEndian.Uint64(tx8)
if txValue < uint64(app.txCount) {
return types.RetCodeBadNonce, nil, fmt.Sprintf("Invalid nonce. Expected >= %v, got %v", app.txCount, txValue)
return types.CodeType_BadNonce, nil, fmt.Sprintf("Invalid nonce. Expected >= %v, got %v", app.txCount, txValue)
}
}
return types.RetCodeOK, nil, ""
return types.CodeType_OK, nil, ""
}
func (app *CounterApplication) GetHash() (hash []byte, log string) {
@ -66,6 +66,6 @@ func (app *CounterApplication) GetHash() (hash []byte, log string) {
}
}
func (app *CounterApplication) Query(query []byte) (code types.RetCode, result []byte, log string) {
return types.RetCodeOK, nil, fmt.Sprintf("Query is not supported")
func (app *CounterApplication) Query(query []byte) (code types.CodeType, result []byte, log string) {
return types.CodeType_OK, nil, fmt.Sprintf("Query is not supported")
}

View File

@ -26,13 +26,13 @@ func (app *DummyApplication) SetOption(key string, value string) (log string) {
return ""
}
func (app *DummyApplication) AppendTx(tx []byte) (code types.RetCode, result []byte, log string) {
func (app *DummyApplication) AppendTx(tx []byte) (code types.CodeType, result []byte, log string) {
app.state.Set(tx, tx)
return types.RetCodeOK, nil, ""
return types.CodeType_OK, nil, ""
}
func (app *DummyApplication) CheckTx(tx []byte) (code types.RetCode, result []byte, log string) {
return types.RetCodeOK, nil, ""
func (app *DummyApplication) CheckTx(tx []byte) (code types.CodeType, result []byte, log string) {
return types.CodeType_OK, nil, ""
}
func (app *DummyApplication) GetHash() (hash []byte, log string) {
@ -40,6 +40,6 @@ func (app *DummyApplication) GetHash() (hash []byte, log string) {
return hash, ""
}
func (app *DummyApplication) Query(query []byte) (code types.RetCode, result []byte, log string) {
return types.RetCodeOK, nil, "Query not supported"
func (app *DummyApplication) Query(query []byte) (code types.CodeType, result []byte, log string) {
return types.CodeType_OK, nil, "Query not supported"
}

View File

@ -41,7 +41,7 @@ func TestStream(t *testing.T) {
switch res.Type {
case types.MessageType_AppendTx:
counter += 1
if types.RetCode(res.Code) != types.RetCodeOK {
if res.Code != types.CodeType_OK {
t.Error("AppendTx failed with ret_code", res.Code)
}
if counter > numAppendTxs {

View File

@ -9,14 +9,14 @@ type Application interface {
SetOption(key string, value string) (log string)
// Append a tx
AppendTx(tx []byte) (code RetCode, result []byte, log string)
AppendTx(tx []byte) (code CodeType, result []byte, log string)
// Validate a tx for the mempool
CheckTx(tx []byte) (code RetCode, result []byte, log string)
CheckTx(tx []byte) (code CodeType, result []byte, log string)
// Return the application Merkle root hash
GetHash() (hash []byte, log string)
// Query for state
Query(query []byte) (code RetCode, result []byte, log string)
Query(query []byte) (code CodeType, result []byte, log string)
}

View File

@ -97,19 +97,19 @@ func ResponseSetOption(log string) *Response {
}
}
func ResponseAppendTx(code RetCode, result []byte, log string) *Response {
func ResponseAppendTx(code CodeType, result []byte, log string) *Response {
return &Response{
Type: MessageType_AppendTx,
Code: uint32(code),
Code: code,
Data: result,
Log: log,
}
}
func ResponseCheckTx(code RetCode, result []byte, log string) *Response {
func ResponseCheckTx(code CodeType, result []byte, log string) *Response {
return &Response{
Type: MessageType_CheckTx,
Code: uint32(code),
Code: code,
Data: result,
Log: log,
}
@ -123,10 +123,10 @@ func ResponseGetHash(hash []byte, log string) *Response {
}
}
func ResponseQuery(code RetCode, result []byte, log string) *Response {
func ResponseQuery(code CodeType, result []byte, log string) *Response {
return &Response{
Type: MessageType_Query,
Code: uint32(code),
Code: code,
Data: result,
Log: log,
}

View File

@ -1,20 +0,0 @@
package types
type RetCode uint
// Reserved return codes
const (
RetCodeOK RetCode = 0
RetCodeInternalError RetCode = 1
RetCodeUnauthorized RetCode = 2
RetCodeInsufficientFees RetCode = 3
RetCodeUnknownRequest RetCode = 4
RetCodeEncodingError RetCode = 5
RetCodeBadNonce RetCode = 6
)
//go:generate stringer -type=RetCode
// NOTE: The previous comment generates r.String().
// To run it, `go get golang.org/x/tools/cmd/stringer`
// and `go generate` in tmsp/types

View File

@ -1,16 +0,0 @@
// generated by stringer -type=RetCode; DO NOT EDIT
package types
import "fmt"
const _RetCode_name = "RetCodeOKRetCodeInternalErrorRetCodeUnauthorizedRetCodeInsufficientFeesRetCodeUnknownRequestRetCodeEncodingErrorRetCodeBadNonce"
var _RetCode_index = [...]uint8{0, 9, 29, 48, 71, 92, 112, 127}
func (i RetCode) String() string {
if i < 0 || i >= RetCode(len(_RetCode_index)-1) {
return fmt.Sprintf("RetCode(%d)", i)
}
return _RetCode_name[_RetCode_index[i]:_RetCode_index[i+1]]
}

View File

@ -68,6 +68,42 @@ func (x MessageType) String() string {
}
func (MessageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
type CodeType int32
const (
CodeType_OK CodeType = 0
CodeType_InternalError CodeType = 1
CodeType_Unauthorized CodeType = 2
CodeType_InsufficientFees CodeType = 3
CodeType_UnknownRequest CodeType = 4
CodeType_EncodingError CodeType = 5
CodeType_BadNonce CodeType = 6
)
var CodeType_name = map[int32]string{
0: "OK",
1: "InternalError",
2: "Unauthorized",
3: "InsufficientFees",
4: "UnknownRequest",
5: "EncodingError",
6: "BadNonce",
}
var CodeType_value = map[string]int32{
"OK": 0,
"InternalError": 1,
"Unauthorized": 2,
"InsufficientFees": 3,
"UnknownRequest": 4,
"EncodingError": 5,
"BadNonce": 6,
}
func (x CodeType) String() string {
return proto.EnumName(CodeType_name, int32(x))
}
func (CodeType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
type Request struct {
Type MessageType `protobuf:"varint,1,opt,name=type,enum=types.MessageType" json:"type,omitempty"`
Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
@ -83,7 +119,7 @@ func (*Request) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0}
type Response struct {
Type MessageType `protobuf:"varint,1,opt,name=type,enum=types.MessageType" json:"type,omitempty"`
Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
Code uint32 `protobuf:"varint,3,opt,name=code" json:"code,omitempty"`
Code CodeType `protobuf:"varint,3,opt,name=code,enum=types.CodeType" json:"code,omitempty"`
Error string `protobuf:"bytes,4,opt,name=error" json:"error,omitempty"`
Log string `protobuf:"bytes,5,opt,name=log" json:"log,omitempty"`
}
@ -97,26 +133,33 @@ func init() {
proto.RegisterType((*Request)(nil), "types.Request")
proto.RegisterType((*Response)(nil), "types.Response")
proto.RegisterEnum("types.MessageType", MessageType_name, MessageType_value)
proto.RegisterEnum("types.CodeType", CodeType_name, CodeType_value)
}
var fileDescriptor0 = []byte{
// 284 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x91, 0x4d, 0x4e, 0xc3, 0x30,
0x10, 0x85, 0x49, 0x9b, 0xd0, 0x64, 0xd2, 0x82, 0x3b, 0x74, 0x91, 0x25, 0xea, 0x02, 0x21, 0x16,
0x45, 0x82, 0x13, 0x20, 0x54, 0x7e, 0x16, 0x80, 0x30, 0xbd, 0x40, 0x48, 0x86, 0x06, 0x35, 0xc4,
0x26, 0xb6, 0x51, 0xb3, 0xe5, 0x00, 0x9c, 0x19, 0xdb, 0x01, 0x89, 0x3d, 0x9b, 0xe8, 0x7d, 0x5f,
0x46, 0xf3, 0x46, 0x32, 0x4c, 0x75, 0x27, 0x49, 0x9d, 0xfa, 0xef, 0x42, 0xb6, 0x42, 0x0b, 0x8c,
0x3c, 0xcc, 0xdf, 0x60, 0xc4, 0xe9, 0xdd, 0x90, 0xd2, 0x78, 0x04, 0xa1, 0x73, 0x59, 0x70, 0x18,
0x1c, 0xef, 0x9d, 0xe1, 0xa2, 0x9f, 0xbe, 0x23, 0xa5, 0xf2, 0x35, 0xad, 0x2c, 0x70, 0xff, 0x1f,
0x11, 0xc2, 0x32, 0xd7, 0x79, 0x36, 0xb0, 0x73, 0x63, 0xee, 0x33, 0x32, 0x18, 0x6e, 0xa8, 0xcb,
0x86, 0x56, 0x25, 0xdc, 0x45, 0x9c, 0x41, 0xf4, 0x91, 0xd7, 0x86, 0xb2, 0xd0, 0xbb, 0x1e, 0xe6,
0x9f, 0x01, 0xc4, 0x9c, 0x94, 0x14, 0x8d, 0xa2, 0x7f, 0x15, 0x5a, 0x57, 0x88, 0x92, 0x7c, 0xe3,
0x84, 0xfb, 0xec, 0x2a, 0xa9, 0x6d, 0x45, 0xfb, 0x5b, 0xe9, 0xc1, 0x9d, 0x56, 0x8b, 0x75, 0x16,
0xf5, 0xa7, 0xd9, 0x78, 0xf2, 0x15, 0x40, 0xfa, 0xa7, 0x05, 0xf7, 0x21, 0xbd, 0x37, 0x75, 0xfd,
0xa3, 0xd8, 0x0e, 0xc6, 0x10, 0x2e, 0x8b, 0x4a, 0xb0, 0x00, 0x13, 0x88, 0xae, 0x6a, 0xa3, 0x2a,
0x36, 0x70, 0xf2, 0xb6, 0x79, 0x11, 0x6c, 0x88, 0x13, 0x48, 0x9e, 0x48, 0x3f, 0x48, 0xfd, 0x2a,
0x1a, 0x16, 0x3a, 0x5c, 0x6e, 0x0b, 0xea, 0x31, 0xc2, 0x31, 0xc4, 0x17, 0x52, 0x52, 0x53, 0xae,
0xb6, 0x6c, 0x8a, 0x29, 0x8c, 0x2e, 0x2b, 0x2a, 0x36, 0x16, 0xd0, 0xc1, 0x35, 0xe9, 0x9b, 0xdc,
0xee, 0x3b, 0x70, 0xab, 0x1f, 0x0d, 0xb5, 0x1d, 0x9b, 0x3d, 0xef, 0xfa, 0x27, 0x39, 0xff, 0x0e,
0x00, 0x00, 0xff, 0xff, 0x14, 0xe1, 0x50, 0x1f, 0xa7, 0x01, 0x00, 0x00,
// 382 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x92, 0xdf, 0x0e, 0xd2, 0x30,
0x14, 0xc6, 0x1d, 0x6c, 0xfc, 0x39, 0xfc, 0x2b, 0x47, 0x2e, 0x76, 0x69, 0x30, 0x31, 0x86, 0x0b,
0x4c, 0xf0, 0x09, 0x94, 0x0c, 0x25, 0x46, 0x88, 0x13, 0x1e, 0xa0, 0x6e, 0x07, 0xb6, 0x30, 0xdb,
0xb9, 0x76, 0x0a, 0x5e, 0xfa, 0x00, 0xde, 0xf8, 0xc2, 0xb6, 0x1d, 0x24, 0xde, 0x7b, 0xb3, 0x9c,
0xef, 0x6b, 0xfb, 0x9d, 0x5f, 0xcf, 0x0a, 0x53, 0x7d, 0x2b, 0x49, 0xbd, 0x72, 0xdf, 0x65, 0x59,
0x49, 0x2d, 0x31, 0x70, 0x62, 0xfe, 0x15, 0xba, 0x31, 0x7d, 0xab, 0x49, 0x69, 0x7c, 0x01, 0xbe,
0xf5, 0x42, 0xef, 0x99, 0xf7, 0x72, 0xbc, 0xc2, 0x65, 0xb3, 0xfb, 0x23, 0x29, 0xc5, 0xcf, 0x74,
0x30, 0x22, 0x76, 0xeb, 0x88, 0xe0, 0xa7, 0x5c, 0xf3, 0xb0, 0x65, 0xf6, 0x0d, 0x63, 0x57, 0x23,
0x83, 0xf6, 0x85, 0x6e, 0x61, 0xdb, 0x58, 0xfd, 0xd8, 0x96, 0x38, 0x83, 0xe0, 0x3b, 0x2f, 0x6a,
0x0a, 0x7d, 0xe7, 0x35, 0x62, 0xfe, 0xc7, 0x83, 0x5e, 0x4c, 0xaa, 0x94, 0x42, 0xd1, 0x7f, 0x35,
0x7c, 0x0e, 0x7e, 0x22, 0x53, 0x72, 0x1d, 0xc7, 0xab, 0xc9, 0xfd, 0xec, 0xda, 0x58, 0xcd, 0x41,
0xbb, 0x68, 0x19, 0xa8, 0xaa, 0x64, 0xf5, 0x60, 0x70, 0xc2, 0xb2, 0x16, 0xf2, 0x1c, 0x06, 0x0d,
0xab, 0x29, 0x17, 0xbf, 0x3d, 0x18, 0xfc, 0xd3, 0x16, 0x27, 0x30, 0xd8, 0xd5, 0x45, 0x71, 0xb7,
0xd8, 0x13, 0xec, 0x81, 0x1f, 0x25, 0x99, 0x64, 0x1e, 0xf6, 0x21, 0xd8, 0x14, 0xb5, 0xca, 0x58,
0xcb, 0x9a, 0x5b, 0x71, 0x92, 0xac, 0x8d, 0x23, 0xe8, 0x7f, 0x26, 0xbd, 0x2f, 0x75, 0x2e, 0x05,
0xf3, 0xad, 0x8c, 0xae, 0x09, 0x35, 0x32, 0xc0, 0x21, 0xf4, 0xde, 0x94, 0x25, 0x89, 0xf4, 0x70,
0x65, 0x53, 0x1c, 0x40, 0x77, 0x9d, 0x51, 0x72, 0x31, 0x02, 0xad, 0x78, 0x47, 0xfa, 0x3d, 0x37,
0x79, 0x4f, 0x6d, 0xf4, 0xa7, 0x9a, 0xaa, 0x1b, 0x9b, 0x2d, 0x7e, 0x99, 0x31, 0x3d, 0xee, 0x82,
0x1d, 0x68, 0xed, 0x3f, 0x18, 0x88, 0x29, 0x8c, 0xb6, 0x42, 0x53, 0x25, 0x78, 0x11, 0xd9, 0x8b,
0x18, 0x1a, 0x06, 0xc3, 0xa3, 0xe0, 0xb5, 0xce, 0x64, 0x95, 0xff, 0xa4, 0xd4, 0x40, 0xcd, 0x80,
0x6d, 0x85, 0xaa, 0x4f, 0xa7, 0x3c, 0xc9, 0x49, 0xe8, 0x0d, 0x91, 0x32, 0x80, 0x08, 0xe3, 0xa3,
0xb8, 0x08, 0xf9, 0x43, 0xdc, 0x7f, 0xb6, 0xa1, 0x34, 0x71, 0x91, 0x30, 0x63, 0xca, 0xc5, 0xb9,
0x89, 0x73, 0xa4, 0x6f, 0x79, 0xba, 0x93, 0x22, 0x21, 0xd6, 0xf9, 0xd2, 0x71, 0x0f, 0xe5, 0xf5,
0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc5, 0x93, 0xf0, 0xfc, 0x3d, 0x02, 0x00, 0x00,
}

View File

@ -20,6 +20,19 @@ enum MessageType {
Query = 0x14;
}
//----------------------------------------
// Code types
enum CodeType {
OK = 0;
InternalError = 1;
Unauthorized = 2;
InsufficientFees = 3;
UnknownRequest = 4;
EncodingError = 5;
BadNonce = 6;
}
//----------------------------------------
// Request types
@ -36,7 +49,7 @@ message Request {
message Response {
MessageType type = 1;
bytes data = 2;
uint32 code = 3;
CodeType code = 3;
string error = 4;
string log = 5;
}