github.com/s7techlab/cckit@v0.10.5/testing/testdata/cc_tx_state_isolation.go (about) 1 package testdata 2 3 import ( 4 "github.com/s7techlab/cckit/router" 5 ) 6 7 const ( 8 Key1 = `abc` 9 10 TxIsolationReadAfterWrite = `ReadAfterWrite` 11 TxIsolationReadAfterDelete = `ReadAfterDelete` 12 ) 13 14 var ( 15 Value1 = []byte(`cde`) 16 ) 17 18 func NewTxIsolationCC() *router.Chaincode { 19 r := router.New(`tx_isolation`) 20 21 r.Query(TxIsolationReadAfterWrite, ReadAfterWrite). 22 Query(TxIsolationReadAfterDelete, ReadAfterDelete) 23 24 return router.NewChaincode(r) 25 } 26 27 func ReadAfterWrite(c router.Context) (interface{}, error) { 28 if err := c.State().Put(Key1, Value1); err != nil { 29 return nil, err 30 } 31 32 // return empty, cause state changes cannot be read 33 res, _ := c.State().Get(Key1) 34 // if we return error - state changes will not applied 35 return res, nil 36 } 37 38 func ReadAfterDelete(c router.Context) (interface{}, error) { 39 if err := c.State().Delete(Key1); err != nil { 40 return nil, err 41 } 42 // return non empty, cause state changes, include deletion, cannot be read 43 return c.State().Get(Key1) 44 }