internal SimpleInMemConnection( SimpleInMemListener parentListener, ConnectionType connectionType, ServiceHost serviceHost, SimpleInMemTransport transport, Logger logger, Metrics metrics) { if (parentListener == null) { throw new ArgumentNullException(nameof(parentListener)); } if (serviceHost == null) { throw new ArgumentNullException(nameof(serviceHost)); } if (transport == null) { throw new ArgumentNullException(nameof(transport)); } this.parentListener = parentListener; this.connectionType = connectionType; this.serviceHost = serviceHost; this.transport = transport; writeQueue = new InMemFrameQueue(); // start at -1 or 0 so the first conversation ID is 1 or 2. prevConversationId = (connectionType == ConnectionType.Client) ? -1 : 0; state = CnxState.Created; this.logger = logger; this.metrics = metrics; }
/// <summary> /// Makes a new instance of <see cref="SimpleInMemListener"/> and returns it /// if one does not exist already for provided address. Returns an existing one /// otherwise. /// </summary> /// <returns><see cref="SimpleInMemListener"/> instance represented by address</returns> public override Listener MakeListener(string address) { SimpleInMemListener listener; if (!listeners.TryGetValue(address, out listener)) { lock (listenersLock) { if (!listeners.TryGetValue(address, out listener)) { listener = new SimpleInMemListener(this, address, logger, metrics); listeners.Add(address, listener); } } } return(listener); }