示例#1
0
        public static void ConnectClient(Socket clientSocket)
        {
            var clientCalcIO = new TCPCalcIO(clientSocket, _consoleCalcIO);

            _clientCalcIO.Add(clientCalcIO);

            var expParser      = new ExpressionParser();
            var pathReader     = new PathReader();
            var firstOperation = new SaveNumberOperation();
            var operations     = new List <IOperation>
            {
                new AddOperation(),
                new SubstractOperation(),
                new DivideOperation(),
                new MultiplyOperation(),
                new JumpOperation(),
                new ExitOperation(),
                new LoadOperation(),
                new SaveOperation()
            };
            var inputParser = new CalcInputParser(clientCalcIO);
            var mathBuffer  = new MathBuffer(clientCalcIO);
            var history     = new OperationsHistory();
            var storage     = new ProcessorStorageFilesWork(mathBuffer, clientCalcIO, history, expParser, pathReader, inputParser);
            var processor   = new OperationsProcessor(storage, operations, firstOperation);

            processor.OperationPreReadAction += () => history.Update(processor, storage);

            var thread = new Thread(new ThreadStart(processor.Start));

            _clientThreads.Add(thread);

            thread.Start();
        }
示例#2
0
        private static void Main(string[] args)
        {
            // ADD FACTORY
            var calcIO         = new ConsoleCalcIO();
            var inputParser    = new CalcInputParser(calcIO);
            var mathBuffer     = new MathBuffer(calcIO);
            var history        = new OperationsHistory();
            var expParser      = new ExpressionParser();
            var pathReader     = new PathReader();
            var storage        = new ProcessorStorageFilesWork(mathBuffer, calcIO, history, expParser, pathReader, inputParser);
            var firstOperation = new SaveNumberOperation();
            var operations     = new List <IOperation>
            {
                new AddOperation(),
                new SubstractOperation(),
                new DivideOperation(),
                new MultiplyOperation(),
                new JumpOperation(),
                new ExitOperation(),
                new LoadOperation(),
                new SaveOperation()
            };

            var processor = new OperationsProcessor(storage, operations, firstOperation);

            processor.OperationPreReadAction += () => history.Update(processor, storage);

            processor.Start();
        }
示例#3
0
        static void Main(string[] args)
        {
            string mathString = $"2+2{SQRT}4^2+5%";

            MathBuffer buffer = new MathBuffer(mathString);

            Console.WriteLine(mathString);
            Console.WriteLine(buffer.ChangeToFunction());
            Console.WriteLine(buffer.Eval());
            Console.ReadKey();
        }
示例#4
0
        public void Start()
        {
            mathBuffer = new MathBuffer(inStream, outStream);

            MyCultureInfo.Apply();
            outStream.SendGreeting();

            PostStart();

            while (RunOperation())
            {
                ReadOperation();
            }
        }