Example #1
0
 void read(Link link, Data data)
 {
     if (data.Intern)
     {
         var cmd = StringEnum <InternalCommands>(data.Cmds[0]);
         link.debugCommand(false, link, cmd);
         if (cmd == InternalCommands.connect)
         {
             write(link, true, EnumString(InternalCommands.ok));
             lock (link) {
                 link.ID    = SGuid.Parse(data.Cmds[1]);
                 link.state = LinkStates.ready;
                 joinClient?.Invoke(link.ID);
             }
             debugNotice(this);
         }
         if (cmd == InternalCommands.disconnect && link.state == LinkStates.ready)
         {
             disconnect(link, StringEnum <LeaveReason>(data.Cmds[1]), data.Cmds[2]);
         }
     }
     else
     {
         write(link, true, EnumString(InternalCommands.ok));
         foreach (string cmd in data.Cmds)
         {
             received(Directive.Parse(cmd));
         }
     }
 }
Example #2
0
 void read(Data data)
 {
     if (data.Intern)
     {
         var cmd = StringEnum <InternalCommands>(data.Cmds[0]);
         link.debugCommand(false, link, cmd);
         if (cmd == InternalCommands.ok && link.state == LinkStates.creating)
         {
             lock (link)
                 link.state = LinkStates.ready;
             connected?.Invoke(true);
             debugNotice(this);
         }
         if (cmd == InternalCommands.disconnect && link.state == LinkStates.ready)
         {
             _disconnect(StringEnum <LeaveReason>(data.Cmds[1]), data.Cmds[2]);
         }
     }
     else
     {
         write(true, EnumString(InternalCommands.ok));
         foreach (string cmd in data.Cmds)
         {
             received(Directive.Parse(cmd));
         }
     }
 }