private Http2Stream GetImpl(StreamGetCallback cb)
        {
            lockStreams.WaitOne();

            var stream = new Http2Stream(flowControlManager, GetNextIdentifier());

            streams.Add(stream.StreamIdentifer, stream);

            lockStreams.Release();

            cb?.Invoke(stream);
            return(stream);
        }
        private Http2Stream GetWithIdentifier(uint streamIdentifier, StreamGetCallback cb)
        {
            lockStreams.WaitOne();

            Http2Stream stream = null;

            if (!streams.ContainsKey(streamIdentifier))
            {
                stream = new Http2Stream(flowControlManager, streamIdentifier);
                streams.Add(streamIdentifier, stream);
            }
            else
            {
                stream = streams[streamIdentifier];
            }

            lockStreams.Release();

            cb?.Invoke(stream);
            return(stream);
        }
 public void Get(StreamGetCallback cb)
 {
     new Thread(() => GetImpl(cb)).Start();
 }
 public void Get(uint streamIdentifier, StreamGetCallback cb)
 {
     new Thread(() => GetWithIdentifier(streamIdentifier, cb)).Start();
 }