public override string Run(string id) { CmdTask task = CmdTasks.Remove(id); string status = task?.Status; task?.Dispose(); return(status); }
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 }); }
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(); } } } }
public override object[] Run(string id, int?max) { return(CmdTasks.Get(id)?.WaitBatch(max ?? 0)); }
public override object[] Run(string id, bool?skip) { return(CmdTasks.Get(id)?.Wait(skip ?? false)); }
public override object Run(string id) { return(CmdTasks.Get(id)?.Current); }