func handleRequest(app types.Application, req types.Request, responses chan<- types.Response) { switch req := req.(type) { case types.RequestEcho: responses <- types.ResponseEcho{req.Message} case types.RequestFlush: responses <- types.ResponseFlush{} case types.RequestInfo: data := app.Info() responses <- types.ResponseInfo{data} case types.RequestSetOption: logStr := app.SetOption(req.Key, req.Value) responses <- types.ResponseSetOption{logStr} case types.RequestAppendTx: code, result, logStr := app.AppendTx(req.TxBytes) responses <- types.ResponseAppendTx{code, result, logStr} case types.RequestCheckTx: code, result, logStr := app.CheckTx(req.TxBytes) responses <- types.ResponseCheckTx{code, result, logStr} case types.RequestGetHash: hash, logStr := app.GetHash() responses <- types.ResponseGetHash{hash, logStr} case types.RequestQuery: result, logStr := app.Query(req.QueryBytes) responses <- types.ResponseQuery{result, logStr} default: responses <- types.ResponseException{"Unknown request"} } }