예제 #1
0
        public void ExecuteNonQuery(Serialisable s)
        {
            s.Put(asy);
            var b = asy.Receive();

            if (b == Types.Exception)
            {
                inTransaction = false;
            }
            else
            {
                switch (s.type)
                {
                case Types.SBegin: inTransaction = true; break;

                case Types.SRollback:
                case Types.SCommit: inTransaction = false; break;
                }
            }
        }
예제 #2
0
        public DocArray Get(Serialisable tn)
        {
            asy.Write(Types.DescribedGet);
            tn.Put(asy);
            asy.Flush();
            var b = asy.ReadByte();

            if (b == (byte)Types.Exception)
            {
                inTransaction = false;
                asy.GetException();
            }
            if (b == (byte)Types.Done)
            {
                description = SDict <int, string> .Empty;
                var n = asy.rbuf.GetInt();
                for (var i = 0; i < n; i++)
                {
                    description += (i, asy.rbuf.GetString());
                }
                return(new DocArray(asy.rbuf.GetString()));
            }
            throw new Exception("??");
        }
 public override void Put(StreamBase f)
 {
     base.Put(f);
     col.Put(f);
     f.WriteByte((byte)(desc ? 1 : 0));
 }