Example #1
0
        SqlResult Connection::MakeRequestHandshake()
        {
            HandshakeRequest req(PROTOCOL_VERSION);
            HandshakeResponse rsp;

            try
            {
                SyncMessage(req, rsp);
            }
            catch (const IgniteError& err)
            {
                AddStatusRecord(SQL_STATE_HYT01_CONNECTIOIN_TIMEOUT, err.GetText());

                return SQL_RESULT_ERROR;
            }

            if (rsp.GetStatus() != RESPONSE_STATUS_SUCCESS)
            {
                LOG_MSG("Error: %s\n", rsp.GetError().c_str());

                AddStatusRecord(SQL_STATE_08001_CANNOT_CONNECT, rsp.GetError());

                InternalRelease();

                return SQL_RESULT_ERROR;
            }

            if (!rsp.IsAccepted())
            {
                LOG_MSG("Hanshake message has been rejected.\n");

                std::stringstream constructor;

                constructor << "Node rejected handshake message. "
                    << "Current node Apache Ignite version: " << rsp.CurrentVer() << ", "
                    << "node protocol version introduced in version: " << rsp.ProtoVerSince() << ", "
                    << "driver protocol version introduced in version: " << PROTOCOL_VERSION_SINCE << ".";

                AddStatusRecord(SQL_STATE_08001_CANNOT_CONNECT, constructor.str());

                InternalRelease();

                return SQL_RESULT_ERROR;
            }

            return SQL_RESULT_SUCCESS;
        }
Example #2
0
        SqlResult Connection::MakeRequestHandshake()
        {
            bool distributedJoins = false;
            bool enforceJoinOrder = false;
            int64_t protocolVersion = 0;

            try
            {
                distributedJoins = config.IsDistributedJoins();
                enforceJoinOrder = config.IsEnforceJoinOrder();
                protocolVersion = config.GetProtocolVersion().GetIntValue();
            }
            catch (const IgniteError& err)
            {
                AddStatusRecord(SQL_STATE_01S00_INVALID_CONNECTION_STRING_ATTRIBUTE, err.GetText());

                return SQL_RESULT_ERROR;
            }

            HandshakeRequest req(protocolVersion, distributedJoins, enforceJoinOrder);
            HandshakeResponse rsp;

            try
            {
                SyncMessage(req, rsp);
            }
            catch (const IgniteError& err)
            {
                AddStatusRecord(SQL_STATE_HYT01_CONNECTIOIN_TIMEOUT, err.GetText());

                return SQL_RESULT_ERROR;
            }

            if (rsp.GetStatus() != RESPONSE_STATUS_SUCCESS)
            {
                LOG_MSG("Error: %s\n", rsp.GetError().c_str());

                AddStatusRecord(SQL_STATE_08001_CANNOT_CONNECT, rsp.GetError());

                InternalRelease();

                return SQL_RESULT_ERROR;
            }

            if (!rsp.IsAccepted())
            {
                LOG_MSG("Hanshake message has been rejected.\n");

                std::stringstream constructor;

                constructor << "Node rejected handshake message. "
                    << "Current node Apache Ignite version: " << rsp.CurrentVer() << ", "
                    << "node protocol version introduced in version: " << rsp.ProtoVerSince() << ", "
                    << "driver protocol version introduced in version: " << config.GetProtocolVersion().ToString() << ".";

                AddStatusRecord(SQL_STATE_08001_CANNOT_CONNECT, constructor.str());

                InternalRelease();

                return SQL_RESULT_ERROR;
            }

            return SQL_RESULT_SUCCESS;
        }