Ejemplo n.º 1
0
 public MyException(System.Runtime.Serialization.SerializationInfo info,
                    System.Runtime.Serialization.StreamingContext context)
     : base(info, context)
 {
     campo = info.GetInt32("campo");
     mo    = (MyRemoteInterface)info.GetValue("mo", typeof(MyRemoteInterface));
 }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            TcpChannel channel = new TcpChannel();

            ChannelServices.RegisterChannel(channel, false);
            MyRemoteInterface obj = (MyRemoteInterface)Activator.GetObject(
                typeof(MyRemoteInterface),
                "tcp://localhost:8086/MyRemoteObjectName");

            if (obj == null)
            {
                System.Console.WriteLine("Could not locate server");
            }

            if (args.Length == 0)
            {
                executeMain(0, "");
            }
            else if (args.Length == 0)
            {
                executeMain(1, args[0]);
            }
            else
            {
                return;
            }
        }
Ejemplo n.º 3
0
        static void Main()
        {
            // allocate and register channel
            TcpChannel channel = new TcpChannel();

            ChannelServices.RegisterChannel(channel, true);
            // get reference to remote service
            MyRemoteInterface obj = (MyRemoteInterface)Activator.GetObject(
                typeof(MyRemoteInterface),
                "tcp://localhost:8086/MyRemoteObjectName");

            try {
                // first a simple synchronous call
                Console.WriteLine(obj.MetodoOla());

                // change this to true to use the callback (alt.2)
                bool useCallback = false;

                if (!useCallback)
                {
                    // Alternative 1: asynchronous call without callback
                    // Create delegate to remote method
                    RemoteAsyncDelegate RemoteDel = new RemoteAsyncDelegate(obj.MetodoOla);
                    // Call delegate to remote method
                    IAsyncResult RemAr = RemoteDel.BeginInvoke(null, null);
                    // Wait for the end of the call and then explictly call EndInvoke
                    RemAr.AsyncWaitHandle.WaitOne();
                    Console.WriteLine(RemoteDel.EndInvoke(RemAr));
                }
                else
                {
                    // Alternative 2: asynchronous call with callback
                    // Create delegate to remote method
                    RemoteAsyncDelegate RemoteDel = new RemoteAsyncDelegate(obj.MetodoOla);
                    // Create delegate to local callback
                    AsyncCallback RemoteCallback = new AsyncCallback(Client.OurRemoteAsyncCallBack);
                    // Call remote method
                    IAsyncResult RemAr = RemoteDel.BeginInvoke(RemoteCallback, null);
                }
            }
            catch (SocketException) {
                System.Console.WriteLine("Could not locate server");
            }
            catch (MyException e) {
                Console.WriteLine("I caught an exception: " + e.campo);
                Console.WriteLine("I caught an exception: " + e.mo.OlaSemExcepcao());
            }

            Console.ReadLine();
        }
Ejemplo n.º 4
0
        public void executeByPuppet()
        {
            int urlRead = 0;
            BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();

            provider.TypeFilterLevel = TypeFilterLevel.Full;
            IDictionary props = new Hashtable();
            string      name  = "s";
            int         port  = 8086;

            if (uri != null)
            {
                props["port"] = uri.Port;
                port          = uri.Port;
            }
            else
            {
                props["port"] = 8086;
            }
            if (id != null)
            {
                props["name"] = id;
                name          = id;
            }
            TcpChannel channel = new TcpChannel(props, null, provider);

            ChannelServices.RegisterChannel(channel, false);
            MyRemoteInterface obj = null;

            while (obj == null)
            {
                try
                {
                    String reference = "tcp://localhost:" + urls[urlRead].Port + "/MyRemoteObjectName/" + names[urlRead];
                    obj = (MyRemoteInterface)Activator.GetObject(
                        typeof(MyRemoteInterface), reference);
                    if (obj == null)
                    {
                        urlRead++;
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    Console.WriteLine(e.StackTrace);
                    Console.ReadLine();
                }
            }
            executeMain(obj, 1, fileName, urlRead);
        }
Ejemplo n.º 5
0
        public void clean()
        {
            TcpChannel channel = new TcpChannel();

            ChannelServices.RegisterChannel(channel, false);
            String            reference = "tcp://localhost:50001/MyRemoteObjectName";
            MyRemoteInterface obj       = (MyRemoteInterface)Activator.GetObject(
                typeof(MyRemoteInterface), reference);

            // The GetManuallyMarshaledObject() method uses RemotingServices.Marshal()
            // to create an ObjRef object for a SampleTwo object.
            ObjRef objRefSampleTwo = obj.GetManuallyMarshaledObject();

            SampleTwo objectSampleTwo = (SampleTwo)RemotingServices.Unmarshal(objRefSampleTwo);
        }
Ejemplo n.º 6
0
        public void updateReplicas(IDictionary <string, List <List <Field> > > tupleSpace2)
        {
            List <string> serversDown = new List <string>();

            Console.WriteLine("IM OBJECT   " + uri.Port + "and im updating:------------");
            foreach (string s in urls.Keys)
            {
                Console.WriteLine("Server   " + s);
            }
            Console.WriteLine("--------------------------------------------------------");
            List <Task> TaskList = new List <Task>();
            Task        t        = null;

            foreach (string s in urls.Keys)
            {
                if (urls[s].Equals(uri))
                {
                    continue;
                }
                String            reference = "tcp://localhost:" + urls[s].Port + "/MyRemoteObjectName/" + s;
                MyRemoteInterface obj       = (MyRemoteInterface)Activator.GetObject(
                    typeof(MyRemoteInterface), reference);

                t = new Task(() =>
                {
                    try
                    {
                        obj.update(tupleSpace2);
                    }
                    catch (Exception e)
                    {
                        if (e is RemotingException || e is SocketException)
                        {
                            serversDown.Add(s);
                        }
                    }
                });
                t.Start();
                TaskList.Add(t);
            }
            Task.WaitAll(TaskList.ToArray());
            foreach (string down in serversDown)
            {
                urls.Remove(down);
            }
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            try
            {
                BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
                provider.TypeFilterLevel = TypeFilterLevel.Full;
                IDictionary props = new Hashtable();
                props["port"] = 0;
                props["name"] = "c";
                TcpChannel channel = new TcpChannel(props, null, provider);
                ChannelServices.RegisterChannel(channel, false);
                MyRemoteInterface obj = (MyRemoteInterface)Activator.GetObject(
                    typeof(MyRemoteInterface),
                    "tcp://localhost:8086/MyRemoteObjectName/s");
                if (obj == null)
                {
                    System.Console.WriteLine("Could not locate server");
                }

                if (args.Length == 0)
                {
                    executeMain(obj, 0, "", 0);
                }
                else if (args.Length == 0)
                {
                    executeMain(obj, 1, args[0], 0);
                }
                else
                {
                    return;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.GetType());
                Console.WriteLine(e.StackTrace);
                Console.WriteLine(e.Message);
                Console.ReadLine();
            }
        }
Ejemplo n.º 8
0
    static void Main()
    {
        TcpChannel channel = new TcpChannel();

        ChannelServices.RegisterChannel(channel, false);
        MyRemoteInterface obj = (MyRemoteInterface)Activator.GetObject(
            typeof(MyRemoteInterface),
            "tcp://localhost:8086/MyRemoteObjectName");

        if (obj == null)
        {
            System.Console.WriteLine("Could not locate server");
        }
        else
        {
            try {
                Console.WriteLine(obj.MetodoOla());
            } catch (MyException e) {
                Console.WriteLine("I caught an exception: " + e.campo);
                Console.WriteLine("I caught an exception: " + e.mo.OlaSemExcepcao());
            }
        }
        Console.ReadLine();
    }
Ejemplo n.º 9
0
 public MyException(int c, MyRemoteInterface mo)
 {
     campo   = c;
     this.mo = mo;
 }
Ejemplo n.º 10
0
        public static void executeMain(MyRemoteInterface obj, int args, string arg, int urlRead)
        {
            string                str_fields  = "";
            List <string>         cmds        = new List <string>();
            List <string>         field_list  = new List <string>();
            List <List <string> > field_list2 = new List <List <string> >();
            List <List <Field> >  lField;

            string[] cmd_params;
            string   cmd    = "";
            int      delay  = 0;
            int      repeat = 0;

            if (args == 1)
            {
                string[] lines = File.ReadAllLines(arg);
                foreach (string l in lines)
                {
                    if (l.Length == 0)
                    {
                        continue;
                    }
                    if (l.Contains("end"))
                    {
                        cmd = l;
                    }
                    else
                    {
                        cmd_params = l.Split(' ');
                        cmd        = cmd_params[0];
                        str_fields = cmd_params[1];

                        if (cmd.Contains("repeat") || cmd.Equals("wait"))
                        {
                            Console.WriteLine("status command " + cmd + " " + cmd_params[1]);
                        }
                        else
                        {
                            if (cmd_params.Length > 2)
                            {
                                return;
                            }
                            field_list = argumentParser(str_fields);
                        }
                    }

                    int sent = 0;

                    while (sent == 0)
                    {
                        try
                        {
                            switch (cmd)
                            {
                            case "add":
                                obj.add(field_list);
                                if (repeat > 0)
                                {
                                    field_list2.Add(field_list);
                                    cmds.Add(cmd);
                                }
                                sent = 1;
                                break;

                            case "read":
                                lField = obj.readTuple(field_list);
                                if (repeat > 0)
                                {
                                    field_list2.Add(field_list);
                                    cmds.Add(cmd);
                                }
                                while (lField == null)
                                {
                                    lField = obj.readTuple(field_list);
                                }
                                foreach (List <Field> ls in lField)
                                {
                                    foreach (Field f in ls)
                                    {
                                        if (f.getType() == 0 || f.getType() == 2)
                                        {
                                            Console.WriteLine(f.getClassName());
                                        }
                                        else
                                        {
                                            Console.WriteLine(f.getString());
                                        }
                                    }
                                }
                                sent = 1;
                                break;

                            case "take":
                                if (repeat > 0)
                                {
                                    field_list2.Add(field_list);
                                    cmds.Add(cmd);
                                }
                                lField = obj.take(field_list);
                                while (lField == null)
                                {
                                    lField = obj.take(field_list);
                                }
                                foreach (List <Field> ls in lField)
                                {
                                    foreach (Field f in ls)
                                    {
                                        if (f.getType() == 0 || f.getType() == 2)
                                        {
                                            Console.WriteLine(f.getClassName());
                                        }
                                        else
                                        {
                                            Console.WriteLine(f.getString());
                                        }
                                    }
                                }
                                sent = 1;
                                break;

                            case "wait":
                                Int32.TryParse(str_fields, out delay);
                                System.Threading.Thread.Sleep(delay);
                                if (repeat > 0)
                                {
                                    List <string> x = new List <string>();
                                    x.Add(str_fields);
                                    field_list2.Add(x);
                                    cmds.Add(cmd);
                                }
                                sent = 1;
                                break;

                            case "begin-repeat":
                                Int32.TryParse(str_fields, out repeat);
                                sent = 1;
                                break;

                            case "end-repeat":
                                for (int i = 0; i < (repeat - 1); i++)
                                {
                                    repeatCmd(obj, field_list2, cmds);
                                }
                                repeat = 0;
                                sent   = 1;

                                break;
                            }
                        }
                        catch (Exception e)
                        {
                            if (e is RemotingException || e is SocketException)
                            {
                                Thread.Sleep(7000);
                                urlRead++;
                                Console.WriteLine("SERVER CRASHED, REPLACING REMOTE OBJECT");
                                String reference = "";
                                bool   set       = false;
                                while (!set)
                                {
                                    reference = "tcp://localhost:" + urls[urlRead].Port + "/MyRemoteObjectName/" + names[urlRead];
                                    obj       = (MyRemoteInterface)Activator.GetObject(
                                        typeof(MyRemoteInterface), reference);
                                    Console.WriteLine("Trying:  " + reference);
                                    if (obj == null)
                                    {
                                        urlRead++;
                                        continue;
                                    }
                                    else
                                    {
                                        set = true;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    sent = 0;
                }
            }
            else
            {
                try
                {
                    while (true)
                    {
                        Console.WriteLine("Write a command add|take|read <field1,field2,...,fieldn>  (exit:to leave) :");
                        string l = Console.ReadLine();
                        if (l.Length == 0)
                        {
                            continue;
                        }
                        cmd_params = l.Split(' ');
                        cmd        = cmd_params[0];
                        str_fields = cmd_params[1].Replace("\n", "");
                        field_list = argumentParser(str_fields);
                        if (cmd.Equals("exit"))
                        {
                            Console.WriteLine("Exiting");
                            break;
                        }

                        switch (cmd)
                        {
                        case "add":
                            obj.add(field_list);
                            break;

                        case "read":

                            lField = obj.readTuple(field_list);
                            while (lField == null)
                            {
                                lField = obj.readTuple(field_list);
                            }
                            foreach (List <Field> ls in lField)
                            {
                                foreach (Field f in ls)
                                {
                                    if (f.getType() == 0)
                                    {
                                        Console.WriteLine(f.getClassName());
                                    }
                                    else
                                    {
                                        Console.WriteLine(f.getString());
                                    }
                                }
                            }
                            break;

                        case "take":
                            lField = obj.take(field_list);
                            while (lField == null)
                            {
                                lField = obj.readTuple(field_list);
                            }
                            foreach (List <Field> ls in lField)
                            {
                                foreach (Field f in ls)
                                {
                                    if (f.getType() == 0)
                                    {
                                        Console.WriteLine(f.getClassName());
                                    }
                                    else
                                    {
                                        Console.WriteLine(f.getString());
                                    }
                                }
                            }
                            break;

                        default: Console.WriteLine("Invalid Command : {0}. Please,use the correct command syntax.", cmd); break;
                        }
                    }
                }
                catch (SocketException)
                {
                    System.Console.WriteLine("Could not locate server");
                }
                catch (ArgumentOutOfRangeException)
                {
                    System.Console.WriteLine("bad input format1\nadd|take|read <field1,field2,...,fieldn>\nEx: add <\"ola\">");
                    executeMain(obj, args, arg, urlRead);
                }
                catch (IndexOutOfRangeException)
                {
                    System.Console.WriteLine("bad input format2\nadd|take|read <field1,field2,...,fieldn>\nEx: add <\"ola\">");
                    executeMain(obj, args, arg, urlRead);
                }
                catch (RemotingException e)
                {
                    System.Console.WriteLine("OBJJJJ");
                    Console.WriteLine(e.GetType());
                    Console.WriteLine(e.StackTrace);
                    Console.WriteLine(e.Message);
                    obj = (MyRemoteInterface)Activator.GetObject(
                        typeof(MyRemoteInterface),
                        "tcp://localhost:8086/MyRemoteObjectName/s");
                    executeMain(obj, args, arg, urlRead);
                }
            }
        }
Ejemplo n.º 11
0
        public static void repeatCmd(MyRemoteInterface obj, List <List <string> > field_list2, List <string> cmds)
        {
            int delay = 0;
            List <List <Field> > lField;

            for (int i = 0; i < cmds.Count; i++)
            {
                switch (cmds[i])
                {
                case "add":
                    obj.add(field_list2[i]);
                    break;

                case "read":
                    lField = obj.readTuple(field_list2[i]);
                    while (lField == null)
                    {
                        lField = obj.readTuple(field_list2[i]);
                    }
                    foreach (List <Field> ls in lField)
                    {
                        foreach (Field f in ls)
                        {
                            if (f.getType() == 0 || f.getType() == 2)
                            {
                                Console.WriteLine(f.getClassName());
                            }
                            else
                            {
                                Console.WriteLine(f.getString());
                            }
                        }
                    }
                    break;

                case "take":
                    lField = obj.take(field_list2[i]);
                    while (lField == null)
                    {
                        lField = obj.take(field_list2[i]);
                    }
                    foreach (List <Field> ls in lField)
                    {
                        foreach (Field f in ls)
                        {
                            if (f.getType() == 0 || f.getType() == 2)
                            {
                                Console.WriteLine(f.getClassName());
                            }
                            else
                            {
                                Console.WriteLine(f.getString());
                            }
                        }
                    }
                    break;

                case "wait":
                    Int32.TryParse(field_list2[i][0], out delay);
                    System.Threading.Thread.Sleep(delay);
                    Console.WriteLine(delay);
                    break;
                }
            }
        }
Ejemplo n.º 12
0
        public static void repeatCmd(List <List <string> > field_list2, List <string> cmds)
        {
            int delay = 0;
            List <List <Field> >         lField  = null;
            List <List <List <Field> > > lField2 = null;

            for (int i = 0; i < cmds.Count; i++)
            {
                int         y        = 0;
                List <Task> TaskList = new List <Task>();
                lField2 = new List <List <List <Field> > >();
                Task t    = null;
                int  read = 0;
                int  add  = 0;
                foreach (string server in names)
                {
                    Console.WriteLine("Sending to server in" + urls[y] + "named " + server + " command: " + cmds[i]);
                    String            reference = "tcp://localhost:" + urls[y].Port + "/MyRemoteObjectName/" + server;
                    MyRemoteInterface obj       = (MyRemoteInterface)Activator.GetObject(
                        typeof(MyRemoteInterface), reference);

                    if (obj != null)
                    {
                        switch (cmds[i])
                        {
                        case "add":
                            add += 1;
                            t    = new Task(() =>
                            {
                                obj.add(field_list2[i]);
                            });

                            break;

                        case "read":
                            read += 1;
                            t     = new Task(() =>
                            {
                                lField = obj.readTuple(field_list2[i]);
                                while (lField == null)
                                {
                                    lField = obj.readTuple(field_list2[i]);
                                }
                                lField2.Add(lField);
                            });

                            break;

                        case "take":
                            t = new Task(() =>
                            {
                                lField = obj.take(field_list2[i]);
                                while (lField == null)
                                {
                                    lField = obj.take(field_list2[i]);
                                }
                                lField2.Add(lField);
                            });
                            break;

                        case "wait":
                            Int32.TryParse(field_list2[i][0], out delay);
                            System.Threading.Thread.Sleep(delay);
                            Console.WriteLine("delaying :" + delay);
                            break;
                        }
                    }
                    if (t != null)
                    {
                        t.Start();
                        TaskList.Add(t);
                    }
                    y++;
                }
                y = 0;

                Thread.Sleep(2000);
                if (read > 0)
                {
                    Task.WaitAny(TaskList.ToArray());
                    read = 0;
                    foreach (List <Field> ls in lField)
                    {
                        foreach (Field f in ls)
                        {
                            if (f.getType() == 0 || f.getType() == 2)
                            {
                                Console.WriteLine(f.getClassName());
                            }
                            else
                            {
                                Console.WriteLine(f.getString());
                            }
                        }
                    }
                    continue;
                }
                else if (add > 0)
                {
                    Task.WaitAll(TaskList.ToArray());
                    add = 0;
                    continue;
                }
                else
                {
                    List <List <Field> > tuplesToTake = new List <List <Field> >();
                    Random getrandom = new Random();

                    Task.WaitAll(TaskList.ToArray());

                    Console.WriteLine("--------------------------------------------------------------------------------");
                    foreach (List <List <Field> > lls in lField2)
                    {
                        Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

                        Console.WriteLine("                            TUPLES SELECTED FROM                           ");
                        foreach (List <Field> ls in lls)
                        {
                            foreach (Field f in ls)
                            {
                                if (f.getType() == 0 || f.getType() == 2)
                                {
                                    Console.WriteLine(f.getClassName());
                                }
                                else
                                {
                                    Console.WriteLine(f.getString());
                                }
                            }
                        }
                        Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
                    }
                    Console.WriteLine("--------------------------------------------------------------------------------");

                    /* int rand = getrandom.Next(0, lField2.Count);
                     * tuplesToTake = lField2[rand];
                     * TaskList = new List<Task>();
                     * lField2 = new List<List<List<Field>>>();
                     * foreach (string server in names)
                     * {
                     *
                     *   Console.WriteLine("Sending to server in" + urls[y] + "named " + server + " command: ");
                     *   String reference = "tcp://localhost:" + urls[y].Port + "/MyRemoteObjectName/" + server;
                     *   MyRemoteInterface obj = (MyRemoteInterface)Activator.GetObject(
                     *   typeof(MyRemoteInterface), reference);
                     *   t = new Task(() =>
                     *   {
                     *       lField = obj.take(field_list2[i]);
                     *       while (lField == null)
                     *           lField = obj.take(field_list2[i]);
                     *       lField2.Add(lField);
                     *   });
                     *   t.Start();
                     *   TaskList.Add(t);
                     * }
                     * Task.WaitAll(TaskList.ToArray());*/
                }
            }
        }
Ejemplo n.º 13
0
        public static void executeMain(int args, string arg)
        {
            string                       str_fields  = "";
            List <string>                cmds        = new List <string>();
            List <string>                field_list  = new List <string>();
            List <List <string> >        field_list2 = new List <List <string> >();
            List <List <Field> >         lField      = new List <List <Field> >();
            List <List <List <Field> > > lField2     = new List <List <List <Field> > >();

            string[] cmd_params;
            string   cmd    = "";
            int      delay  = 0;
            int      repeat = 0;
            int      read   = 0;
            int      add    = 0;

            if (args == 1)
            {
                string[] lines = File.ReadAllLines(arg);
                foreach (string l in lines)
                {
                    lField2 = new List <List <List <Field> > >();
                    if (l.Length == 0)
                    {
                        continue;
                    }
                    if (l.Contains("end"))
                    {
                        cmd = l;
                    }
                    else
                    {
                        cmd_params = l.Split(' ');
                        cmd        = cmd_params[0];
                        str_fields = cmd_params[1];

                        if (cmd.Contains("repeat") || cmd.Equals("wait"))
                        {
                            Console.WriteLine("status command " + cmd + " " + cmd_params[1]);
                        }
                        else
                        {
                            if (cmd_params.Length > 2)
                            {
                                return;
                            }
                            field_list = argumentParser(str_fields);
                        }
                    }

                    Console.WriteLine(l);

                    int         y        = 0;
                    List <Task> TaskList = new List <Task>();
                    Task        t        = null;
                    switch (cmd)
                    {
                    case "wait":
                        Int32.TryParse(str_fields, out delay);
                        System.Threading.Thread.Sleep(delay);
                        Console.WriteLine("delaying :" + delay);
                        break;

                    case "begin-repeat":
                        Int32.TryParse(str_fields, out repeat);
                        break;

                    case "end-repeat":
                        for (int i = 0; i < (repeat - 1); i++)
                        {
                            repeatCmd(field_list2, cmds);
                        }
                        repeat = 0;
                        break;

                    default:
                        foreach (string server in names)
                        {
                            Console.WriteLine("Sending to server in" + urls[y] + "named " + server + " command: " + l);
                            String            reference = "tcp://localhost:" + urls[y].Port + "/MyRemoteObjectName/" + server;
                            MyRemoteInterface obj       = (MyRemoteInterface)Activator.GetObject(
                                typeof(MyRemoteInterface), reference);

                            if (obj != null)
                            {
                                switch (cmd)
                                {
                                case "add":
                                    add += 1;
                                    t    = new Task(() =>
                                    {
                                        obj.add(field_list);
                                    });

                                    break;

                                case "read":
                                    read += 1;
                                    t     = new Task(() =>
                                    {
                                        lField = obj.readTuple(field_list);
                                        while (lField == null)
                                        {
                                            lField = obj.readTuple(field_list);
                                        }
                                        lField2.Add(lField);
                                    });

                                    break;

                                case "take":
                                    t = new Task(() =>
                                    {
                                        lField = obj.take(field_list);
                                        while (lField == null)
                                        {
                                            lField = obj.take(field_list);
                                        }
                                        lField2.Add(lField);
                                    });
                                    break;
                                }
                            }
                            if (t != null)
                            {
                                t.Start();
                                TaskList.Add(t);
                            }
                            y++;
                        }
                        if (repeat > 0)
                        {
                            if (!cmd.Contains("repeat"))
                            {
                                if (cmd.Equals("wait"))
                                {
                                    List <string> sl = new List <string>();
                                    sl.Add(str_fields);
                                    field_list2.Add(sl);
                                }
                                else
                                {
                                    field_list2.Add(field_list);
                                }
                                cmds.Add(cmd);
                            }
                        }
                        y = 0;
                        Thread.Sleep(2000);
                        if (read > 0)
                        {
                            Task.WaitAny(TaskList.ToArray());
                            read = 0;
                            foreach (List <Field> ls in lField)
                            {
                                foreach (Field f in ls)
                                {
                                    if (f.getType() == 0 || f.getType() == 2)
                                    {
                                        Console.WriteLine(f.getClassName());
                                    }
                                    else
                                    {
                                        Console.WriteLine(f.getString());
                                    }
                                }
                            }
                            continue;
                        }
                        else if (add > 0)
                        {
                            Task.WaitAll(TaskList.ToArray());
                            add = 0;
                            continue;
                        }
                        else
                        {
                            List <List <Field> > tuplesToTake = new List <List <Field> >();
                            Random getrandom = new Random();

                            Task.WaitAll(TaskList.ToArray());

                            Console.WriteLine("--------------------------------------------------------------------------------");
                            foreach (List <List <Field> > lls in lField2)
                            {
                                Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

                                Console.WriteLine("                            TUPLES SELECTED FROM                           ");
                                foreach (List <Field> ls in lls)
                                {
                                    foreach (Field f in ls)
                                    {
                                        if (f.getType() == 0 || f.getType() == 2)
                                        {
                                            Console.WriteLine(f.getClassName());
                                        }
                                        else
                                        {
                                            Console.WriteLine(f.getString());
                                        }
                                    }
                                }
                                Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
                            }
                            Console.WriteLine("--------------------------------------------------------------------------------");

                            /*int rand = getrandom.Next(0, lField2.Count);
                             * TaskList = new List<Task>();
                             * lField2 = new List<List<List<Field>>>();
                             * foreach (string server in names)
                             * {
                             *
                             *  Console.WriteLine("Sending to server in" + urls[y] + "named " + server + " command: " + l);
                             *  String reference = "tcp://localhost:" + urls[y].Port + "/MyRemoteObjectName/" + server;
                             *  MyRemoteInterface obj = (MyRemoteInterface)Activator.GetObject(
                             *  typeof(MyRemoteInterface), reference);
                             *  t = new Task(() =>
                             *  {
                             *      lField = obj.take(field_list);
                             *      while (lField == null)
                             *          lField = obj.take(field_list);
                             *      lField2.Add(lField);
                             *  });
                             *  t.Start();
                             *  TaskList.Add(t);
                             * }
                             * Task.WaitAll(TaskList.ToArray());*/
                        }
                        break;
                    }
                }
            }
        }