public static void Serialize(INetworkMessage message, Stream outputStream) { using (var writer = new MyWriter(outputStream, Encoding.UTF8, leaveOpen: true)) { Serialize(message, writer); } /* * using (var writer = new MyWriter(outputStream, Encoding.UTF8)) * { * int messageSize = TypeIndexSize + new SerializedSizeMeasurer(Encoding.UTF8).Measure(message); * Assert.IsFalse(messageSize > MaxMessageSizeBytes, $"Message too large: {messageSize} > {MaxMessageSizeBytes}"); * Debug.Log("messageSize: " + messageSize); * * writer.Serialize(ref messageSize); * Serialize(message, writer); * }*/ /*using (var stream = new MemoryStream(WriteBuffer)) * using (var writer = new MyWriter(stream, Encoding.UTF8)) * { * Serialize(message, writer); * * int messageSize = (int)stream.Position; * Assert.IsFalse(messageSize > MaxMessageSizeBytes, $"Message too large: {messageSize} > {MaxMessageSizeBytes}"); * Debug.Log("sizeBytes: " + messageSize); * * outputStream.Write(BitConverter.GetBytes(messageSize), 0, MessageSizeSize); * outputStream.Write(WriteBuffer, 0, messageSize); * }*/ }
private static MyWriterInt MultWithLog() { return(LogNumber(3).Bind( a => LogNumber(5).Bind( b => TellHelper(string.Format("multiplying {0} and {1}", a, b)).BindIgnoringLeft( MyWriter.Return(a * b))))); }
public void Save(MyWriter mw) { mw.Save(pcbName); mw.Save(pcbWidth); mw.Save(pcbHeight); mw.Save(spareWidth); mw.Save(_pixelSize); mw.Save(useMainBoardBarcode); mw.Save(useSubBoardBarcode); mw.Save(customer); mw.Save(halftoneHeight); mw.Save(AllMarkPoints.Count); mw.Save(SubBoards.Count); mw.Save(Components.Count); mw.SaveLineEnd(); foreach (var item in AllMarkPoints) { item.Save(mw); } foreach (var item in SubBoards) { item.Save(mw); } foreach (var item in Components) { mw.Save(item.WType); item.Save(mw); } }
public override void Save(MyWriter mw) { mw.Save(minValue); mw.Save(leftValue); mw.Save(rightValue); mw.Save(maxValue); }
private static void Serialize(INetworkMessage message, MyWriter writer) { ushort typeIndex = GetTypeIndexOf(message.GetType()); writer.Serialize(ref typeIndex); message.Serialize(writer); }
/// <summary> /// 保存数据到文件 /// </summary> /// <param name="sw">指示要写入的文件的自定义流类对象</param> public override void Save(MyWriter mw) { mw.Save(_colors.Count); foreach (ColorRange cr in _colors) { cr.SaveTo(mw); } }
public void BindRightIdentity() { // m >>= return == m var m = MyWriter.Return(10); var writerMonad1 = m.Bind(MyWriter.Return); var writerMonad2 = m; var pair1 = writerMonad1.RunWriter; var pair2 = writerMonad2.RunWriter; Assert.That(pair1.Item1, Is.EqualTo(pair2.Item1)); Assert.That(pair1.Item2.List, Is.EqualTo(pair2.Item2.List)); }
private static void Main(string[] args) { MyWriter writer = new MyWriter(); DateTime earthTime = DateTime.Now; double earthPrintTime = earthTime.AddSeconds(-2).Second; var earthPrintTimeAfternoon = earthPrintTime + 12; var firstEarthTime = writer.GetHelloVenusString(); var firstEarthTimeSplit = firstEarthTime.Split('\n'); }
public static byte[] Serialize(INetworkMessage message) { var stream = new MemoryStream(); using (var writer = new MyWriter(stream)) { byte typeIndex = GetTypeIndexOf(message.GetType()); writer.Serialize(ref typeIndex); message.Serialize(writer); return(stream.ToArray()); } }
static void Main(string[] args) { MyWriter writer = new MyWriter(); if (writer.IsHelloMercuryString(Assembly.GetExecutingAssembly().FullName)) { Console.WriteLine(writer.GetHelloMercuryString()); } else { Console.WriteLine(writer.GetHelloGenericWorldString()); } }
public void StateWriterExtensions_CommitAsync2() { var writer = new MyWriter(); var t = writer.CommitAsync(CancellationToken.None); writer.CommitAsyncTask.SetResult("foo"); t.Wait(); var s = (Task <object>)t; Assert.AreEqual("foo", s.Result); }
public void Tell() { var writer = TellHelper("Message 1").BindIgnoringLeft( TellHelper("Message 2")).BindIgnoringLeft( MyWriter.Return(42)); var tuple = writer.RunWriter; var a = tuple.Item1; var w = tuple.Item2; Assert.That(a, Is.EqualTo(42)); Assert.That(w.List, Is.EqualTo(new[] { "Message 1", "Message 2" })); }
public void BindLeftIdentity() { // (return x) >>= f == f x const int x = 5; Func <int, MyWriterString> f = n => MyWriter.Return(Convert.ToString(n * n)); var writerMonad1 = MyWriter.Return(x).Bind(f); var writerMonad2 = f(x); var pair1 = writerMonad1.RunWriter; var pair2 = writerMonad2.RunWriter; Assert.That(pair1.Item1, Is.EqualTo(pair2.Item1)); Assert.That(pair1.Item2.List, Is.EqualTo(pair2.Item2.List)); }
public void BindAssociativity() { // (m >>= f) >>= g == m >>= (\x -> f x >>= g) Func <int, MyWriterDouble> f = n => MyWriter.Return(Convert.ToDouble(n * n + 0.1m)); Func <double, MyWriterString> g = d => MyWriter.Return(Convert.ToString(d)); var m = MyWriter.Return(5); var writerMonad1 = m.Bind(f).Bind(g); var writerMonad2 = m.Bind(x => f(x).Bind(g)); var pair1 = writerMonad1.RunWriter; var pair2 = writerMonad2.RunWriter; Assert.That(pair1.Item1, Is.EqualTo(pair2.Item1)); Assert.That(pair1.Item2.List, Is.EqualTo(pair2.Item2.List)); }
public void Censor() { var writer1 = TellHelper("Message 1").BindIgnoringLeft( TellHelper("Message 2")).BindIgnoringLeft( MyWriter.Return(42)); var writer2 = MyWriter.Censor(msgs => new ListMonoid <string>(msgs.List.Where(msg => msg.EndsWith("2"))), writer1); var tuple = writer2.RunWriter; var a = tuple.Item1; var w = tuple.Item2; Assert.That(a, Is.EqualTo(42)); Assert.That(w.List, Is.EqualTo(new[] { "Message 2" })); }
public virtual void Save(MyWriter mw) { mw.Save(ShowShape is RectangleMode); mw.Save(ShowShape.X); mw.Save(ShowShape.Y); mw.Save(ShowShape.Width); mw.Save(ShowShape.Height); mw.Save(ShowShape.Angle); mw.SaveLineEnd(); foreach (var item in uis) { item.Save(mw); } mw.SaveLineEnd(); }
public void Listens() { var writer = TellHelper("Message 1").BindIgnoringLeft( TellHelper("Message 2")).BindIgnoringLeft( MyWriter.Return(42)).Listens( msgs => String.Join(", ", msgs.List)); var tuple = writer.RunWriter; var a = tuple.Item1.Item1; var b = tuple.Item1.Item2; var w = tuple.Item2; Assert.That(a, Is.EqualTo(42)); Assert.That(b, Is.EqualTo("Message 1, Message 2")); Assert.That(w.List, Is.EqualTo(new[] { "Message 1", "Message 2" })); }
public void Pass() { var writer1 = TellHelper("Message 1").BindIgnoringLeft( TellHelper("Message 2")).BindIgnoringLeft( MyWriter.Return(42)); Func <ListMonoid <string>, ListMonoid <string> > f = msgs => new ListMonoid <string>(msgs.List.Where(msg => msg.EndsWith("2"))); var writer2 = MyWriter.Pass(writer1.Listen().Bind(t => MyWriter.Return(Tuple.Create(t.Item1, f)))); var tuple = writer2.RunWriter; var a = tuple.Item1; var w = tuple.Item2; Assert.That(a, Is.EqualTo(42)); Assert.That(w.List, Is.EqualTo(new[] { "Message 2" })); }
/// <summary> /// 保存 /// </summary> /// <param name="writer"></param> public void Save(MyWriter writer) { writer.Write(cellCountX); writer.Write(cellCountZ); writer.Write(wrapping); foreach (var item in cells) { item.Save(writer); } writer.Write(units.Count); foreach (var item in units) { item.Save(writer); } }
public void LoggingStateWriter_Errors() { var sb = new StringBuilder(); using (var sw = new StringWriter(sb)) { using var w = new MyWriter { Throw = true }; using var writer = new LoggingStateWriter(w, sw); Assert.ThrowsException <NotImplementedException>(() => _ = writer.GetItemWriter("bar", "foo")); Assert.ThrowsException <NotImplementedException>(() => writer.DeleteItem("bar", "foo")); Assert.ThrowsException <NotImplementedException>(() => writer.Rollback()); Assert.ThrowsException <NotImplementedException>(() => writer.CommitAsync().GetAwaiter().GetResult()); Assert.ThrowsException <NotImplementedException>(() => writer.Dispose()); w.Throw = false; } var log = sb.ToString(); foreach (var entry in new[] { "GetItemWriter(bar, foo)/Start", "GetItemWriter(bar, foo)/Error", "GetItemWriter(bar, foo)/Stop", "DeleteItem(bar, foo)/Start", "DeleteItem(bar, foo)/Error", "DeleteItem(bar, foo)/Stop", "Rollback()/Start", "Rollback()/Error", "Rollback()/Stop", "CommitAsync()/Start", "CommitAsync()/Error", "CommitAsync()/Stop", "Dispose()/Start", "Dispose()/Error", "Dispose()/Stop", }) { Assert.IsTrue(log.Contains(entry), "Not found: '" + entry + "'"); } }
public void Listen() { var writer = TellHelper("Message 1").BindIgnoringLeft( TellHelper("Message 2")).BindIgnoringLeft( MyWriter.Return(42)).Listen(); var tuple = writer.RunWriter; var a = tuple.Item1.Item1; var w1 = tuple.Item1.Item2; var w2 = tuple.Item2; Assert.That(a, Is.EqualTo(42)); Assert.That(w1.List, Is.EqualTo(w2.List)); Assert.That(w1.List, Is.SameAs(w2.List)); Assert.That(w1.List, Is.EqualTo(new[] { "Message 1", "Message 2" })); Assert.That(w2.List, Is.EqualTo(new[] { "Message 1", "Message 2" })); }
public void StateWriterExtensions_CommitAsync3() { var writer = new MyWriter(); var res = default(int); var p = Progress.Create <int>(x => res = x); var t = writer.CommitAsync(p); writer.CommitAsyncTask.SetResult("foo"); t.Wait(); var s = (Task <object>)t; Assert.AreEqual("foo", s.Result); Assert.AreEqual(42, res); }
/// <summary> /// 保存数据到文件 /// </summary> /// <param name="sw">指示要写入的文件的自定义流类对象</param> public void SaveTo(MyWriter sw) { //sw.Save((int)operation); //sw.Save(redUsed); //sw.Save(redUp); //sw.Save(redDown); //sw.Save(greenUsed); //sw.Save(greenUp); //sw.Save(greenDown); //sw.Save(blueUsed); //sw.Save(blueUp); //sw.Save(blueDown); //sw.Save(grayUsed); //sw.Save(grayUp); //sw.Save(grayDown); //sw.SaveLineEnd(); //sw.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12}", (int)operation,redUsed,redUp,redDown,greenUsed,greenUp,greenDown,blueUsed,blueUp,blueDown,grayUsed,grayUp,grayDown); }
public static void Test() { DataContractSerializer dcs = new DataContractSerializer(typeof(List <string>)); MemoryStream ms = new MemoryStream(); List <string> list = new List <string> { "Hello", "", "world" }; dcs.WriteObject(ms, list); Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray())); Console.WriteLine(); ms.SetLength(0); XmlWriter myWriter = new MyWriter(XmlDictionaryWriter.CreateTextWriter(ms)); dcs.WriteObject(myWriter, list); myWriter.Flush(); Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray())); }
public void LoggingStateWriter_Basics() { var sb = new StringBuilder(); using (var sw = new StringWriter(sb)) { using var w = new MyWriter(); using var writer = new LoggingStateWriter(w, sw); Assert.AreEqual(CheckpointKind.Full, writer.CheckpointKind); var s = writer.GetItemWriter("bar", "foo"); Assert.IsNotNull(s); writer.DeleteItem("bar", "foo"); writer.Rollback(); writer.CommitAsync().Wait(); } var log = sb.ToString(); foreach (var entry in new[] { "GetItemWriter(bar, foo)/Start", "GetItemWriter(bar, foo)/Stop", "DeleteItem(bar, foo)/Start", "DeleteItem(bar, foo)/Stop", "Rollback()/Start", "Rollback()/Stop", "CommitAsync()/Start", "CommitAsync()/Stop", "Dispose()/Start", "Dispose()/Stop", }) { Assert.IsTrue(log.Contains(entry), "Not found: '" + entry + "'"); } }
/// <summary> /// 保存 /// </summary> public static void Save(string fileName, HexGrid hexGrid) { if (string.IsNullOrEmpty(fileName)) { Debug.Log("Save fileName is null or empty"); return; } var filePath = Path.Combine(savePath, fileName + saveFileEnd); using (var bw = new BinaryWriter( File.Open(filePath, FileMode.Create))) { var writer = new MyWriter(bw); writer.Write(nowVersionHeader); hexGrid.Save(writer); #if test writer.PushText(); #endif } }
void SaveState(IComponent c) { if (isRemoval) { throw new InvalidOperationException("Can't save the state of a Component in a Removal ComponentChange!"); } componentType = c.GetType(); var stream = new MemoryStream(); using (var writer = new MyWriter(stream)) { var component = c as IUnifiedSerializable; if (component == null) { return; } component.Serialize(writer); componentData = stream.ToArray(); } }
public void Save(MyWriter mw) { mw.Save(id); mw.Save(ShowShape.X); mw.Save(ShowShape.X); mw.Save(ShowShape.Y); mw.Save(ShowShape.Width); mw.Save(ShowShape.Height); mw.Save(ShowShape.Angle); mw.Save(MarkPoints.Count); mw.Save(Components.Count); mw.SaveLineEnd(); foreach (var item in MarkPoints) { item.Save(mw); } foreach (var item in Components) { mw.Save(item.WType); item.Save(mw); } }
public override void Save(MyWriter mw) { mw.Save(_check); }
private static MyWriterUnit TellHelper(string s) { var listMonoid = new ListMonoid <string>(s); return(MyWriter.Tell(listMonoid)); }