Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-10096

Handshake "acceptance codes" should be an enum class

    XMLWordPrintableJSON

Details

    Description

      In the method TcrConnection::initTcrConnection, the following block of code appears:

          switch (acceptanceCode[0]) {
            case REPLY_OK:
            case SUCCESSFUL_SERVER_TO_CLIENT:
              LOGFINER("Handshake reply: %u,%u,%u", acceptanceCode[0],
                       serverQueueStatus[0], recvMsgLen2);
              if (isClientNotification) readHandshakeInstantiatorMsg(connectTimeout);
              break;
            case REPLY_AUTHENTICATION_FAILED: {
              AuthenticationFailedException ex(
                  reinterpret_cast<char*>(recvMessage.data()));
              m_conn.reset();
              throwException(ex);
            }
            case REPLY_AUTHENTICATION_REQUIRED: {
              AuthenticationRequiredException ex(
                  reinterpret_cast<char*>(recvMessage.data()));
              m_conn.reset();
              throwException(ex);
            }
            case REPLY_DUPLICATE_DURABLE_CLIENT: {
              DuplicateDurableClientException ex(
                  reinterpret_cast<char*>(recvMessage.data()));
              m_conn.reset();
              throwException(ex);
            }
            case REPLY_REFUSED:
            case REPLY_INVALID:
            case UNSUCCESSFUL_SERVER_TO_CLIENT: {
              LOGERROR("Handshake rejected by server[%s]: %s",
                       m_endpointObj->name().c_str(),
                       reinterpret_cast<char*>(recvMessage.data()));
              auto message = std::string("TcrConnection::TcrConnection: ") +
                             "Handshake rejected by server: " +
                             reinterpret_cast<char*>(recvMessage.data());
              CacheServerException ex(message);
              m_conn.reset();
              throw ex;
            }
      

      These response codes are unique to the server handshake, and not used anywhere else in the code. We need to remove the #defines for them and put them in a proper enum class.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              bbender Blake Bender
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: