static void MakeFromScratchImpl(TypeModel model, string caption) { var obj = new Naked(); try { Extensible.AppendValue(model, obj, 1, DataFormat.Default, "abc"); Extensible.AppendValue(model, obj, 2, DataFormat.Default, 456.7F); Extensible.AppendValue(model, obj, 3, DataFormat.FixedSize, 123); CanHazData clone; using (var ms = new MemoryStream()) { model.Serialize(ms, obj); string s = Program.GetByteString(ms.ToArray()); Assert.Equal("0A 03 61 62 63 15 9A 59 E4 43 1D 7B 00 00 00", s); //, caption); ms.Position = 0; #pragma warning disable CS0618 clone = (CanHazData)model.Deserialize(ms, null, typeof(CanHazData)); #pragma warning restore CS0618 } Assert.Equal("abc", clone.A); //, caption); Assert.Equal(456.7F, clone.B); //, caption); Assert.Equal(123, clone.C); //, caption); } catch { Debug.WriteLine(caption); throw; } }
static void TestWriteExt <T>() where T : IExtTest, IExtensible, new() { const float SOME_VALUE = 987.65F; T obj = new T(); var tm = TypeModel.Create(false, ProtoCompatibilitySettingsValue.FullCompatibility); Extensible.AppendValue <float>(tm, obj, 3, SOME_VALUE); byte[] raw = GetExtensionBytes(obj); Assert.AreEqual(5, raw.Length, "Extension Length"); Assert.AreEqual((3 << 3) | 5, raw[0], "Prefix (3 Fixed32)"); byte[] tmp = BitConverter.GetBytes(SOME_VALUE); if (!BitConverter.IsLittleEndian) { Array.Reverse(tmp); } Assert.AreEqual(tmp[0], raw[1], "Float32 Byte 0"); Assert.AreEqual(tmp[1], raw[2], "Float32 Byte 1"); Assert.AreEqual(tmp[2], raw[3], "Float32 Byte 2"); Assert.AreEqual(tmp[3], raw[4], "Float32 Byte 3"); float readBack = Extensible.GetValue <float>(obj, 3); Assert.AreEqual(SOME_VALUE, readBack, "read back"); BiggerObject big = tm.ChangeType <T, BiggerObject>(obj); Assert.AreEqual(SOME_VALUE, big.SomeFloat, "deserialize"); }
// For FunMessage public static FunMessage CreateFunMessage(object msg, MessageType msg_type) { if (msg is Enum) { msg = (Int32)msg; } try { FunMessage _msg = new FunMessage(); Extensible.AppendValue(serializer_, _msg, (int)msg_type, DataFormat.Default, msg); return(_msg); } catch (Exception e) { Type type = MessageTable.GetType(msg_type); FunDebug.LogError("FunapiMessage.CreateFunMessage - Failed to create '{0}' ({1})\n{2}", type, msg_type, e.ToString()); if (ParsingErrorCallback != null) { ParsingErrorCallback(type); } } return(null); }
static void MakeFromScratch(TypeModel model, string caption) { var obj = new Naked(); //try //{ Extensible.AppendValue(model, obj, 1, BinaryDataFormat.Default, "abc"); Extensible.AppendValue(model, obj, 2, BinaryDataFormat.Default, 456.7F); Extensible.AppendValue(model, obj, 3, BinaryDataFormat.FixedSize, 123); CanHazData clone; using (var ms = new MemoryStream()) { model.Serialize(ms, obj); string s = Program.GetByteString(ms.ToArray()); Assert.AreEqual("0A 03 61 62 63 15 9A 59 E4 43 1D 7B 00 00 00", s, caption); ms.Position = 0; clone = (CanHazData)model.Deserialize(ms, null, typeof(CanHazData)); } Assert.AreEqual("abc", clone.A, caption); Assert.AreEqual(456.7F, clone.B, caption); Assert.AreEqual(123, clone.C, caption); //} //catch //{ // Debug.WriteLine(caption); // throw; //} }
static void TestWriteExt <T>() where T : IExtTest, IExtensible, new() { const float SOME_VALUE = 987.65F; T obj = new T(); Extensible.AppendValue <float>(obj, 3, SOME_VALUE); byte[] raw = GetExtensionBytes(obj); Assert.Equal(5, raw.Length); //, "Extension Length"); Assert.Equal((3 << 3) | 5, raw[0]); //, "Prefix (3 Fixed32)"); byte[] tmp = BitConverter.GetBytes(SOME_VALUE); if (!BitConverter.IsLittleEndian) { Array.Reverse(tmp); } Assert.Equal(tmp[0], raw[1]); //, "Float32 Byte 0"); Assert.Equal(tmp[1], raw[2]); //, "Float32 Byte 1"); Assert.Equal(tmp[2], raw[3]); //, "Float32 Byte 2"); Assert.Equal(tmp[3], raw[4]); //, "Float32 Byte 3"); float readBack = Extensible.GetValue <float>(obj, 3); Assert.Equal(SOME_VALUE, readBack); //, "read back"); BiggerObject big = Serializer.ChangeType <T, BiggerObject>(obj); Assert.Equal(SOME_VALUE, big.SomeFloat); //, "deserialize"); }
// For Multicast messages public static FunMulticastMessage CreateFunMessage(object msg, MulticastMessageType msg_type) { if (msg is Enum) { msg = (Int32)msg; } FunMulticastMessage _msg = new FunMulticastMessage(); Extensible.AppendValue(serializer_, _msg, (int)msg_type, DataFormat.Default, msg); return(_msg); }
private void AppendReferences(ItemContainer itemContainer) { if (itemContainer == null) { throw new ArgumentNullException("itemContainer"); } var idx = 2; foreach (var reference in _propertyManager.GetInfos(itemContainer.Item).Where(x => x.InfoType == PropertyManagerInfoType.Reference).Select(info => info.GetReferenceValue <IIdentifyable>(itemContainer.Item))) { var tag = _domainMapper.Type2Tag(reference); Extensible.AppendValue(itemContainer, idx++, tag); Extensible.AppendValue(itemContainer, idx++, reference.Id); } }
public void RuntimeMessageContract() { var adhoc = new AdHoc(); Extensible.AppendValue <double>(adhoc, 1, 0.0); Extensible.AppendValue <int>(adhoc, 2, 1); Extensible.AppendValue <string>(adhoc, 3, "2"); Extensible.AppendValue <bool>(adhoc, 4, true); var clone = Serializer.DeepClone(adhoc); Assert.AreNotSame(clone, adhoc); Assert.AreEqual(0.0, Extensible.GetValue <double>(clone, 1)); Assert.AreEqual(1, Extensible.GetValue <int>(clone, 2)); Assert.AreEqual("2", Extensible.GetValue <string>(clone, 3)); Assert.AreEqual(true, Extensible.GetValue <bool>(clone, 4)); }
public bool SendText(string chat_channel, string text) { if (!Connected) { return(false); } KeyValuePair <string, OnChannelMessage> p; lock (channel_lock_) { if (!channel_info_.TryGetValue(chat_channel, out p)) { DebugUtils.Log("You are not in the chat channel: {0}", chat_channel); return(false); } } if (encoding_ == FunEncoding.kJson) { Dictionary <string, object> mcast_msg = new Dictionary <string, object>(); mcast_msg["_channel"] = chat_channel; mcast_msg["_bounce"] = true; mcast_msg["sender"] = p.Key; mcast_msg["text"] = text; multicasting_.SendToChannel(mcast_msg); } else { FunChatMessage chat_msg = new FunChatMessage(); chat_msg.sender = p.Key; chat_msg.text = text; FunMulticastMessage mcast_msg = new FunMulticastMessage(); mcast_msg.channel = chat_channel; mcast_msg.bounce = true; Extensible.AppendValue(mcast_msg, (int)MulticastMessageType.chat, chat_msg); multicasting_.SendToChannel(mcast_msg); } return(true); }
static void TestWriteNull <T>() where T : IExtTest, IExtensible, new() { Extensible.AppendValue <string>(null, 1, "hi"); }
public void SendData() { DateTime dateTime = DateTime.UtcNow.Date; String now = dateTime.ToString("yyyy-MM-dd") + " 00:00:00"; WriteLog("Start SendData"); try { WayPoint wp = new WayPoint(); using (MySqlConnection connMysql = DBUtils.GetDBConnection()) { WriteLog("Try connect db"); connMysql.Open(); Reconnect(); while (true) { WriteLog("try factory.CreateConnection to DRVN"); //IConnection conn = CreateConnection(); ///////////////////////////////////// //IModel channel = conn.CreateModel(); //bool status = conn.IsOpen; //WriteLog("status connect drvn: " + status.ToString()); WriteLog("Start connect db"); try { string sql = "SELECT DISTINCT(carlog_id), YEAR(carlog_thoigian) as year,MONTH(carlog_thoigian) as month,DAY(carlog_thoigian) as day, HOUR(carlog_thoigian) as hour,MINUTE(carlog_thoigian) as minute, SECOND(carlog_thoigian) as second, carlog_bienso,carlog_kinhdo,carlog_vido,carlog_vantoc_tb,carlog_laixe_uid FROM tbl_carlogsentdrvn LEFT JOIN tbl_laixe ON carlog_laixe_uid = laixe_uid WHERE carlog_thoigian != '0000-00-00 00:00:00' AND carlog_sentdrvn = 0 AND carlog_thoigian >= '" + now + "' ORDER BY carlog_thoigian ASC LIMIT 0,1000"; WriteLog(sql); MySqlCommand cmd = new MySqlCommand(sql, connMysql); string carlogid = ""; using (MySqlDataReader reader = cmd.ExecuteReader()) { string carlogbienso = ""; string carlogbiensoorigin = ""; double carlogx; double carlogy; int year, month, day, hour, minute, second; if (reader.HasRows == true) { WriteLog("HasRows"); while (reader.Read()) { carlogid += reader.GetString("carlog_id"); carlogid += ","; carlogbiensoorigin = reader.GetString("carlog_bienso").ToString(); carlogbienso = string.Concat(reader.GetString("carlog_bienso").Where(char.IsLetterOrDigit)); carlogx = reader.GetDouble("carlog_kinhdo"); carlogy = reader.GetDouble("carlog_vido"); year = reader.GetInt32("year"); month = reader.GetInt32("month"); day = reader.GetInt32("day"); hour = reader.GetInt32("hour"); minute = reader.GetInt32("minute"); second = reader.GetInt32("second"); wp.datetime = DateTimeToUnixTimestamp(new DateTime(year, month, day, hour, minute, second, DateTimeKind.Local)); wp.door = false; // Dong mo cua xe ,Chua co trong db //wp.driver = "123451234512345"; if (reader["carlog_laixe_uid"] == DBNull.Value || reader.GetString("carlog_laixe_uid") == "") { wp.driver = "123451234512345"; } else { wp.driver = reader.GetString("carlog_laixe_uid"); } wp.ignition = true; // So may,Chua co trong db wp.speed = reader.GetFloat("carlog_vantoc_tb"); wp.vehicle = carlogbienso; wp.x = carlogx; wp.y = carlogy; BaseMessage msg = new BaseMessage(); msg.msgType = BaseMessage.MsgType.WayPoint; Extensible.AppendValue <WayPoint>(msg, ufms.BaseMessage.MsgType.WayPoint.GetHashCode(), wp); byte[] b = this.Serialize(msg); channel.BasicPublish("tracking.ctchaulong", "track1", null, b); WriteLog("-Sent data: BS: " + wp.vehicle.ToString() + "-Id: " + reader.GetString("carlog_id") + "- datetime: " + wp.datetime + "- wp.door: " + wp.door + "- wp.driver: " + wp.driver + "-wp.ignition: " + wp.ignition + "-wp.speed:" + wp.speed + "-wp.vehicle: " + wp.vehicle + "-wp.x: " + carlogx + "-wp.y: " + wp.y); } } } Console.WriteLine("carlogid.Length.ToString(): " + carlogid.Length.ToString()); if (carlogid.Length > 0) { carlogid = carlogid.Substring(0, carlogid.Length - 1); Console.WriteLine("carlogid : " + carlogid); string sqlDelete = "DELETE FROM tbl_carlogsentdrvn WHERE carlog_id IN (" + carlogid + ") "; WriteLog(sqlDelete); MySqlCommand commandDelete = connMysql.CreateCommand(); commandDelete.CommandText = sqlDelete; commandDelete.ExecuteNonQuery(); string sqlUpdate = "UPDATE tbl_carlog SET carlog_sentdrvn = 1 WHERE carlog_id IN (" + carlogid + ")"; WriteLog(sqlUpdate); MySqlCommand commandUpdate = connMysql.CreateCommand(); commandUpdate.CommandText = sqlUpdate; commandUpdate.ExecuteNonQuery(); } Thread.Sleep(10000); //Reconnect(); } catch (Exception ex) { WriteLog("ex connect db: " + ex.Message); connMysql.Close(); connMysql.Open(); //RestartService(); Thread.Sleep(1000); } } } } catch (Exception ex) { WriteLog("ex connect drvn: " + ex.ToString()); //Cleanup(); Reconnect(); //RestartService(); } }
public void OnDeserializing() { var productsListIsEmpty = this.Products != null && this.Products.Count == 0; Extensible.AppendValue(this, 101, productsListIsEmpty); }