public Boolean Contract_CallBack(POrder order)
        {
            Trace.Assert(_data.LiveOrder == order);

            if (IsOrderContracted(order) &&
                _data.CurEDoorOrderState ==
                EDoorEachMonitorEnterData.EDoorOrderState.ActiveWithoutSweeper)
            {
                // sweeper 생성하고 sweeper에게 나머지 모든일을 맡긴다.
                // 본인은 MonitorState로 간다.

                // centerData를 이렇게 가지고 오는 것이 좋지는 않지만 별수 없다.
                // sweeper를 생성해서 sweeper controller에 넣어준다.
                EDoorEachSweeperController sweeper =
                    new EDoorEachSweeperController(
                        order,
                        Parent.Parent.GetCenterData());

                // sweeper 등록
                Parent.Parent.GetSweeperController().Add(sweeper);

                _data.ClearLiveOrder();
                _monitorEnter = new MonitorState(this);
            }

            return true;
        }
 public EDoorEachMonitorEnterController(
     EDoorMonitorEnterController parent,
     KospiOptionInfo koi_0,
     KospiOptionInfo koi_1,
     KospiOptionInfo koi_2,
     KospiOptionInfo koi_3,
     KospiOptionInfo koi_4,
     ElwInfo ei)
 {
     this.Parent = parent;
     this._data = new EDoorEachMonitorEnterData(this, koi_0, koi_1,
         koi_2, koi_3, koi_4, ei);
     this._monitorEnter = new MonitorState(this);
 }
 public void Run(EDoorCenterData centerData)
 {
     Trace.Assert(centerData.GetAvailableChannelCount() > 0);
     _monitorEnter = _monitorEnter.Run(centerData, _data);
 }