Пример #1
0
        bool onReturn(Network.ByteInStream stream)
        {
            int returnId = stream.ReadInt();

            RPCResult result;

            if (!results.TryGetValue(returnId, out result))
            {
                log.Error("No RPC result with the return index #{0} pending", returnId);
                return(false);
            }

            if (stream.ReadBool())
            {
                Reader reader;

                if (!readers.TryGetTypeValue(result.Type, out reader))
                {
                    return(false);
                }

                result.BoxedValue = reader(stream, result.Type);
            }

            log.Info("Received result for {0}", result.Name);

            result.IsDone = true;
            result.Done();

            results.Remove(result.ReturnIndex);

            return(true);
        }
Пример #2
0
 public bool OnPacket(byte _, Context context, Network.ByteInStream stream)
 {
     if (stream.ReadBool())
     {
         return(onCall(stream));
     }
     else
     {
         return(onReturn(stream));
     }
 }