public void Start() { calcIO.WriteLine( "Usage:\n" + " when first symbol on line is ‘>’ – enter operand(number)\n" + " when first symbol on line is ‘@’ – enter operation\n"); RunMathOperation(mathOperations['=']); bool running = true; while (running) { string input; do { calcIO.Write("@: "); input = calcIO.ReadString().Trim(); } while (input.Length > 1 || string.IsNullOrWhiteSpace(input)); if (mathOperations.TryGetValue(input[0], out var mathFunc)) { RunMathOperation(mathFunc); continue; } if (systemOperations.TryGetValue(input[0], out var sysFunc)) { running = sysFunc(); } } }
public ClientProcessor(MathsProccessor.MathsProccessorClient client, ICalcIO calcIO, ICalcInputParser parser) { this.client = client; this.calcIO = calcIO; this.parser = parser; operationsCount = 0; clientID = Guid.NewGuid().ToString(); mathOperations = new Dictionary <char, Func <Arguments, Result> > { ['='] = (args) => client.Set(args), ['+'] = (args) => client.Add(args), ['-'] = (args) => client.Sub(args), ['*'] = (args) => client.Mul(args), ['/'] = (args) => client.Div(args), }; systemOperations = new Dictionary <char, Func <bool> > { ['q'] = () => false, ['#'] = () => { var input = parser.ReadInt(x => x > 0 && x <= operationsCount); var result = client.Jmp(new Arguments() { ID = clientID, Input = input }).Value; calcIO.WriteLine($"[#{++operationsCount}] = {result}"); return(true); }, }; }
public bool Run(IProcessorStorage storage) { ICalcIO calcIO = storage.CalcIO; IMathBuffer mathBuffer = storage.Maths; double input = storage.InputParser.ReadDouble(); while (input == 0) { calcIO.WriteLine(new DivideByZeroException().Message); input = (calcIO as ICalcInputParser).ReadDouble(); } mathBuffer.TempValue = input; mathBuffer.AccValue /= input; mathBuffer.SaveAccValue(); return(true); }
private static void Main(string[] args) { _programRunning = true; _clientCalcIO = new ConsoleCalcIO(); var ipPoint = new IPEndPoint(IPAddress.Parse(args[0]), int.Parse(args[1])); var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { socket.Connect(ipPoint); } catch (Exception e) { _clientCalcIO.WriteLine($"Can't connect to server {ipPoint}\nError: {e.Message}"); _clientCalcIO.ReadString(); return; } _networkCalcIO = new TCPCalcIO(socket, _clientCalcIO); _readMessagesThread = new Thread(new ThreadStart(ReadServerMessages)); _readMessagesThread.Start(); while (_programRunning) { string input = _clientCalcIO.ReadString().ToLower(); if (input == "q") { _programRunning = false; _networkCalcIO.Disconnect(); return; } if (_programRunning) { _networkCalcIO.Write(input); } } }
private static void Main(string[] args) { _programRunning = true; _consoleCalcIO = new ConsoleCalcIO(); _clientCalcIO = new List <TCPCalcIO>(); _clientThreads = new List <Thread>(); var ipPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), int.Parse(args[0])); _listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); _consoleCalcIO.WriteLine("Server started at port " + args[0]); _listenSocket.Bind(ipPoint); _listenSocket.Listen(10); _connectThread = new Thread(new ThreadStart(ConnectionsThread)); _connectThread.Start(); while (_programRunning) { _consoleCalcIO.ReadString(); } }