public QvxReply HandleRequest(QvxExecuteCommands command, string cmd, QvxDataClient dataclient, List <string> param) { var result = new QvxReply() { Result = QvxResult.QVX_OK }; switch (command) { #region SQL case QvxExecuteCommands.SQL: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; if (QvxExecuteRequestSelectHandler != null) { var tmpResult = QvxExecuteRequestSelectHandler(cmd, param); if (tmpResult != null) { result.Result = tmpResult.Item1; dataclient.DataClientDeliverData = tmpResult.Item2; } } break; #endregion #region TYPES case QvxExecuteCommands.TYPES: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; if (QvxExecuteRequestTypesHandler != null) { var res = QvxExecuteRequestTypesHandler(); if (res != null) { result.Result = QvxResult.QVX_OK; Type type = res.GetType().GetInterface(typeof(IEnumerable <>).Name).GetGenericArguments()[0]; var serializer = new QvxSerializer(type); serializer.Serialize(res, new BinaryWriter(dataclient)); } else { result.Result = QvxResult.QVX_UNKNOWN_ERROR; } } break; #endregion #region COLUMNS case QvxExecuteCommands.COLUMNS: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; if (QvxExecuteRequestColumnsHandler != null) { string tablename = null; result.Result = QvxResult.QVX_OK; if ((param != null) && (param.Count > 0) && param[0].StartsWith("TABLE_NAME=")) { tablename = param[0].Substring(11); } dataclient.DataClientDeliverData = (dc) => { var res = QvxExecuteRequestColumnsHandler(tablename); if (res != null) { QvxColumsRow.Serialize(res, new BinaryWriter(dataclient)); } }; } break; #endregion #region TABLES case QvxExecuteCommands.TABLES: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; if (QvxExecuteRequestColumnsHandler != null) { result.Result = QvxResult.QVX_OK; dataclient.DataClientDeliverData = (dc) => { var res = QvxExecuteRequestTablesHandler(); if (res != null) { QvxTablesRow.Serialize(res, new BinaryWriter(dc)); } }; } break; #endregion #region Default default: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; break; #endregion } if (result.Result == QvxResult.QVX_OK) { dataclient.StartThread(); } return(result); }
public QvxReply HandleRequest(QvxExecuteCommands command, string cmd, QvxDataClient dataclient, List<string> param) { var result = new QvxReply() { Result = QvxResult.QVX_OK }; switch (command) { #region SQL case QvxExecuteCommands.SQL: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; if (QvxExecuteRequestSelectHandler != null) { var tmpResult = QvxExecuteRequestSelectHandler(cmd, param); if (tmpResult != null) { result.Result = tmpResult.Item1; dataclient.DataClientDeliverData = tmpResult.Item2; } } break; #endregion #region TYPES case QvxExecuteCommands.TYPES: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; if (QvxExecuteRequestTypesHandler != null) { var res = QvxExecuteRequestTypesHandler(); if (res != null) { result.Result = QvxResult.QVX_OK; Type type = res.GetType().GetInterface(typeof(IEnumerable<>).Name).GetGenericArguments()[0]; var serializer = new QvxSerializer(type); serializer.Serialize(res, new BinaryWriter(dataclient)); } else result.Result = QvxResult.QVX_UNKNOWN_ERROR; } break; #endregion #region COLUMNS case QvxExecuteCommands.COLUMNS: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; if (QvxExecuteRequestColumnsHandler != null) { string tablename = null; result.Result = QvxResult.QVX_OK; if ((param != null) && (param.Count > 0) && param[0].StartsWith("TABLE_NAME=")) { tablename = param[0].Substring(11); } dataclient.DataClientDeliverData = (dc) => { var res = QvxExecuteRequestColumnsHandler(tablename); if (res != null) QvxColumsRow.Serialize(res, new BinaryWriter(dataclient)); }; } break; #endregion #region TABLES case QvxExecuteCommands.TABLES: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; if (QvxExecuteRequestColumnsHandler != null) { result.Result = QvxResult.QVX_OK; dataclient.DataClientDeliverData = (dc) => { var res = QvxExecuteRequestTablesHandler(); if (res != null) QvxTablesRow.Serialize(res, new BinaryWriter(dc)); }; } break; #endregion #region Default default: result.Result = QvxResult.QVX_UNSUPPORTED_COMMAND; break; #endregion } if (result.Result == QvxResult.QVX_OK) { dataclient.StartThread(); } return result; }