Beispiel #1
0
 public DatBaeSolver(int WorkerCount, int BrokenWorkerCount, int RequestCount, Func <string> readFunction, Action <string> writeFunc)
 {
     this.WorkerCount       = WorkerCount;
     this.BrokenWorkerCount = BrokenWorkerCount;
     this.RequestCount      = RequestCount;
     this.bits = new bool[this.WorkerCount];
     groups.AddFirst(new GroupSolver(this.BrokenWorkerCount, this, 0, WorkerCount - 1));
     this.readFunction  = readFunction;
     this.writeFunction = writeFunc;
     CurrentState       = DatBaeSolverState.Initialized;
 }
Beispiel #2
0
        private void ReadResponse()
        {
            string result = this.readFunction();

            if (result == "-1")
            {
                CurrentState = DatBaeSolverState.RequestExceededCount;
            }
            else
            {
                for (int i = 0; i < bits.Length; i++)
                {
                    bits[i] = result[i] == '1' ? true : false;
                }
            }
        }
Beispiel #3
0
        public void Start()
        {
            CurrentState = DatBaeSolverState.Running;
            while (RequestCount > 0)
            {
                foreach (var group in groups)
                {
                    group.SetSendMessage();
                }

                SendMessage();
                ReadResponse();
                if (CurrentState == DatBaeSolverState.RequestExceededCount)
                {
                    break;
                }
                RequestCount--;
            }
        }