public static async ValueTask <T> RoundTripAsync <T>(T message, IGenericBsonSerializer <T> serializer) { var pipe = new Pipe(); await WriteAsync(pipe.Writer, message, serializer); return(await ReadAsync(pipe.Reader, serializer)); }
//static SerializersMap() //{ // foreach (var pair in MongoDB.Client.Bson.Serialization.Generated.GlobalSerializationHelperGenerated.GetGeneratedSerializers()) // { // _serializerMap.Add(pair.Key, pair.Value); // } //} public static bool TryGetSerializer <T>([MaybeNullWhen(false)] out IGenericBsonSerializer <T> serializer) { if (_serializerMap.TryGetValue(typeof(T), out var ser) && ser is IGenericBsonSerializer <T> typedSer) { serializer = typedSer; return(true); } serializer = default; return(false); }
public MsgBodyReader(IGenericBsonSerializer <T> serializer, ResponseMsgMessage message) { Serializer = serializer; Message = message; CursorResult = new CursorResult <T> { MongoCursor = new MongoCursor <T> { Items = CursorItemsPool <T> .Pool.Get() } }; }
private static async ValueTask <T> ReadAsync <T>(PipeReader input, IGenericBsonSerializer <T> serializer) { var reader = new ProtocolReader(input); var messageReader = new ReplyBodyReader <T>(serializer, new ReplyMessage(default, new ReplyMessageHeader(default, default, default, 1)));
public MsgType0BodyReader(IGenericBsonSerializer <T> serializer, ResponseMsgMessage message) : base(serializer, message) { _payloadLength = message.Header.MessageLength; _state = ParserState.Initial; }
public ReplyBodyReader(IGenericBsonSerializer <T> serializer, ReplyMessage replyMessage) { _serializer = serializer; _replyMessage = replyMessage; _result = new QueryResult <T>(_replyMessage.ReplyHeader.CursorId); }
public MsgType1BodyReader(IGenericBsonSerializer <T> serializer, ResponseMsgMessage message) : base(serializer, message) { }
public ReplyBodyWriter(IGenericBsonSerializer <T> serializer) { _serializer = serializer; }