blazingmq icon indicating copy to clipboard operation
blazingmq copied to clipboard

Refactor `InitialConnectionContext`

Open 678098 opened this issue 5 months ago • 2 comments

There are a few issues with InitialConnectionContext

  1. Not all the fields are explicitly initialized in its constructor
InitialConnectionContext::InitialConnectionContext(bool isIncoming,
                                                   const bsl::string& name)
: d_isIncoming(isIncoming)
, d_name(name)
, d_resultState_p(0)
, d_userData_p(0)
  1. InitialConnectionContext constructor is not explicit
  2. Allocator not provided
  3. Fields are not defined in the alignment-aware order. Fields start with 1-byte bool, then huge padding and bsl::string, ...
  4. There are multiple setters that can be reduced to constructor args to simplify API
    bsl::shared_ptr<InitialConnectionContext> initialConnectionContext;
    initialConnectionContext.createInplace(d_allocator_p,
                                           context->d_isIncoming);
    (*initialConnectionContext)
        .setUserData(context->d_negotiationUserData_sp.get())
        .setResultState(context->d_resultState_p)
        .setChannel(channel)
        .setCompleteCb(bdlf::BindUtil::bind(
            &TCPSessionFactory::negotiationComplete,
            this,
            bdlf::PlaceHolders::_1,  // status
            bdlf::PlaceHolders::_2,  // errorDescription
            bdlf::PlaceHolders::_3,  // session
            bdlf::PlaceHolders::_4,  // channel
            bdlf::PlaceHolders::_5,  // initialConnectionContext
            context));

678098 avatar Sep 04 '25 17:09 678098

Hi was wondering if this issue could be assigned to me. Would love to work on it

SrinathhSatuluri avatar Sep 22 '25 16:09 SrinathhSatuluri

Hi @SrinathhSatuluri, the changes described in this issue are already done in this PR: https://github.com/bloomberg/blazingmq/pull/897

678098 avatar Sep 22 '25 17:09 678098