56 lines
1.2 KiB
Go
56 lines
1.2 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package caller
|
|
|
|
import (
|
|
"github.com/hyperledger/fabric-chaincode-go/shim"
|
|
pb "github.com/hyperledger/fabric-protos-go/peer"
|
|
)
|
|
|
|
// CC example simple Chaincode implementation
|
|
type CC struct{}
|
|
|
|
func (t *CC) Init(stub shim.ChaincodeStubInterface) pb.Response {
|
|
err := stub.PutState("foo", []byte("caller:foo"))
|
|
if err != nil {
|
|
return shim.Error(err.Error())
|
|
}
|
|
|
|
return shim.Success(nil)
|
|
}
|
|
|
|
func (t *CC) Invoke(stub shim.ChaincodeStubInterface) pb.Response {
|
|
fn, args := stub.GetFunctionAndParameters()
|
|
switch fn {
|
|
case "INVOKE":
|
|
err := stub.PutState("foo", []byte("caller:bar"))
|
|
if err != nil {
|
|
return shim.Error(err.Error())
|
|
}
|
|
|
|
return stub.InvokeChaincode(string(args[0]), [][]byte{[]byte("INVOKE")}, "")
|
|
|
|
case "QUERYCALLEE":
|
|
response := stub.InvokeChaincode(string(args[0]), [][]byte{[]byte("QUERY")}, args[1])
|
|
if response.Status >= 400 {
|
|
return shim.Error(response.Message)
|
|
}
|
|
|
|
return shim.Success(response.Payload)
|
|
|
|
case "QUERY":
|
|
val, err := stub.GetState("foo")
|
|
if err != nil {
|
|
return shim.Error(err.Error())
|
|
}
|
|
|
|
return shim.Success(val)
|
|
default:
|
|
return shim.Error("unknown function")
|
|
}
|
|
}
|