Exemplo n.º 1
0
        protected override MongoDbTransport DoAcquireTransport(EndpointAssignment assignment, bool reserve)
        {
            if (reserve)
            {
                return(new MongoDbTransport(assignment));
            }

            if (m_Transports.TryGetValue(assignment, out var transport))
            {
                return(transport);
            }
            lock (m_TransportLock)
            {
                if (m_Transports.TryGetValue(assignment, out transport))
                {
                    return(transport);
                }

                transport = new MongoDbTransport(assignment);
                var dict = new Dictionary <EndpointAssignment, MongoDbTransport>(m_Transports);
                dict[assignment] = transport;
                Thread.MemoryBarrier();
                m_Transports = dict;
            }

            return(transport);
        }
Exemplo n.º 2
0
 protected internal MongoDbTransport(EndpointAssignment assignment)
 {
     m_Assignment = assignment;
 }