Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
ConsoleOut.cs
1using System;
2using System.IO;
3using System.Text;
4using System.Threading.Tasks;
6
8{
13 public delegate void CustomWriter(TextWriter Output);
14
19 public delegate Task CustomAsyncWriter(TextWriter Output);
20
25 public static class ConsoleOut
26 {
27 private static ConsoleColor foregroundColor = System.Console.ForegroundColor;
28 private static ConsoleColor backgroundColor = System.Console.BackgroundColor;
29
33 public static Encoding Encoding => System.Console.Out.Encoding;
34
38 public static IFormatProvider FormatProvider => System.Console.Out.FormatProvider;
39
43 public static string NewLine => System.Console.Out.NewLine;
44
48 public static int WindowWidth => System.Console.WindowWidth;
49
53 public static int WindowLeft => System.Console.WindowLeft;
54
58 public static int WindowTop => System.Console.WindowTop;
59
63 public static int WindowHeight => System.Console.WindowHeight;
64
68 public static int CursorLeft => System.Console.CursorLeft;
69
73 public static int CursorTop => System.Console.CursorTop;
74
78 public static int CursorSize => System.Console.CursorSize;
79
83 public static ConsoleColor ForegroundColor
84 {
85 get => foregroundColor;
86 set
87 {
88 foregroundColor = value;
90 }
91 }
92
96 public static ConsoleColor BackgroundColor
97 {
98 get => backgroundColor;
99 set
100 {
101 backgroundColor = value;
103 }
104 }
105
110 public static void Write(string value)
111 {
112 if (!string.IsNullOrEmpty(value))
114 }
115
120 public static void Write(CustomWriter Writer)
121 {
122 Write(Writer, null, null);
123 }
124
131 public static void Write(CustomWriter Writer, ConsoleColor? ForegroundColor, ConsoleColor? BackgroundColor)
132 {
134 }
135
140 public static void Write(ulong value)
141 {
142 Write(value.ToString());
143 }
144
149 public static void Write(uint value)
150 {
151 Write(value.ToString());
152 }
153
159 public static void Write(string format, params object[] arg)
160 {
161 Write(string.Format(format, arg));
162 }
163
171 public static void Write(string format, object arg0, object arg1, object arg2)
172 {
173 Write(string.Format(format, arg0, arg1, arg2));
174 }
175
182 public static void Write(string format, object arg0, object arg1)
183 {
184 Write(string.Format(format, arg0, arg1));
185 }
186
192 public static void Write(string format, object arg0)
193 {
194 Write(string.Format(format, arg0));
195 }
196
201 public static void Write(float value)
202 {
203 Write(value.ToString());
204 }
205
210 public static void Write(long value)
211 {
212 Write(value.ToString());
213 }
214
219 public static void Write(int value)
220 {
221 Write(value.ToString());
222 }
223
228 public static void Write(double value)
229 {
230 Write(value.ToString());
231 }
232
237 public static void Write(decimal value)
238 {
239 Write(value.ToString());
240 }
241
248 public static void Write(char[] buffer, int index, int count)
249 {
250 Write(new string(buffer, index, count));
251 }
252
257 public static void Write(char[] buffer)
258 {
259 Write(new string(buffer));
260 }
261
266 public static void Write(char value)
267 {
268 Write(new string(value, 1));
269 }
270
275 public static void Write(bool value)
276 {
277 Write(value.ToString());
278 }
279
284 public static void Write(object value)
285 {
286 if (!(value is null))
287 Write(value.ToString());
288 }
289
294 public static async Task WriteAsync(string value)
295 {
296 if (!string.IsNullOrEmpty(value))
297 {
298 WorkItem Item = new ConsoleOutWriteString(value.ToString());
299
300 if (!await ConsoleWorker.Queue(Item))
301 return;
302
303 await Item.Wait();
304 }
305 }
306
313 public static Task WriteAsync(char[] buffer, int index, int count)
314 {
315 return WriteAsync(new string(buffer, index, count));
316 }
317
322 public static Task WriteAsync(char[] buffer)
323 {
324 return WriteAsync(new string(buffer));
325 }
326
331 public static Task WriteAsync(char value)
332 {
333 return WriteAsync(new string(value, 1));
334 }
335
341 {
342 return WriteAsync(Writer, null, null);
343 }
344
351 public static async Task WriteAsync(CustomAsyncWriter Writer, ConsoleColor? ForegroundColor, ConsoleColor? BackgroundColor)
352 {
354
355 if (!await ConsoleWorker.Queue(Item))
356 return;
357
358 await Item.Wait();
359 }
360
364 public static void WriteLine()
365 {
366 WriteLine(string.Empty);
367 }
368
373 public static void WriteLine(string value)
374 {
376 }
377
382 public static void WriteLine(ulong value)
383 {
384 WriteLine(value.ToString());
385 }
386
391 public static void WriteLine(uint value)
392 {
393 WriteLine(value.ToString());
394 }
395
401 public static void WriteLine(string format, params object[] arg)
402 {
403 WriteLine(string.Format(format, arg));
404 }
405
413 public static void WriteLine(string format, object arg0, object arg1, object arg2)
414 {
415 WriteLine(string.Format(format, arg0, arg1, arg2));
416 }
417
424 public static void WriteLine(string format, object arg0, object arg1)
425 {
426 WriteLine(string.Format(format, arg0, arg1));
427 }
428
433 public static void WriteLine(float value)
434 {
435 WriteLine(value.ToString());
436 }
437
443 public static void WriteLine(string format, object arg0)
444 {
445 WriteLine(string.Format(format, arg0));
446 }
447
452 public static void WriteLine(long value)
453 {
454 WriteLine(value.ToString());
455 }
456
461 public static void WriteLine(int value)
462 {
463 WriteLine(value.ToString());
464 }
465
470 public static void WriteLine(double value)
471 {
472 WriteLine(value.ToString());
473 }
474
479 public static void WriteLine(decimal value)
480 {
481 WriteLine(value.ToString());
482 }
483
490 public static void WriteLine(char[] buffer, int index, int count)
491 {
492 WriteLine(new string(buffer, index, count));
493 }
494
499 public static void WriteLine(char[] buffer)
500 {
501 WriteLine(new string(buffer));
502 }
503
508 public static void WriteLine(char value)
509 {
510 WriteLine(new string(value, 1));
511 }
512
517 public static void WriteLine(object value)
518 {
519 if (!(value is null))
520 WriteLine(value.ToString());
521 }
522
527 public static void WriteLine(bool value)
528 {
529 WriteLine(value.ToString());
530 }
531
536 public static async Task WriteLineAsync(string value)
537 {
538 WorkItem Item = new ConsoleOutWriteLineString(value ?? string.Empty);
539
540 if (!await ConsoleWorker.Queue(Item))
541 return;
542
543 await Item.Wait();
544 }
545
549 public static Task WriteLineAsync()
550 {
551 return WriteLineAsync(string.Empty);
552 }
553
558 public static Task WriteLineAsync(char value)
559 {
560 return WriteLineAsync(new string(value, 1));
561 }
562
567 public static Task WriteLineAsync(char[] buffer)
568 {
569 return WriteLineAsync(new string(buffer));
570 }
571
578 public static Task WriteLineAsync(char[] buffer, int index, int count)
579 {
580 return WriteLineAsync(new string(buffer, index, count));
581 }
582
586 public static void Beep()
587 {
589 }
590
595 public static void Flush()
596 {
597 Flush(false);
598 }
599
605 public static void Flush(bool Terminate)
606 {
607 FlushAsync(Terminate).Wait();
608 }
609
615 public static Task FlushAsync()
616 {
617 return FlushAsync(false);
618 }
619
625 public static async Task FlushAsync(bool Terminate)
626 {
628 {
629 TaskCompletionSource<bool> Result = new TaskCompletionSource<bool>();
630 if (await ConsoleWorker.Queue(new ConsoleFlush(Terminate, Result)))
631 await Result.Task;
632 }
633 }
634
638 public static TextWriter Writer
639 {
640 get => new ConsoleOutTextWriter();
641 }
642
646 private class ConsoleOutTextWriter : TextWriter
647 {
648 public ConsoleOutTextWriter()
649 {
650 }
651
652 public override Encoding Encoding => ConsoleOut.Encoding;
653 public override void Flush() => ConsoleOut.Flush();
654 public override Task FlushAsync() => ConsoleOut.FlushAsync();
655 public override void Write(char value) => ConsoleOut.Write(value);
656 public override void Write(ulong value) => ConsoleOut.Write(value);
657 public override void Write(uint value) => ConsoleOut.Write(value);
658 public override void Write(string format, params object[] arg) => ConsoleOut.Write(format, arg);
659 public override void Write(string format, object arg0, object arg1, object arg2) => ConsoleOut.Write(format, arg0, arg1, arg2);
660 public override void Write(string format, object arg0, object arg1) => ConsoleOut.Write(format, arg0, arg1);
661 public override void Write(string format, object arg0) => ConsoleOut.Write(format, arg0);
662 public override void Write(string value) => ConsoleOut.Write(value);
663 public override void Write(float value) => ConsoleOut.Write(value);
664 public override void Write(long value) => ConsoleOut.Write(value);
665 public override void Write(int value) => ConsoleOut.Write(value);
666 public override void Write(double value) => ConsoleOut.Write(value);
667 public override void Write(decimal value) => ConsoleOut.Write(value);
668 public override void Write(char[] buffer, int index, int count) => ConsoleOut.Write(buffer, index, count);
669 public override void Write(char[] buffer) => ConsoleOut.Write(buffer);
670 public override void Write(bool value) => ConsoleOut.Write(value);
671 public override void Write(object value) => ConsoleOut.Write(value);
672 public override Task WriteAsync(string value) => ConsoleOut.WriteAsync(value);
673 public override Task WriteAsync(char[] buffer, int index, int count) => ConsoleOut.WriteAsync(buffer, index, count);
674 public override Task WriteAsync(char value) => ConsoleOut.WriteAsync(value);
675 public override void WriteLine() => ConsoleOut.WriteLine();
676 public override void WriteLine(ulong value) => ConsoleOut.WriteLine(value);
677 public override void WriteLine(uint value) => ConsoleOut.WriteLine(value);
678 public override void WriteLine(string format, params object[] arg) => ConsoleOut.WriteLine(format, arg);
679 public override void WriteLine(string format, object arg0, object arg1, object arg2) => ConsoleOut.WriteLine(format, arg0, arg1, arg2);
680 public override void WriteLine(string format, object arg0, object arg1) => ConsoleOut.WriteLine(format, arg0, arg1);
681 public override void WriteLine(string value) => ConsoleOut.WriteLine(value);
682 public override void WriteLine(float value) => ConsoleOut.WriteLine(value);
683 public override void WriteLine(string format, object arg0) => ConsoleOut.WriteLine(format, arg0);
684 public override void WriteLine(long value) => ConsoleOut.WriteLine(value);
685 public override void WriteLine(int value) => ConsoleOut.WriteLine(value);
686 public override void WriteLine(double value) => ConsoleOut.WriteLine(value);
687 public override void WriteLine(decimal value) => ConsoleOut.WriteLine(value);
688 public override void WriteLine(char[] buffer, int index, int count) => ConsoleOut.WriteLine(buffer, index, count);
689 public override void WriteLine(char[] buffer) => ConsoleOut.WriteLine(buffer);
690 public override void WriteLine(char value) => ConsoleOut.WriteLine(value);
691 public override void WriteLine(object value) => ConsoleOut.WriteLine(value);
692 public override void WriteLine(bool value) => ConsoleOut.WriteLine(value);
693 public override Task WriteLineAsync() => ConsoleOut.WriteLineAsync();
694 public override Task WriteLineAsync(char value) => ConsoleOut.WriteLineAsync(value);
695 public override Task WriteLineAsync(char[] buffer, int index, int count) => ConsoleOut.WriteLineAsync(buffer, index, count);
696 public override Task WriteLineAsync(string value) => ConsoleOut.WriteLineAsync(value);
697 }
698 }
699}
Serializes output to System.Console.Out, and assures modules are not dead-locked in case the Console ...
Definition: ConsoleOut.cs:26
static void Write(long value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:210
static void WriteLine(string format, object arg0, object arg1)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:424
static void Write(string format, params object[] arg)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:159
static async Task FlushAsync(bool Terminate)
Asynchronously clears all buffers for the current writer and causes any buffered data to be written t...
Definition: ConsoleOut.cs:625
static Encoding Encoding
The character encoding in which the output is written.
Definition: ConsoleOut.cs:33
static void Write(CustomWriter Writer, ConsoleColor? ForegroundColor, ConsoleColor? BackgroundColor)
Queues a custom writer to the console output.
Definition: ConsoleOut.cs:131
static int CursorTop
Top position of cursor.
Definition: ConsoleOut.cs:73
static void WriteLine(bool value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:527
static void WriteLine(decimal value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:479
static void Write(uint value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:149
static void Write(bool value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:275
static int WindowHeight
Height of window.
Definition: ConsoleOut.cs:63
static void Write(string format, object arg0)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:192
static void WriteLine(char[] buffer, int index, int count)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:490
static int CursorSize
Size of cursor.
Definition: ConsoleOut.cs:78
static Task WriteLineAsync()
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:549
static ConsoleColor BackgroundColor
Console background color.
Definition: ConsoleOut.cs:97
static void Write(string value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:110
static void WriteLine(double value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:470
static Task FlushAsync()
Asynchronously clears all buffers for the current writer and causes any buffered data to be written t...
Definition: ConsoleOut.cs:615
static void Flush(bool Terminate)
Clears all buffers for the current writer and causes any buffered data to be written to the underlyin...
Definition: ConsoleOut.cs:605
static void Write(object value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:284
static TextWriter Writer
Provides a TextWriter instance, that writes to ConsoleOut.
Definition: ConsoleOut.cs:639
static void WriteLine(string value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:373
static int WindowLeft
Left edge of window.
Definition: ConsoleOut.cs:53
static void WriteLine(int value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:461
static async Task WriteAsync(string value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:294
static async Task WriteAsync(CustomAsyncWriter Writer, ConsoleColor? ForegroundColor, ConsoleColor? BackgroundColor)
Queues a custom writer to the console output.
Definition: ConsoleOut.cs:351
static void Write(double value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:228
static void WriteLine(char value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:508
static void Write(char value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:266
static int CursorLeft
Left position of cursor.
Definition: ConsoleOut.cs:68
static void Write(ulong value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:140
static void Write(int value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:219
static void WriteLine(ulong value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:382
static void Write(string format, object arg0, object arg1, object arg2)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:171
static ConsoleColor ForegroundColor
Console foreground color.
Definition: ConsoleOut.cs:84
static Task WriteLineAsync(char[] buffer)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:567
static void WriteLine()
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:364
static Task WriteAsync(char value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:331
static void WriteLine(object value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:517
static void WriteLine(string format, params object[] arg)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:401
static void WriteLine(string format, object arg0, object arg1, object arg2)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:413
static string NewLine
The line terminator string for the current TextWriter.
Definition: ConsoleOut.cs:43
static Task WriteAsync(CustomAsyncWriter Writer)
Queues a custom writer to the console output.
Definition: ConsoleOut.cs:340
static Task WriteAsync(char[] buffer)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:322
static int WindowTop
Top edge of window.
Definition: ConsoleOut.cs:58
static void Write(decimal value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:237
static void Write(float value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:201
static void Write(CustomWriter Writer)
Queues a custom writer to the console output.
Definition: ConsoleOut.cs:120
static void Flush()
Clears all buffers for the current writer and causes any buffered data to be written to the underlyin...
Definition: ConsoleOut.cs:595
static void Beep()
Emits a Beep sounds.
Definition: ConsoleOut.cs:586
static void WriteLine(long value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:452
static int WindowWidth
Width of window.
Definition: ConsoleOut.cs:48
static void WriteLine(char[] buffer)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:499
static void WriteLine(float value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:433
static void WriteLine(string format, object arg0)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:443
static Task WriteLineAsync(char value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:558
static async Task WriteLineAsync(string value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:536
static void Write(char[] buffer, int index, int count)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:248
static void Write(char[] buffer)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:257
static Task WriteLineAsync(char[] buffer, int index, int count)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:578
static void WriteLine(uint value)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:391
static IFormatProvider FormatProvider
Gets an object that controls formatting.
Definition: ConsoleOut.cs:38
static Task WriteAsync(char[] buffer, int index, int count)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:313
static void Write(string format, object arg0, object arg1)
Queues a value to be written to the console output.
Definition: ConsoleOut.cs:182
Used to signal end of queue has been reached.
Definition: ConsoleFlush.cs:9
Writes a string to the console, appending a newline at the end.
Processes console tasks, such as input and output, in a serialized asynchronous manner.
static Task< bool > Queue(WorkItem Work)
Queues a work item.
static bool Terminating
If the console worker is being terminated.
Manages a Console operation.
Definition: WorkItem.cs:9
Task< bool > Wait()
Waits for the item to be processed.
Definition: WorkItem.cs:30
delegate void CustomWriter(TextWriter Output)
Delegate for custom writers.
delegate Task CustomAsyncWriter(TextWriter Output)
Delegate for asynchronous custom writers.