예제 #1
0
        public static T Deserialize <PARSER, T>(this IDeserializerBase <T> d, PARSER parser)
            where PARSER : IParser <PARSER>
        {
            var value = default(T);

            d.Deserialize(parser, ref value);
            return(value);
        }
예제 #2
0
 public MemberDeserializer(string name
                           , IDeserializerBase <U> deserializer
                           , Setter setter
                           , BoxedSetter boxedSetter)
 {
     MemberName     = name;
     m_deserializer = deserializer;
     m_setter       = setter;
     m_boxedSetter  = boxedSetter;
 }
예제 #3
0
 public static TypeSerialization Create <T>(
     Action <T, IFormatter> serializeFunc
     , IDeserializerBase <T> deserializer)
 {
     return(new TypeSerialization
     {
         Type = typeof(T),
         Serializer = new LambdaSerializer <T>(serializeFunc),
         Deserializer = deserializer
     });
 }
예제 #4
0
 public static TypeSerialization Create <T>(
     SerializerBase <T> serializer
     , IDeserializerBase <T> deserializer)
 {
     return(new TypeSerialization
     {
         Type = typeof(T),
         Serializer = serializer,
         Deserializer = deserializer
     });
 }
예제 #5
0
 public static LambdaDeserializerFactory CreateFactory <T>(
     IDeserializerBase <T> d)
 {
     return(new LambdaDeserializerFactory
     {
         m_factory = x =>
         {
             if (x != typeof(T))
             {
                 return null;
             }
             return d;
         }
     });
 }
예제 #6
0
        public RPCTransporter(IDuplexStream transport)
        {
            m_transport = transport;
            var r = new TypeRegistry();

            m_s = r.GetSerializer <RPCRequest <PARSER> >();
            m_d = r.GetDeserializer <RPCResponse <PARSER> >();

            transport.ReadObservable.Subscribe(x =>
            {
                var parser = new PARSER();
                parser.SetBytes(x);
                var response = default(RPCResponse <PARSER>);
                m_d.Deserialize(parser, ref response);
                m_subject.OnNext(response);
            });
        }
예제 #7
0
 public RpcService()
 {
     m_d          = m_r.GetDeserializer <RPCRequest <PARSER> >();
     m_s          = m_r.GetSerializer <RPCResponse <PARSER> >();
     m_dispatcher = new RPCDispatcher();
 }
예제 #8
0
 public void Setup(TypeRegistry r)
 {
     m_d = r.GetDeserializer <Single>();
 }
예제 #9
0
 public void Setup(TypeRegistry r)
 {
     m_elementDeserializer = r.GetDeserializer <T>();
 }
예제 #10
0
 public FieldMemberDeserializer(FieldInfo fi, IDeserializerBase <U> d)
 {
     m_fi           = fi;
     m_deserializer = d;
 }