Inheritance: Serializing
示例#1
0
 public Filter(Deserializer rd)
 {
     long count = rd.DeserializeLong();
     Tablenames = new HashSet<string>();
     while (count > 0) {
         Tablenames.Add(rd.DeserializeString());
         count--;
     }
 }
示例#2
0
 public static Message DeserializeMessage(Deserializer rd)
 {
     Magic m = (Magic)rd.DeserializeByte();
     switch (m) {
         case Magic.Transaction:
             return new Transaction(rd);
         case Magic.Quit:
             return new Quit(rd);
         case Magic.Id:
             return new Id(rd);
         case Magic.StartStream:
             return new StartStream();
         case Magic.Ok:
             return new Ok();
         case Magic.Filter:
             return new Filter(rd);
         case Magic.TablePos:
             return new TablePos(rd);
         case Magic.OpenLog:
             return new OpenLog();
         default:
             throw new Exception("unhandled message type '" + m + "'");
     }
 }
 private void InputThreadFunc() {
     var reader = new Deserializer(_stream);
     try {
         while (!IsStopped) {
             _inputAlive = -1;
             Message msg = Message.DeserializeMessage(reader);
             _inputAlive = 0;
             while (State != RunState.Stopped) {
                 if (_inputSem.Wait(100)) {
                     ScheduleTask(() => { try { ProcessMessage(msg); } finally { _inputSem.Release(); } });
                     break;
                 }
             }
         }
     } catch (Exception e) {
         Stop(e);
     }
     reader.Close();
 }
示例#4
0
 public Transaction(Deserializer rd)
 {
     LogReadResult = rd.DeserializeLogReadResult();
 }
示例#5
0
 public TablePos(Deserializer rd)
 {
     Table = rd.DeserializeString();
     Pos = rd.DeserializeULong();
 }
示例#6
0
 public Quit(Deserializer rd)
 {
     Message = rd.DeserializeString();
 }
示例#7
0
 public Id(Deserializer rd)
 {
     DatabaseName = rd.DeserializeString();
     Guid = rd.DeserializeString();
     FirstUserOid = rd.DeserializeULong();
     LastUserOid = rd.DeserializeULong();
 }