Exemplo n.º 1
0
        public static void Serialize(IEnumerable <QvxTablesRow> rows, BinaryWriter bw)
        {
            if (serializer == null)
            {
                serializer = new QvxSerializer <QvxTablesRow>();
            }

            serializer.Serialize(rows, bw);
        }
Exemplo n.º 2
0
        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);
        }