Inheritance: IDisposable
    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);
         * }*/
    }
Example #2
0
 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)))));
 }
Example #3
0
        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);
            }
        }
Example #4
0
 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);
    }
Example #6
0
 /// <summary>
 /// 保存数据到文件
 /// </summary>
 /// <param name="sw">指示要写入的文件的自定义流类对象</param>
 public override void Save(MyWriter mw)
 {
     mw.Save(_colors.Count);
     foreach (ColorRange cr in _colors)
     {
         cr.SaveTo(mw);
     }
 }
Example #7
0
        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));
        }
Example #8
0
        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');
        }
Example #9
0
    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());
        }
    }
Example #10
0
        static void Main(string[] args)
        {
            MyWriter writer = new MyWriter();

            if (writer.IsHelloMercuryString(Assembly.GetExecutingAssembly().FullName))
            {
                Console.WriteLine(writer.GetHelloMercuryString());
            }
            else
            {
                Console.WriteLine(writer.GetHelloGenericWorldString());
            }
        }
Example #11
0
        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);
        }
Example #12
0
        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" }));
        }
Example #13
0
        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));
        }
Example #14
0
        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));
        }
Example #15
0
        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" }));
        }
Example #16
0
 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();
 }
Example #17
0
        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" }));
        }
Example #18
0
        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" }));
        }
Example #19
0
    /// <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);
        }
    }
Example #20
0
        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 + "'");
            }
        }
Example #21
0
        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" }));
        }
Example #22
0
        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);
        }
Example #23
0
 /// <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()));
    }
Example #25
0
        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 + "'");
            }
        }
Example #26
0
    /// <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
        }
    }
Example #27
0
    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();
        }
    }
Example #28
0
        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);
            }
        }
Example #29
0
 public override void Save(MyWriter mw)
 {
     mw.Save(_check);
 }
Example #30
0
        private static MyWriterUnit TellHelper(string s)
        {
            var listMonoid = new ListMonoid <string>(s);

            return(MyWriter.Tell(listMonoid));
        }