func (r replica) execute(command []byte) []byte { req := new(bftbench.Request) err := proto.Unmarshal(command, req) checkError(err) var res bool var achou bool rsp := new(bftbench.Response) if req.GetAction() == bftbench.Request_ADD { val := req.GetValue() res = false achou = false for _, element := range r.state { if element == val { achou = true break } } if achou == false { r.state = append(r.state, val) res = true } rsp.BoolResponse = &res data, err := proto.Marshal(rsp) checkError(err) return data } else if req.GetAction() == bftbench.Request_GET { val := req.GetValue() if val >= int32(len(r.state)) { val = -1 } else { val = r.state[val] } rsp.IntResponse = &val data, err := proto.Marshal(rsp) checkError(err) return data } else if req.GetAction() == bftbench.Request_REMOVE { val := req.GetValue() res = false achou = false for index, element := range r.state { if element == val { achou = true val = int32(index) break } } if achou == true { r.state = append(r.state[:val], r.state[val+1:]...) res = true } rsp.BoolResponse = &res data, err := proto.Marshal(rsp) checkError(err) return data } else if req.GetAction() == bftbench.Request_SIZE { val := int32(len(r.state)) rsp.IntResponse = &val data, err := proto.Marshal(rsp) checkError(err) return data } else { // contains val := req.GetValue() res = false achou = false for _, element := range r.state { if element == val { achou = true break } } if achou == true { res = true } rsp.BoolResponse = &res data, err := proto.Marshal(rsp) checkError(err) return data } }