예제 #1
0
        public List <Operator> operators()
        {
            string[] ops = content.Split(new string[] { "input ops" }, StringSplitOptions.None);
            Dictionary <string, Operator> res = new Dictionary <string, Operator>();

            string   id = ops[0].Split(delimiters)[ops[0].Split(delimiters).Length - 2];
            Operator op = new Operator(id);

            for (int i = 1; i < ops.Length; i++)
            {
                string[] inputs = ops[i].Split(new string[] { "rep fact" }, StringSplitOptions.None)[0].Split(',');
                foreach (string input in inputs)
                {
                    if (input.Contains("."))
                    {
                        op.addInputFile(input.Trim(delimiters));
                    }
                    else
                    {
                        op.addInputOperator(res[input.Trim(delimiters)]);
                    }
                }
                op.setRouting(ops[i].Split(new string[] { "routing" }, StringSplitOptions.None)[1].Split(' ')[1]);
                string[] address = ops[i].Split(new string[] { "address" }, StringSplitOptions.None)[1].Split(new string[] { "operator spec" }, StringSplitOptions.None)[0].Split(',');
                foreach (string a in address)
                {
                    op.addReplica(a.Trim(delimiters));
                }

                string[] spec = ops[i].Split(new string[] { "operator spec" }, StringSplitOptions.None)[1].Split(delimiters);
                op.setOptions(spec[2]);

                res.Add(id, op.changeMode(spec[1]));
                id = ops[i].Split(delimiters)[ops[i].Split(delimiters).Length - 2];
                op = new Operator(id);
            }
            return(new List <Operator>(res.Values));
        }