Exemplo n.º 1
0
        public override string Run(string id)
        {
            CmdTask task   = CmdTasks.Remove(id);
            string  status = task?.Status;

            task?.Dispose();
            return(status);
        }
Exemplo n.º 2
0
        public override object[] Run(string id)
        {
            CmdTask task = CmdTasks.Get(id);

            if (task == null)
            {
                return(new object[0]);
            }
            return(new object[] { task.Status, task.Queue.Count });
        }
Exemplo n.º 3
0
        public static void WriteLoop(Process parentProc, MessageContext ctx, StreamWriter writer, bool verbose, char delimiter = '\0')
        {
            JsonSerializer jsonSerializer = new JsonSerializer()
            {
                Formatting        = Formatting.None,
                NullValueHandling = NullValueHandling.Ignore
            };

            using (JsonTextWriter jsonWriter = new JsonTextWriter(writer)) {
                for (Message msg = null; !(parentProc?.HasExited ?? false) && (msg = ctx.WaitForNext()) != null;)
                {
                    if (msg.Value is IEnumerator enumerator)
                    {
                        Console.Error.WriteLine($"[sharp] New CmdTask: {msg.UID}");
                        CmdTasks.Add(new CmdTask(msg.UID, enumerator));
                        msg.Value = msg.UID;
                    }

                    byte[] data = msg.Value as byte[];
                    if (data != null)
                    {
                        msg.RawSize = data.Length;
                        msg.Value   = null;
                    }

                    jsonSerializer.Serialize(jsonWriter, msg);
                    jsonWriter.Flush();
                    writer.Write(delimiter);
                    writer.Write('\n');
                    writer.Flush();

                    if (data != null)
                    {
                        writer.BaseStream.Write(data, 0, data.Length);
                        writer.BaseStream.Flush();
                    }
                }
            }
        }
Exemplo n.º 4
0
 public override object[] Run(string id, int?max)
 {
     return(CmdTasks.Get(id)?.WaitBatch(max ?? 0));
 }
Exemplo n.º 5
0
 public override object[] Run(string id, bool?skip)
 {
     return(CmdTasks.Get(id)?.Wait(skip ?? false));
 }
Exemplo n.º 6
0
 public override object Run(string id)
 {
     return(CmdTasks.Get(id)?.Current);
 }