internal MongoReplyMessage <TDocument> ReceiveMessage <TDocument>( BsonBinaryReaderSettings readerSettings, IBsonSerializer <TDocument> serializer) { if (_state == MongoConnectionState.Closed) { throw new InvalidOperationException("Connection is closed."); } lock (_connectionLock) { try { _lastUsedAt = DateTime.UtcNow; var networkStream = GetNetworkStream(); var readTimeout = (int)_serverInstance.Settings.SocketTimeout.TotalMilliseconds; if (readTimeout != 0) { networkStream.ReadTimeout = readTimeout; } using (var byteBuffer = ByteBufferFactory.LoadLengthPrefixedDataFrom(networkStream)) using (var stream = new ByteBufferStream(byteBuffer, ownsByteBuffer: true)) { var reply = new MongoReplyMessage <TDocument>(readerSettings, serializer); reply.ReadFrom(stream); return(reply); } } catch (Exception ex) { HandleException(ex); throw; } } }
internal MongoReplyMessage <TDocument> ReceiveMessage <TDocument>( BsonBinaryReaderSettings readerSettings, IBsonSerializationOptions serializationOptions) { if (_state == MongoConnectionState.Closed) { throw new InvalidOperationException("Connection is closed."); } lock (_connectionLock) { try { using (var buffer = new BsonBuffer()) { var networkStream = GetNetworkStream(); var readTimeout = (int)_serverInstance.Settings.SocketTimeout.TotalMilliseconds; if (readTimeout != 0) { networkStream.ReadTimeout = readTimeout; } buffer.LoadFrom(networkStream); var reply = new MongoReplyMessage <TDocument>(readerSettings); reply.ReadFrom(buffer, serializationOptions); return(reply); } } catch (Exception ex) { HandleException(ex); throw; } } }
internal MongoReplyMessage <TDocument> ReceiveMessage <TDocument>() { if (state == MongoConnectionState.Closed) { throw new InvalidOperationException("Connection is closed"); } lock (connectionLock) { try { using (var buffer = new BsonBuffer()) { var networkStream = GetNetworkStream(); networkStream.ReadTimeout = (int)serverInstance.Server.Settings.SocketTimeout.TotalMilliseconds; buffer.LoadFrom(networkStream); var reply = new MongoReplyMessage <TDocument>(this); reply.ReadFrom(buffer); return(reply); } } catch (Exception ex) { HandleException(ex); throw; } } }