private Task <TestResultContainer> GetOrWaitForTask_(AutoResetEvent lockObject, EyesService.Tasker tasker, string serviceName)
        {
            Task <TestResultContainer> nextTestToOpen = null;

            try
            {
                nextTestToOpen = tasker.GetNextTask();
            }
            catch (Exception e)
            {
                Logger.Log("Error: " + e);
            }
            if (nextTestToOpen == null)
            {
                try
                {
                    Logger.Verbose("waiting on lockObject #{0}", lockObject.GetHashCode());
                    lockObject.WaitOne(500);
                    nextTestToOpen = tasker.GetNextTask();
                }
                catch (Exception e)
                {
                    Logger.Log("Error: " + e);
                }
            }
            return(nextTestToOpen);
        }
Esempio n. 2
0
        private void FetchCssFiles_(List <string> missingCssList)
        {
            logger_.Verbose("enter");
            List <CssTreeNode> cssTreeNodes = new List <CssTreeNode>();

            foreach (string missingCssUrl in missingCssList)
            {
                if (missingCssUrl.StartsWith("blob:") || missingCssUrl.StartsWith("data:"))
                {
                    logger_.Log("trying to download something impossible: {0}", missingCssUrl);
                    cssData_.Add(missingCssUrl, string.Empty);
                    continue;
                }
                logger_.Verbose("Downloading {0}", missingCssUrl);
                CssTreeNode cssTreeNode = new CssTreeNode(missingCssUrl, logger_, OnCssDownloadComplete_);
                cssTreeNodes.Add(cssTreeNode);
                AutoResetEvent waitHandle = new AutoResetEvent(false);
                logger_.Verbose("creating waithandle {0}", waitHandle.GetHashCode());
                waitHandles_[cssTreeNode] = waitHandle;
                cssTreeNode.Run();
            }
            logger_.Verbose("exit");
        }
Esempio n. 3
0
    public static int Main(String [] args)
    {
        int            rValue = 100;
        AutoResetEvent are    = null;

        Console.WriteLine("Test AutoResetEvent for expected NullRef Exceptions");
        Console.WriteLine( );


//      try {
// #pragma warning disable 618
//          are.Handle = new IntPtr(1);
// #pragma warning restore 618
//          rValue = 1;
//      }
//      catch (NullReferenceException) {
//          Console.WriteLine("Caught NullReferenceException   (are.Handle(new IntPtr(1)))");
//      }
//      try {
// #pragma warning disable 618
//          IntPtr iptr = are.Handle;
// #pragma warning restore 618
//          rValue = 2;
//      }
//      catch (NullReferenceException) {
//          Console.WriteLine("Caught NullReferenceException   (IntPtr iptr = are.Handle)");
//      }

        // try {
        //  are.Close();
        //  rValue = 3;
        // }
        // catch (NullReferenceException) {
        //  Console.WriteLine("Caught NullReferenceException   (are.Close())");
        // }

        try {
            are.Equals(new ManualResetEvent(true));
            rValue = 4;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.Equals(new ManualResetEvent()))");
        }

        try {
            are.GetHashCode();
            rValue = 5;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.GetHasCode())");
        }

        // try {
        //  are.GetLifetimeService();
        //  rValue = 6;
        // }
        // catch (NullReferenceException) {
        //  Console.WriteLine("Caught NullReferenceException   (are.GetLifetimeService())");
        // }

        try {
            are.GetType();
            rValue = 7;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.GetType())");
        }

        // try {
        //  are.InitializeLifetimeService();
        //  rValue = 8;
        // }
        // catch (NullReferenceException) {
        //  Console.WriteLine("Caught NullReferenceException   (are.InitializeLifeTimeService())");
        // }

        try {
            are.Reset();
            rValue = 9;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.Reset())");
        }

        try {
            are.Set();
            rValue = 10;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.Set())");
        }

        try {
            are.ToString();
            rValue = 11;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.ToString())");
        }

        try {
            are.WaitOne();
            rValue = 12;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.WaitOne())");
        }

        try {
            are.WaitOne(1000);            //,true);
            rValue = 13;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.WaitOne(int,bool))");
        }

        // try {
        //  are.WaitOne(1000);//,false);
        //  rValue = 14;
        // }
        // catch (NullReferenceException) {
        //  Console.WriteLine("Caught NullReferenceException   (are.WaitOne(int,bool))");
        // }

        try {
            are.WaitOne(new TimeSpan(1000));            //,true);
            rValue = 15;
        }
        catch (NullReferenceException) {
            Console.WriteLine("Caught NullReferenceException   (are.WaitOne(TimeSpan,bool))");
        }

        // try {
        //  are.WaitOne(new TimeSpan(1000));//,false);
        //  rValue = 16;
        // }
        // catch (NullReferenceException) {
        //  Console.WriteLine("Caught NullReferenceException   (are.WaitOne(TimeSpan,bool))");
        // }

        Console.WriteLine("Return Code == {0}", rValue);
        return(rValue);
    }
        public byte[] clientSendRequestAnyTag(EnvelopType envelop, byte[] messageSide1, ref int envelop_tag)
        {
            EnvelopKey envelop_key = new EnvelopKey(envelop);

            Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequestAnyTag 1" + " / " + envelop_key + " -- " + instance_name);

            byte[] messageSide2 = null;
            Monitor.Enter(sync);
            try
            {
                // envia a requisição para o root parceiro
                int facet = envelop.Item3;
                Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequestAnyTag send to facet " + facet + " - nofsockets=" + client_socket_facet.Count + " / " + envelop_key + " -- " + instance_name);
                foreach (int f in client_socket_facet.Keys)
                {
                    Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequestAnyTag --- FACET KEY=" + f);
                }
                Socket socket = client_socket_facet [facet];
                byte[] messageSide1_enveloped_raw = ObjectToByteArray(new Tuple <EnvelopType, byte[]> (envelop, messageSide1));
                Int32  length = messageSide1_enveloped_raw.Length;
                byte[] messageSide1_enveloped_raw_ = new byte[4 + length];
                BitConverter.GetBytes(length).CopyTo(messageSide1_enveloped_raw_, 0);
                Array.Copy(messageSide1_enveloped_raw, 0, messageSide1_enveloped_raw_, 4, length);

                socket.Send(messageSide1_enveloped_raw_);

                Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequestAnyTag 2 nbytes=" + messageSide1_enveloped_raw.Length + " / " + envelop_key);

                // Verifica se já há resposta para a requisição no "conjunto de respostas pendentes de requisição"
                if (!reply_pending_list.ContainsKey(envelop_key))
                {
                    Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequestAnyTag 3 - BEFORE WAIT " + envelop_key);
                    // Se não houver, coloca um item no "conjunto de requisições pendentes de resposta" e espera.

                    if (!request_pending_list.ContainsKey(envelop_key))
                    {
                        request_pending_list [envelop_key] = new Dictionary <int, Queue <AutoResetEvent> >();
                    }

                    if (!request_pending_list [envelop_key].ContainsKey(-1))
                    {
                        request_pending_list [envelop_key][-1] = new Queue <AutoResetEvent>();
                        request_pending_list [envelop_key][-1].Enqueue(new AutoResetEvent(false));
                    }

                    AutoResetEvent sync_send = request_pending_list [envelop_key][-1].Peek();

                    //request_pending_list [envelop_key][envelop_tag] = sync_send;
                    Monitor.Exit(sync);
                    Console.WriteLine("clientSendRequestAny - WAIT / " + unit.CID.getInstanceName() + "/" + sync_send.GetHashCode() + " BEFORE !!! ");
                    sync_send.WaitOne();
                    Console.WriteLine("clientSendRequestAny - WAIT / " + unit.CID.getInstanceName() + "/" + sync_send.GetHashCode() + " AFTER !!! ");
                    Monitor.Enter(sync);
                    Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequestAnyTag 3 - AFTER WAIT " + envelop_key);
                }
                Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequestAnyTag 4" + " / " + envelop_key);

                int[] keys_vector = new int[reply_pending_list[envelop_key].Keys.Count];
                reply_pending_list[envelop_key].Keys.CopyTo(keys_vector, 0);

                envelop_tag = keys_vector[0];
                Queue <byte[]> pending_replies = reply_pending_list [envelop_key][envelop_tag];
                Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequestAnyTag 5 -- pending_replies.Count = " + pending_replies.Count);
                if (pending_replies.Count > 0)
                {
                    messageSide2 = reply_pending_list[envelop_key][envelop_tag].Dequeue();
                }

                if (pending_replies.Count == 0)
                {
                    reply_pending_list[envelop_key].Remove(envelop_tag);
                }

                if (reply_pending_list[envelop_key].Count == 0)
                {
                    reply_pending_list.Remove(envelop_key);
                }

                //reply_pending_list.Remove(envelop_key);
            }
            finally
            {
                Monitor.Exit(sync);
            }

            Trace.WriteLineIf(unit.TraceFlag == true, server_facet + "/" + rank + ": clientSendRequest 5");
            // retorna a menagem ...
            return(messageSide2);
        }