예제 #1
0
        public string sendOperatorInfoToPCS(Dictionary <string, string> operatorDict)
        {
            Operator _operator = new Operator();

            _operator.type         = operatorDict["TYPE"];
            _operator.id           = operatorDict["OPERATOR_ID"];
            _operator.input        = operatorDict["INPUT"];
            _operator.repFact      = Int32.Parse(operatorDict["REP_FACT"]);
            _operator.routing      = operatorDict["ROUTING"];
            _operator.loggingLevel = operatorDict["LOGGING_LEVEL"];
            _operator.semantics    = operatorDict["SEMANTICS"];
            if (operatorDict["FIELD_NUMBER"] != "")
            {
                _operator.fieldNumber = Int32.Parse(operatorDict["FIELD_NUMBER"]);
            }
            _operator.condition      = operatorDict["CONDITION"];
            _operator.conditionValue = operatorDict["CONDITION_VALUE"];
            _operator.status         = "Stand_by";
            _operator.dllCustom      = operatorDict["DLL"];
            _operator.classCustom    = operatorDict["CLASS"];
            _operator.methodCustom   = operatorDict["METHOD"];

            int operatorNumber = 0;

            foreach (string address in operatorDict["ADDRESSES"].Split('$'))
            {
                _operator.myAddress = address;
                _operator.repID     = operatorNumber;
                Operator finalOperator = new Operator();
                finalOperator.duplicate(_operator);
                PCS.operatorsDict.Add(finalOperator.id + "-" + finalOperator.repID, finalOperator);
                operatorNumber++;
                PCS.setMyPreviousAddresses(finalOperator.id, finalOperator.repID);
                //PCS.setMyReplicasAddresses(finalOperator.id, finalOperator.repID);
            }

            foreach (string key in PCS.operatorsDict.Keys)
            {
                Operator op = PCS.operatorsDict[key];
                op.print();
                Console.WriteLine("\r\n");
            }

            PCS.startOperator(_operator.id);
            return(_operator.id + " recebido pelo PCS");;
        }
        public void startToProcess()
        {
            _operator.initAliveReplicas();

            _operator.status = "Running";
            _operator.print();

            _operator.executeThread = new Thread(_operator.execute);
            _operator.executeThread.Start();

            _operator.sendTuplesThread = new Thread(_operator.sendTuples);
            _operator.sendTuplesThread.Start();

            foreach (string file in _operator.inputFile)
            {
                readFileToInputBuffer(file);
            }

            if (_operator.routing.Equals("primary"))
            {
                //_operator.initPrimaryReplicasDict();
            }
        }