コード例 #1
0
 /// <summary>
 /// Returns the IMessage represented by the byte array
 /// </summary>
 /// <param name="pData"></param>
 public IMessage GetMessage(Type pType, byte[] pData)
 {
     try {
         var objFrame = new Frame(pData);
         if (objFrame.Format == MessageFormat.Bson)
         {
             using (var ms = new MemoryStream(objFrame.Data)) {
                 using (var reader = new Newtonsoft.Json.Bson.BsonDataReader(ms)) {
                     return(new JsonSerializer()
                            .Deserialize(
                                reader,
                                pType
                                ) as IMessage);
                 }
             }
         }
         else
         {
             var str = Encoding.UTF8.GetString(objFrame.Data);
             return(JsonConvert.DeserializeObject(
                        str,
                        pType
                        ) as IMessage);
         }
     } catch (Exception ex) {
         Log.Error($"Failed creating message from provided data: {ex.Message}");
     }
     return(null);
 }
コード例 #2
0
        protected T DeserializeUsingNewtonsoftReader <T>(byte[] bson, bool mustBeNested = false)
        {
            using (var memoryStream = new MemoryStream(bson))
                using (var newtonsoftReader = new Newtonsoft.Json.Bson.BsonDataReader(memoryStream))
                {
                    newtonsoftReader.DateTimeKindHandling = System.DateTimeKind.Utc;
                    newtonsoftReader.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;

                    if (mustBeNested)
                    {
                        newtonsoftReader.Read(); // StartObject
                        newtonsoftReader.Read(); // PropertyName
                    }
                    newtonsoftReader.Read();     // Json.NET serializers expect caller to have already called Read

                    var newtonsoftSerializer = new Newtonsoft.Json.JsonSerializer();
                    var value = newtonsoftSerializer.Deserialize <T>(newtonsoftReader);

                    if (mustBeNested)
                    {
                        newtonsoftReader.Read(); // EndObject
                    }

                    return(value);
                }
        }
コード例 #3
0
 protected T ReadJsonUsingNativeBsonReader <T>(Newtonsoft.Json.JsonConverter converter, byte[] bson, bool mustBeNested = false)
 {
     using (var stream = new MemoryStream(bson))
         using (var reader = new Newtonsoft.Json.Bson.BsonDataReader(stream))
         {
             return(ReadJson <T>(converter, reader, mustBeNested));
         }
 }
コード例 #4
0
 public static JObject Read(FileStream stream)
 {
     using (var br = new Newtonsoft.Json.Bson.BsonDataReader(stream))
     {
         var serializer = new Newtonsoft.Json.JsonSerializer();
         return((JObject)serializer.Deserialize(br));
     }
 }
コード例 #5
0
        public DeserializedObject Deserialize(byte[] buffer)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
            Newtonsoft.Json.Bson.BsonDataReader reader = new Newtonsoft.Json.Bson.BsonDataReader(ms);
            JObject jObject = new JsonSerializer().Deserialize <JObject>(reader);

            return(new NewtonsoftBsonObject(jObject));
        }
コード例 #6
0
        public static IJsonReader GetBsonReader(Stream stream)
        {
            var reader     = new BinaryReader(stream, Encoding.UTF8, true);
            var dataReader = new Newtonsoft.Json.Bson.BsonDataReader(reader, false, DateTimeKind.Utc);

            return(ComponentContext.Resolve <IJsonReader>(
                       new TypedParameter(typeof(Newtonsoft.Json.JsonReader), dataReader)
                       ));
        }
コード例 #7
0
        private T Deserialize <T>(byte[] buffer)
        {
            switch (Serializer)
            {
            case SerializerEnum.JSON:
                string ascii = Encoding.ASCII.GetString(buffer, 0, buffer.Length);
                return(JsonConvert.DeserializeObject <T>(ascii));

            case SerializerEnum.BSON:
                System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
                Newtonsoft.Json.Bson.BsonDataReader reader = new Newtonsoft.Json.Bson.BsonDataReader(ms);
                return(new JsonSerializer().Deserialize <T>(reader));

            default:
                throw new ArgumentException("Invalid Serializer");
            }
        }
コード例 #8
0
        internal static TValue FromBson <TValue>(byte[] buffer)
        {
            TValue value;

            using (MemoryStream ms = new MemoryStream(buffer))
            {
                using (var reader = new Newtonsoft.Json.Bson.BsonDataReader(ms))
                {
                    var serializer = new Newtonsoft.Json.JsonSerializer
                    {
                        Formatting       = Newtonsoft.Json.Formatting.None,
                        Culture          = CultureInfo.InvariantCulture,
                        TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto,
                        TypeNameAssemblyFormatHandling = Newtonsoft.Json.TypeNameAssemblyFormatHandling.Simple,
                    };
                    value = serializer.Deserialize <TValue>(reader);
                }
            }

            return(value);
        }
コード例 #9
0
        //为了简化通讯协议,TCP用bson,http用JSON
        //Newtonsoft.Json 和  Newtonsoft.Json.Bson
        static void Main(string[] args)
        {
            Newtonsoft.Json.Linq.JValue  v   = new Newtonsoft.Json.Linq.JValue(11.0);
            Newtonsoft.Json.Linq.JObject obj = new Newtonsoft.Json.Linq.JObject();
            obj["abc"] = v;
            var stream = new System.IO.MemoryStream();

            Newtonsoft.Json.Bson.BsonDataWriter w = new Newtonsoft.Json.Bson.BsonDataWriter(stream);
            obj.WriteTo(w);
            var bts = stream.ToArray();

            Newtonsoft.Json.Bson.BsonDataReader r = new Newtonsoft.Json.Bson.BsonDataReader(new System.IO.MemoryStream(bts));
            var token = Newtonsoft.Json.Linq.JToken.ReadFrom(r);

            Console.WriteLine("Hello World!");

            var tree = Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree.ParseText("class A{public  int aaa(){return 3+4;}}");

            var op   = new CSharpCompilationOptions(Microsoft.CodeAnalysis.OutputKind.DynamicallyLinkedLibrary);
            var ref1 = MetadataReference.CreateFromFile("needlib" + System.IO.Path.DirectorySeparatorChar + "mscorlib.dll");
            var comp = Microsoft.CodeAnalysis.CSharp.CSharpCompilation.Create("aaa.dll", new[] { tree },
                                                                              new[] { ref1 }, op);
            var ms     = new System.IO.MemoryStream();
            var mspdb  = new System.IO.MemoryStream();
            var result = comp.Emit(ms, mspdb);

            Console.WriteLine("result=" + result.Success);
            Console.WriteLine("dll=" + ms.Length);
            Console.WriteLine("pdb=" + mspdb.Length);
            System.IO.File.WriteAllBytes("111.dll", ms.ToArray());
            System.IO.File.WriteAllBytes("111.pdb", mspdb.ToArray());
            foreach (var d in result.Diagnostics)
            {
                Console.WriteLine(d.Descriptor.Description.ToString());
                Console.WriteLine(d.Descriptor.Title.ToString());
                Console.WriteLine(d.Descriptor.Category);
                Console.WriteLine(d.Descriptor.MessageFormat.ToString());
            }
            Console.WriteLine("rosyln ok.");
        }
コード例 #10
0
 private static string ToJson(BsonDocument bson)
 {
     using (var stream = new MemoryStream())
     {
         using (var writer = new BsonBinaryWriter(stream))
         {
             BsonSerializer.Serialize(writer, typeof(BsonDocument), bson);
         }
         stream.Seek(0, SeekOrigin.Begin);
         using (var reader = new Newtonsoft.Json.Bson.BsonDataReader(stream))
         {
             var sb = new StringBuilder();
             var sw = new StringWriter(sb);
             using (var jWriter = new JsonTextWriter(sw))
             {
                 jWriter.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
                 jWriter.WriteToken(reader);
             }
             return(sb.ToString());
         }
     }
 }
コード例 #11
0
        /// <summary>
        /// Builds a tcp messages from a wrapped data array
        /// used by the tcp processing system to deserialize recieved data
        /// </summary>
        /// <param name="data">The wrapped memory array.</param>
        /// <returns>a new tcp message built from the array segment</returns>
        /// <exception cref="UnregisteredMessageException"> If the message type is not found this will throw UnregisteredMessageException</exception>
        public static TcpMessage FromArraySegment(ArraySegment <byte> data)
        {
            if (data.Array == null || data.Count < sizeof(int))
            {
                throw new ArgumentException($"ArraySegment null or too short, length: {data.Count}", nameof(data));
            }

            Message msg;

#pragma warning disable 618
            using (var reader = new BsonDataReader(new MemoryStream(data.Array)))
#pragma warning restore 618
            {
                reader.Read(); //object
                reader.Read(); //property name

                var messageType = MessageHierarchy.GetTypeByFullName((string)reader.Value);
                reader.Read(); //property value
                msg = (Message)JsonConvert.DeserializeObject((string)reader.Value, messageType, Settings.JsonSettings);
            }
            Log.Debug("Deserialized Message MsgId=" + msg.MsgId + " MsgType" + msg.GetType().Name);
            return(new TcpMessage(msg, data));
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: ngudeveloper/Zoro
        //为了简化通讯协议,TCP用bson,http用JSON
        //Newtonsoft.Json 和  Newtonsoft.Json.Bson
        static void Main(string[] args)
        {
            Newtonsoft.Json.Linq.JValue  v   = new Newtonsoft.Json.Linq.JValue(11.0);
            Newtonsoft.Json.Linq.JObject obj = new Newtonsoft.Json.Linq.JObject();
            obj["abc"] = v;
            var stream = new System.IO.MemoryStream();

            Newtonsoft.Json.Bson.BsonDataWriter w = new Newtonsoft.Json.Bson.BsonDataWriter(stream);
            obj.WriteTo(w);
            var bts = stream.ToArray();

            Newtonsoft.Json.Bson.BsonDataReader r = new Newtonsoft.Json.Bson.BsonDataReader(new System.IO.MemoryStream(bts));
            var token = Newtonsoft.Json.Linq.JToken.ReadFrom(r);

            Console.WriteLine("Hello World!");

            var tree = Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree.ParseText("class A{public  int aaa(){return 3;}}");

            var op   = new CSharpCompilationOptions(Microsoft.CodeAnalysis.OutputKind.DynamicallyLinkedLibrary);
            var ref1 = MetadataReference.CreateFromFile("needlib\\mscorlib.dll");
            var comp = Microsoft.CodeAnalysis.CSharp.CSharpCompilation.Create("aaa.dll", new[] { tree },
                                                                              new[] { ref1 }, op);
            var result = comp.Emit("e:\\111.dll", pdbPath: "e:\\111.pdb");
        }