Exemple #1
0
 public Message ToMessage()
 {
     Message msg = new Message();
     msg.Type = MessageType.Execute;
     using (MemoryStream mem = new MemoryStream())
     {
         using (BinaryWriter writer = new BinaryWriter(mem))
         {
             writer.Write(Command);
             writer.Write(ArgumentCount);
             foreach (var arg in Arguments)
             {
                 writer.Write(arg);
             }
             writer.Write(MemoryLimit);
             writer.Write(OutputLimit);
             writer.Write(TimeLimit);
             writer.Write((int)Restriction);
             writer.Write(InputBlob);
         }
         msg.Body = mem.ToArray();
     }
     msg.Size = msg.Body.Length;
     return msg;
 }
 public Message Receive(MessageType expectedType)
 {
     Message msg = new Message(reader);
     if (msg.Type != expectedType)
     {
         throw new Exception("收到的消息类型不匹配");
     }
     return msg;
 }
 public Message ToMessage()
 {
     Message msg = new Message();
     msg.Type = MessageType.GetBlob;
     using (MemoryStream mem = new MemoryStream())
     {
         using (BinaryWriter writer = new BinaryWriter(mem))
         {
             writer.Write(Name);
         }
         msg.Body = mem.ToArray();
     }
     msg.Size = msg.Body.Length;
     return msg;
 }
 internal ExecuteResult(Message msg)
 {
     using (MemoryStream mem = new MemoryStream(msg.Body))
     {
         using (BinaryReader reader = new BinaryReader(mem))
         {
             ExitStatus = reader.ReadInt32();
             Type = (ExecuteResultType)reader.ReadInt32();
             OutputBlob = reader.ReadString();
             ErrorBlob = reader.ReadString();
             Memory = reader.ReadInt64();
             UserTime = reader.ReadInt32();
             RealTime = reader.ReadInt32();
         }
     }
 }
 public void Send(Message msg)
 {
     msg.Send(writer);
 }
        /// <summary>
        /// 判断某File是否存在
        /// </summary>
        public bool HasFile(string name)
        {
            using (MemoryStream mem = new MemoryStream())
            {
                using (BinaryWriter bw = new BinaryWriter(mem))
                {
                    bw.Write(name);
                }
                Message msg = new Message
                {
                    Type = MessageType.HasFile,
                    Body = mem.ToArray()
                };
                msg.Size = msg.Body.Length;
                session.Send(msg);

                Message reply = session.Receive(MessageType.HasFileReply);
                return BitConverter.ToInt32(reply.Body, 0) == 1;
            }
        }