Beispiel #1
0
        public string ReadWord(InputOutputMutex action = InputOutputMutex.None)
        {
            if (_index < 0 || _index == _words.Length)
            {
                _index = -1;
                var line = ReadLine(action);
                _words = line.Split(SplitChar, StringSplitOptions.RemoveEmptyEntries);
            }

            _index++;
            return(_index < _words.Length
                ? _words[_index]
                : string.Empty);
        }
Beispiel #2
0
        public async Task WriteAsync(string cad, InputOutputMutex action = InputOutputMutex.None)
        {
            if (action.IsWaitable())
            {
                _mutex.WaitOne();
            }

            await Output.WriteAsync(cad);

            if (action.IsReleasable())
            {
                _mutex.ReleaseMutex();
            }
        }
Beispiel #3
0
        public void Write(string cad, InputOutputMutex action = InputOutputMutex.None)
        {
            if (action.IsWaitable())
            {
                _mutex.WaitOne();
            }

            Output.Write(cad);

            if (action.IsReleasable())
            {
                _mutex.ReleaseMutex();
            }
        }
Beispiel #4
0
        public async Task <string> ReadWordAsync(InputOutputMutex action = InputOutputMutex.None)
        {
            if (_index < 0 || _index == _words.Length)
            {
                _index       = -1;
                LastLineRead = await ReadLineAsync(action);

                _words = LastLineRead.Split(SplitChar, StringSplitOptions.RemoveEmptyEntries);
            }

            _index++;
            return(_index < _words.Length
                ? _words[_index]
                : string.Empty);
        }
Beispiel #5
0
        public async Task <string> ReadLineAsync(InputOutputMutex action = InputOutputMutex.None)
        {
            if (action.IsWaitable())
            {
                _mutex.WaitOne();
            }

            var line = await Input.ReadLineAsync();

            if (action.IsReleasable())
            {
                _mutex.ReleaseMutex();
            }

            return(line);
        }
Beispiel #6
0
        public string ReadLine(InputOutputMutex action = InputOutputMutex.None)
        {
            if (action.IsWaitable())
            {
                _mutex.WaitOne();
            }

            var line = Input.ReadLine();

            if (action.IsReleasable())
            {
                _mutex.ReleaseMutex();
            }

            return(line);
        }
 private static bool InBetween(this InputOutputMutex v, InputOutputMutex min, InputOutputMutex max) => (uint)v - (uint)min <= (uint)max - (uint)min;
 public static bool IsWaitable(this InputOutputMutex @this) => @this.InBetween(InputOutputMutex.Atomic, InputOutputMutex.Relax);
 public static bool IsReleasable(this InputOutputMutex @this) => @this.InBetween(InputOutputMutex.Acquire, InputOutputMutex.Atomic);
Beispiel #10
0
 public Task WriteLineAsync(string cad, InputOutputMutex action = InputOutputMutex.None)
 => WriteAsync($"{cad}{Environment.NewLine}", action);
Beispiel #11
0
 public void WriteLine(string cad, InputOutputMutex action = InputOutputMutex.None)
 => Write($"{cad}{Environment.NewLine}", action);