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; }