public OutboundConnectionContext(LinuxSocket socket, EndPoint remote, TransportThreadContext threadContext)
            : base(socket, null, remote, threadContext)
        {
            sockaddr_storage addr = default;
            var addrHandle        = GCHandle.Alloc(addr, GCHandleType.Pinned);

            _addr       = (sockaddr_storage *)addrHandle.AddrOfPinnedObject();
            _addrHandle = addrHandle;

            // Add IConnectionInherentKeepAliveFeature to the tcp connection impl since Kestrel doesn't implement
            // the IConnectionHeartbeatFeature
            Features.Set <IConnectionInherentKeepAliveFeature>(this);
        }
        public AcceptSocketContext(LinuxSocket socket, IPEndPoint endPoint, ChannelWriter <ConnectionContext> acceptQueue)
        {
            EndPoint    = endPoint;
            AcceptQueue = acceptQueue;
            Socket      = socket;

            sockaddr_storage storage = default;
            var addrHandle           = GCHandle.Alloc(storage, GCHandleType.Pinned);

            _addr       = (sockaddr_storage *)addrHandle.AddrOfPinnedObject();
            _addrHandle = addrHandle;

            socklen_t addrLen       = SizeOf.sockaddr_storage;
            var       addrLenHandle = GCHandle.Alloc(addrLen, GCHandleType.Pinned);

            _addLen        = (socklen_t *)addrLenHandle.AddrOfPinnedObject();
            _addrLenHandle = addrLenHandle;
        }