Example #1
0
        public Game(int gameId, int playerCount, SendHandler sendFunct)
        {
            this.gameId      = gameId;
            this.playerCount = playerCount;
            SendCardToPlayer = sendFunct;

            switch (playerCount)
            {
            case 2:
                numRounds = 10;
                break;

            case 3:
                numRounds = 9;
                break;

            case 4:
                numRounds = 8;
                break;

            case 5:
                numRounds = 7;
                break;

            default:
                numRounds = 10;
                break;
            }
        }
Example #2
0
        protected void btnSave_Click(object sender, EventArgs e)
        {
            if (ddlProjects.SelectedValue == "")
            {
                ShowFailMessageToClient("Please select project.");
                return;
            }
            if (txtName.Text.Trim() == string.Empty)
            {
                ShowFailMessageToClient("Please enter title.");
                return;
            }
            EventsView eventModel = ConstructEventsView();
            List <EventInviteEntity> inviteList = BuilderInvite(eventModel);
            List <EventEntity>       eventList;

            //当开始日期和结束日期不是同一天且Repeat为None时,需要处理成Repeat为Every Day、且End为On date,EndDate为选择的结束日期
            if (eventModel.ToDay.Date > eventModel.FromDay.Date && eventModel.Repeat == RepeatType.None)
            {
                eventModel.Repeat  = RepeatType.Every_Day;
                eventModel.End     = EndType.on_date;
                eventModel.EndDate = eventModel.ToDay;
            }
            if (new EventsApplication().AddEvents(eventModel, inviteList, out eventList))
            {
                SendHandler handler = new SendHandler(SendEamil);
                handler.BeginInvoke(inviteList, eventList, null, null);
                SendEmail();
                Redirect(Request.RawUrl, false, true);
            }
            else
            {
                ShowFailMessageToClient("Add event Fail.");
            }
        }
Example #3
0
        private static void SendCallBack(IAsyncResult result)
        {
            AsyncResult resultObj = (AsyncResult)result;
            SendHandler sender    = (SendHandler)resultObj.AsyncDelegate;//获取原来的委托

            sender.EndInvoke(resultObj);
        }
Example #4
0
        /// <summary>
        /// 使用系统邮件模块配置的信息,异步发送邮件(信息配置错误可能导致VS报错)
        /// </summary>
        public static MailState Send(MailInfo mailInfo)
        {
            MailConfig  cfg    = SiteConfig.MailConfig;
            SendHandler sender = null;

            if (cfg.Port == 25)
            {
                sender = SendEmail;
            }
            else if (cfg.Port == 465)
            {
                sender = SendSSLEmail;
            }
            else
            {
                throw new Exception("邮件端口[" + cfg.Port + "]配置不正确");
            }
            if (string.IsNullOrEmpty(cfg.MailServerUserName))
            {
                throw new Exception("未配置发送邮箱,取消发送");
            }
            if (string.IsNullOrEmpty(cfg.MailServerPassWord))
            {
                throw new Exception("未配置发送邮箱密码,取消发送");
            }
            sender.BeginInvoke(cfg.MailServerUserName, cfg.MailServerPassWord, cfg.MailServer, mailInfo, "".Split(','), SendCallBack, null);
            return(MailState.Ok);
        }
Example #5
0
        /// <summary>
        /// save : 1:save ; 2:draft ;3 save and new
        /// </summary>
        /// <param name="save"></param>
        private void SaveTicket(int save)
        {
            ProjectsEntity projectsEntity = new ProjectApplication().Get(int.Parse(ddlProject.SelectedValue));

            //判断当前日期是否大于Project的End Date
            if (!projectApplication.CheckIfEstimated(projectsEntity))
            {
                ShowMessageToClient("This project is closed, if you need to submit new tickets for this project, please contact us at [email protected].",
                                    2, false, false);
                return;
            }

            TicketsEntity ticketsEntity = GetEntity(save, projectsEntity.ProjectID, projectsEntity.CompanyID);

            int result = new TicketsApplication().AddTickets(ticketsEntity);

            if (result > 0)
            {
                AddTicketUsers(projectsEntity, ticketsEntity, result);
                AddIniHistroy(ticketsEntity);

                if (!ticketsEntity.IsInternal)
                {
                    SendHandler handler = new SendHandler(SendEamil);
                    handler.BeginInvoke(ticketsEntity, UserInfo, null, null);
                }

                string fileName = hidUploadFile.Value;

                if (fileName.Trim() != string.Empty)
                {
                    string[] files = fileName.Split('|');
                    foreach (string str in files)
                    {
                        InsertFile(str, ticketsEntity.ProjectID, result, ticketsEntity.CompanyID);
                    }
                }

                switch (save)
                {
                case 1:
                    Redirect("/Ticket/Ongoing.aspx", true);
                    break;

                case 2:
                    Redirect("/Ticket/Draft.aspx", true);
                    break;

                case 3:
                    // ShowSuccessMessageToClient("The ticket has been added.", false, false);
                    Redirect("/Ticket/New.aspx?project=" + ddlProject.SelectedValue, true);
                    break;
                }
            }
            else
            {
                ShowFailMessageToClient();
            }
        }
Example #6
0
        public bool Send(byte[] buffer)
        {
            if (!this.IsAvaliable())
            {
                return(false);
            }
            SendHandler sh = new SendHandler(ServerManager.Send);

            return(sh.Invoke(this.DtuID, buffer)); // synchronized.
        }
Example #7
0
        public bool Asend(byte[] buffer)
        {
            if (!this.IsAvaliable())
            {
                return(false);
            }
            SendHandler sh = this._server.Send;

            return(sh.Invoke(this.DtuID, buffer)); // synchronized.
        }
Example #8
0
        private void EndSend(IAsyncResult asyncResult)
        {
            if (asyncResult == null)
            {
                return;
            }
            SendHandler handler = (SendHandler)(asyncResult.AsyncState);

            handler.EndInvoke(asyncResult);
        }
Example #9
0
        public void destination_is_required_according_to_the_specification()
        {
            var repos  = Substitute.For <IQueueRepository>();
            var client = Substitute.For <IStompClient>();
            var msg    = new BasicFrame("SEND");

            var    handler = new SendHandler(repos);
            Action actual  = () => handler.Process(client, msg);

            actual.ShouldThrow <BadRequestException>();
        }
Example #10
0
 public void registerIOHandler(byte port, ReceiveHandler rcv, SendHandler snd)
 {
     if (rcv != null)
     {
         m_INHandler.Add(port, rcv);
     }
     if (snd != null)
     {
         m_OUTHandler.Add(port, snd);
     }
 }
Example #11
0
        public static void SendWebHttpRequestFullAsync(String url, String verb, String requestJson, AsyncCallback callBack)
        {
            WebRequest wr = WebRequest.Create(url);

            wr.ContentType = "text/plain";
            wr.Method      = verb;
            wr.Timeout     = 10000;
            SendHandler handler = new SendHandler(SendRequest);

            handler.BeginInvoke(wr, requestJson, callBack, wr);
        }
Example #12
0
        public MOS6522(string Designation, CPU8Bit cpu, UInt16 BaseAddress)
        {
            m_Designation = Designation;

            cpu.registerMemoryAccess(BaseAddress, (UInt16)(BaseAddress + 0x0F), read, write);

            m_sendOutputA   = null;
            m_sendOutputB   = null;
            m_sendInterrupt = null;

            reset();
        }
Example #13
0
        protected void btn_Click(object sender, EventArgs e)
        {
            SendHandler handler = new SendHandler(SendEamil);

            handler.BeginInvoke(null, null);
            Response.Redirect("/SunnetTicket/MyTicket.aspx");

            Izl zl = new B();

            zl.start();
            Ipb pb = zl as Ipb;

            pb.jasu();
        }
Example #14
0
        public void content_length_is_required_if_a_body_is_present()
        {
            var repos  = Substitute.For <IQueueRepository>();
            var client = Substitute.For <IStompClient>();
            var msg    = new BasicFrame("SEND");

            msg.Headers["destination"]  = "/queue/momas";
            msg.Headers["content-type"] = "text/plain";
            msg.Body = new MemoryStream();

            var    handler = new SendHandler(repos);
            Action actual  = () => handler.Process(client, msg);

            actual.ShouldThrow <BadRequestException>();
        }
Example #15
0
        public IAsyncResult BeginSend(string subject, string body, string from, List <string> attachmentList, List <string> toList, List <string> ccList, List <string> bccList)
        {
            SendHandler  handler     = new SendHandler(Send);
            IAsyncResult asyncResult = null;

            try
            {
                asyncResult = handler.BeginInvoke(subject, body, from, attachmentList, toList, ccList, bccList, EndSend, handler);
            }
            catch (Exception exception)
            {
                logger.Error("Mail Send Exception:", exception);
            }
            return(asyncResult);
        }
Example #16
0
        public void enlist_transaction_messages()
        {
            var repos  = Substitute.For <IQueueRepository>();
            var client = Substitute.For <IStompClient>();
            var msg    = new BasicFrame("SEND");

            msg.Headers["destination"] = "/queue/momas";
            msg.Headers["transaction"] = "10";

            var handler = new SendHandler(repos);
            var actual  = handler.Process(client, msg);

            actual.Should().BeNull();
            client.Received().EnqueueInTransaction("10", Arg.Any <Action>(), Arg.Any <Action>());
        }
Example #17
0
        public void copy_all_unknown_headers()
        {
            var repos  = Substitute.For <IQueueRepository>();
            var client = Substitute.For <IStompClient>();
            var msg    = new BasicFrame("SEND");

            msg.Headers["destination"] = "/queue/momas";
            msg.Headers["feck"]        = "fock";
            msg.Headers["fack"]        = "fick";

            var handler = new SendHandler(repos);
            var actual  = handler.Process(client, msg);

            actual.Headers["feck"].Should().Be("fock");
            actual.Headers["fack"].Should().Be("fick");
        }
Example #18
0
        public BgwProtocol(Circuit circuit, ReadOnlyCollection <int> pIds,
                           AsyncParty e, Zp pInput, SendHandler send, StateKey stateKey)
            : base(e, pIds, pInput, send, stateKey)
        {
            Debug.Assert(circuit.InputCount == pIds.Count);
            Circuit = circuit;
            Prime   = pInput.Prime;

            // to get the maximum polynomial degree, we should ask if there is a MUL in the circuit
            // Mahdi: This is probably valid only when we assume a reliable broadcast channel.
            //PolynomialDeg = circuit.MultipleContained ? (NumEntities - 1) / 2 : NumEntities - 1;

            // Mahdi: Changed to the following since n/3 - 1 of players can be dishonest.
            // degree = n - t, where t is the number of dishonest players
            PolynomialDeg = (int)Math.Floor(2 * NumParties / 3.0);
        }
Example #19
0
        public void message_with_content_should_be_copied()
        {
            var repos  = Substitute.For <IQueueRepository>();
            var client = Substitute.For <IStompClient>();
            var msg    = new BasicFrame("SEND");

            msg.Headers["destination"]    = "/queue/momas";
            msg.Headers["content-type"]   = "text/plain";
            msg.Headers["content-length"] = "100";
            msg.Body = new MemoryStream(new byte[100], 0, 100);

            var handler = new SendHandler(repos);
            var actual  = handler.Process(client, msg);

            actual.Body.Should().NotBeNull();
            actual.Body.Length.Should().Be(100);
            actual.Body.Position.Should().Be(0);
            actual.Headers["content-length"].Should().Be("100");
            actual.Headers["content-type"].Should().Be("text/plain");
        }
Example #20
0
        public virtual void Send(uint packetId, object packet)
        {
            var cancel = SendHandler.HandlePacket(packetId, packet)?.Cancel ?? false;

            if (cancel)
            {
                return;
            }

            var ds = new DataStream {
                IsLittleEndian = false
            };
            var ok = PacketsRegistry.Serialize(packetId, ds, packet);

            if (ok)
            {
                Send(packetId, ds);
                SendCompleteHandler.HandlePacket(packetId, packet);
            }
            else
            {
                Log.Error("Try to send unknown packet {0}", packetId);
            }
        }
Example #21
0
        /// <summary>
        /// 异步发送邮件,并将发送记录备份
        /// </summary>
        /// <param name="model">邮件信息模型</param>
        /// <param name="dataDT">不为空则对每个模板格式化后再发送</param>
        public static void SendAsync(M_EMail_Item model)
        {
            B_EMail_Item itemBll = new B_EMail_Item();
            MailConfig   cfg     = SiteConfig.MailConfig;
            SendHandler  sender  = null;

            try
            {
                if (string.IsNullOrEmpty(model.FromEmail))
                {
                    model.FromEmail = cfg.MailServerUserName;
                }
                if (string.IsNullOrEmpty(model.FromName))
                {
                    model.FromName = SiteConfig.SiteInfo.Webmaster;
                }
                if (cfg.Port == 25)
                {
                    sender = SendEmail;
                }
                else if (cfg.Port == 465)
                {
                    sender = SendSSLEmail;
                }
                else
                {
                    throw new Exception("邮件端口[" + cfg.Port + "]配置不正确");
                }
                if (string.IsNullOrEmpty(cfg.MailServerUserName))
                {
                    throw new Exception("未配置发送邮箱,取消发送");
                }
                if (string.IsNullOrEmpty(cfg.MailServerPassWord))
                {
                    throw new Exception("未配置发送邮箱密码,取消发送");
                }
                model.Result = 1; model.Error = "";
            }
            catch (Exception ex) { model.Result = -1; model.Error = ex.Message; return; }
            model.ID = itemBll.Insert(model);
            //----------------发送邮件(单个发送)
            string[] emails   = model.ToAddress.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            string   mailBody = model.MailBody;

            for (int i = 0; i < emails.Length; i++)
            {
                M_EMail_Item mailMod = new M_EMail_Item()
                {
                    ID         = model.ID,
                    ToAddress  = emails[i],
                    Subject    = model.Subject,
                    MailBody   = mailBody,
                    FromName   = model.FromName,
                    FromEmail  = model.FromEmail,
                    Attachment = model.Attachment
                };
                //如果不需要每次循环时编译,应该在上层处理好再传入
                if (mailMod.C_NeedTranslate)
                {
                    DataRow dr = null;
                    if (model.C_DataDT != null && model.C_DataDT.Rows.Count > i)
                    {
                        dr = model.C_DataDT.Rows[i];
                    }
                    mailMod.MailBody = TlpDeal(mailBody, dr);
                }
                sender.BeginInvoke(cfg.MailServerUserName, cfg.MailServerPassWord, cfg.MailServer
                                   , mailMod, SendCallBack, null);
            }
        }
Example #22
0
 public static void SendWebHttpRequestFullAsync(String url, String verb, String requestJson, AsyncCallback callBack)
 {
     WebRequest wr = WebRequest.Create(url);
     wr.ContentType = "text/plain";
     wr.Method = verb;
     wr.Timeout = 10000;
     SendHandler handler = new SendHandler(SendRequest);
     handler.BeginInvoke(wr, requestJson, callBack, wr);
 }
Example #23
0
        protected virtual void ConnectWork()
        {
            try
            {
                if (_Url != null)
                {
                    bool isMulticastOrBroadcast = false;
                    int  port = 0;

                    Uri uri = new Uri(_Url);
                    port = uri.Port;
                    var addresses = Dns.GetHostAddresses(uri.DnsSafeHost);
                    if (addresses != null && addresses.Length > 0)
                    {
                        var address = addresses[0];
                        if (address.AddressFamily == AddressFamily.InterNetwork)
                        {
                            if (address.Equals(IPAddress.Broadcast))
                            {
                                isMulticastOrBroadcast = true;
                            }
                            else
                            {
                                var firstb = address.GetAddressBytes()[0];
                                if (firstb >= 224 && firstb < 240)
                                {
                                    isMulticastOrBroadcast = true;
                                }
                            }
                        }
                        else if (address.AddressFamily == AddressFamily.InterNetworkV6)
                        {
                            if (address.IsIPv6Multicast)
                            {
                                isMulticastOrBroadcast = true;
                            }
                        }
                        _Socket = new Socket(address.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
                        if (isMulticastOrBroadcast)
                        {
                            _Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
                            if (address.AddressFamily == AddressFamily.InterNetworkV6)
                            {
#if NET_STANDARD_2_0 || NET_4_6
                                // Notice: it is a pitty that unity does not support ipv6 multicast. (Unity 5.6)
                                _Socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.AddMembership, new IPv6MulticastOption(address));
                                _Socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.MulticastTimeToLive, 5);
#endif
                                _Socket.Bind(new IPEndPoint(IPAddress.IPv6Any, 0));
                            }
                            else
                            {
                                if (!address.Equals(IPAddress.Broadcast))
                                {
                                    _Socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(address, IPAddress.Any));
                                    _Socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 5);
                                }
                                _Socket.Bind(new IPEndPoint(IPAddress.Any, 0));
                            }
                            _BroadcastEP = new IPEndPoint(address, port);
                        }
                        else
                        {
                            _Socket.Connect(address, port);
                        }
                    }
                }
                if (_Socket != null)
                {
                    if (_PreStart != null)
                    {
                        _PreStart(this);
                    }
                    byte[]   receivebuffer = new byte[CONST.MTU];
                    int      receivecnt    = 0;
                    EndPoint broadcastRespEP;
                    if (_BroadcastEP != null && _BroadcastEP.AddressFamily == AddressFamily.InterNetworkV6)
                    {
                        broadcastRespEP = new IPEndPoint(IPAddress.IPv6Any, 0);
                    }
                    else
                    {
                        broadcastRespEP = new IPEndPoint(IPAddress.Any, 0);
                    }
                    Action BeginReceive = () =>
                    {
                        if (_BroadcastEP != null)
                        {
                            _Socket.BeginReceiveFrom(receivebuffer, 0, CONST.MTU, SocketFlags.None, ref broadcastRespEP, ar =>
                            {
                                try
                                {
                                    receivecnt = _Socket.EndReceiveFrom(ar, ref broadcastRespEP);
                                }
                                catch (Exception e)
                                {
                                    if (IsConnectionAlive)
                                    {
                                        _ConnectWorkCanceled = true;
                                        PlatDependant.LogError(e);
                                    }
                                }
                                _HaveDataToSend.Set();
                            }, null);
                        }
                        else
                        {
                            _Socket.BeginReceive(receivebuffer, 0, CONST.MTU, SocketFlags.None, ar =>
                            {
                                try
                                {
                                    receivecnt = _Socket.EndReceive(ar);
                                }
                                catch (Exception e)
                                {
                                    if (IsConnectionAlive)
                                    {
                                        _ConnectWorkCanceled = true;
                                        PlatDependant.LogError(e);
                                    }
                                }
                                _HaveDataToSend.Set();
                            }, null);
                        }
                    };
                    if (_OnReceive != null)
                    {
                        BeginReceive();
                    }
                    while (!_ConnectWorkCanceled)
                    {
                        if (_OnReceive != null)
                        {
                            if (receivecnt > 0)
                            {
                                if (_BroadcastEP != null && _WaitForBroadcastResp)
                                {
                                    _OnReceive(receivebuffer, receivecnt, broadcastRespEP);
                                    receivecnt = 0;
                                    BeginReceive();
                                }
                                else
                                {
                                    if (_BroadcastEP != null)
                                    {
                                        _Socket.Connect(broadcastRespEP);
                                        _BroadcastEP = null;
                                    }
                                    _OnReceive(receivebuffer, receivecnt, _Socket.RemoteEndPoint);
                                    receivecnt = 0;
                                    BeginReceive();
                                }
                            }
                        }

                        if (!HoldSending)
                        {
                            BufferInfo binfo;
                            while (_PendingSendMessages.TryDequeue(out binfo))
                            {
                                var message = binfo.Buffer;
                                int cnt     = binfo.Count;
                                if (_OnSend != null && _OnSend(message, cnt))
                                {
                                    if (_OnSendComplete != null)
                                    {
                                        _OnSendComplete(message, true);
                                    }
                                }
                                else
                                {
                                    SendRaw(message, cnt, success =>
                                    {
                                        if (_OnSendComplete != null)
                                        {
                                            _OnSendComplete(message, success);
                                        }
                                    });
                                }
                            }
                        }

                        if (_OnUpdate != null)
                        {
                            _OnUpdate(this);
                        }

                        var waitinterval = _UpdateInterval;
                        var easeratio    = _EaseUpdateRatio;
                        if (waitinterval > 0 && easeratio > 0)
                        {
                            var easeinterval = waitinterval * easeratio;
                            if (_LastSendTick + easeinterval <= System.Environment.TickCount)
                            {
                                waitinterval = easeinterval;
                            }
                        }
                        _HaveDataToSend.WaitOne(waitinterval);
                    }
                }
            }
            catch (ThreadAbortException)
            {
                Thread.ResetAbort();
            }
            catch (Exception e)
            {
                PlatDependant.LogError(e);
            }
            finally
            {
                _ConnectWorkRunning  = false;
                _ConnectWorkCanceled = false;
                if (_PreDispose != null)
                {
                    _PreDispose(this);
                }
                if (_Socket != null)
                {
                    _Socket.Close();
                    _Socket = null;
                }
                // set handlers to null.
                _OnReceive      = null;
                _OnSend         = null;
                _OnSendComplete = null;
                _OnUpdate       = null;
                _PreDispose     = null;
            }
        }
Example #24
0
        protected virtual void ConnectWork()
        {
            try
            {
                PrepareSocket();
                if (_Socket != null)
                {
                    byte[] receivebuffer = new byte[CONST.MTU];
                    int    receivecnt    = 0;
                    Action BeginReceive  = () =>
                    {
                        _Socket.BeginReceive(receivebuffer, 0, 1, SocketFlags.None, ar =>
                        {
                            try
                            {
                                receivecnt = _Socket.EndReceive(ar);
                                if (receivecnt > 0)
                                {
                                    var bytesRemaining = _Socket.Available;
                                    if (bytesRemaining > 0)
                                    {
                                        if (bytesRemaining > CONST.MTU - 1)
                                        {
                                            bytesRemaining = CONST.MTU - 1;
                                        }
                                        receivecnt += _Socket.Receive(receivebuffer, 1, bytesRemaining, SocketFlags.None);
                                    }
                                }
                                else
                                {
                                    if (_ConnectWorkRunning)
                                    {
                                        _ConnectWorkCanceled = true;
                                    }
                                }
                            }
                            catch (Exception e)
                            {
                                if (IsConnectionAlive)
                                {
                                    _ConnectWorkCanceled = true;
                                    PlatDependant.LogError(e);
                                }
                            }
                            _HaveDataToSend.Set();
                        }, null);
                    };
                    BeginReceive();
                    while (!_ConnectWorkCanceled)
                    {
                        if (receivecnt > 0)
                        {
                            if (_OnReceive != null)
                            {
                                _OnReceive(receivebuffer, receivecnt, _Socket.RemoteEndPoint);
                            }
                            receivecnt = 0;
                            BeginReceive();
                        }

                        BufferInfo binfo;
                        while (_PendingSendMessages.TryDequeue(out binfo))
                        {
                            var message = binfo.Buffer;
                            int cnt     = binfo.Count;
                            if (_OnSend != null && _OnSend(message, cnt))
                            {
                                if (_OnSendComplete != null)
                                {
                                    _OnSendComplete(message, true);
                                }
                            }
                            else
                            {
                                SendRaw(message, cnt, success =>
                                {
                                    if (_OnSendComplete != null)
                                    {
                                        _OnSendComplete(message, success);
                                    }
                                });
                            }
                        }

                        _HaveDataToSend.WaitOne();
                    }
                    _Socket.Shutdown(SocketShutdown.Both);
                }
            }
            catch (ThreadAbortException)
            {
                Thread.ResetAbort();
            }
            catch (Exception e)
            {
                PlatDependant.LogError(e);
            }
            finally
            {
                _ConnectWorkRunning  = false;
                _ConnectWorkCanceled = false;
                if (_PreDispose != null)
                {
                    _PreDispose(this);
                }
                if (_Socket != null)
                {
                    _Socket.Close();
                    _Socket = null;
                }
                // set handlers to null.
                _OnReceive      = null;
                _OnSend         = null;
                _OnSendComplete = null;
                _PreDispose     = null;
            }
        }
        public void SendTuple(Tuple tuple)
        {
            string routing = ((Replica)(this.Send.Target)).routing();

            tuple.sent = true;
            if (routing.Contains("primary"))
            {
                //Console.WriteLine("Routing: primary");
                int     repl_id = -1;
                Boolean success = false;
                while (!success)
                {
                    repl_id++;
                    try {
                        if (this.Send.GetInvocationList().Length - 1 < repl_id)
                        {
                            return;
                        }
                        SendHandler send = (SendHandler)Array.Find(this.Send.GetInvocationList(),
                                                                   r => ((Replica)(r.Target)).id == repl_id);
                        send(this, (EventArgs)tuple);
                        success = true;
                        if (op.last)
                        {
                            tuple.origin.ack(tuple);
                        }
                    }
                    catch (Exception) {
                        if (semantics.Contains("at-most-once"))
                        {
                            return;
                        }
                        Console.WriteLine("Failed to send tuple to replica " + repl_id);
                        Console.WriteLine("Trying to send tuple to replica " + (repl_id++) + "...");
                        success = false;
                    }
                }
            }
            else if (routing.Contains("hashing"))
            {
                int field_index = Int32.Parse(routing.Split('(')[1].Split(')')[0]);
                //Console.WriteLine("Routing: hashing(" + field + ")");

                string field_value = tuple.Get(field_index);
                MD5    md5Hasher   = MD5.Create();
                byte[] hashed      = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(field_value));
                int    hash        = BitConverter.ToInt32(hashed, 0);

                List <SendHandler> handlers = new List <SendHandler>();
                foreach (Delegate handler in this.Send.GetInvocationList())
                {
                    handlers.Add((SendHandler)handler);
                }

                Boolean success = false;
                int     index   = -1;
                while (!success)
                {
                    try {
                        if (handlers.Count == 0)
                        {
                            return;
                        }
                        index = hash % handlers.Count;
                        SendHandler send = handlers[index];
                        send(this, (EventArgs)tuple);
                        success = true;
                    }
                    catch (Exception) {
                        if (semantics.Contains("at-most-once"))
                        {
                            return;
                        }
                        if (index == -1)
                        {
                            return;
                        }
                        Console.WriteLine("Failed to send tuple to replica " + index);
                        handlers.RemoveAt(index);
                        Console.WriteLine("Trying to send to another random replica...");
                    }
                }
            }
            else if (routing.Contains("random"))
            {
                //Console.WriteLine("Routing: random");

                List <SendHandler> handlers = new List <SendHandler>();
                foreach (Delegate handler in this.Send.GetInvocationList())
                {
                    handlers.Add((SendHandler)handler);
                }

                Boolean success = false;
                int     index   = -1;
                while (!success)
                {
                    try {
                        if (handlers.Count == 0)
                        {
                            return;
                        }
                        index = new Random().Next(0, handlers.Count);
                        SendHandler send = handlers[index];
                        send(this, (EventArgs)tuple);
                        success = true;
                    } catch (Exception) {
                        if (semantics.Contains("at-most-once"))
                        {
                            return;
                        }
                        Console.WriteLine("Failed to send tuple to replica " + index);
                        if (index == -1)
                        {
                            return;
                        }
                        handlers.RemoveAt(index);
                        Console.WriteLine("Trying to send to another random replica...");
                    }
                }
            }
            try { tuple.father.origin.ack(tuple.father); }
            catch (Exception) { Console.WriteLine("Cannot sent ack!"); }
            sent_tuples[tuple.id] = tuple;
        }
Example #26
0
        private void Send_Click(object sender, EventArgs e)
        {
            if (urlTxt.Text.Length != 0)
            {
                try
                {
                    //string s = HTTPHelper.SendWebHttpRequest(urlTxt.Text.Trim(), comboBox1.Text, jasonInput.Text);
                    //jasonOutput.Text = s;


                    //for (int i = 0; i < 100; i++)
                    //{
                    //    HTTPHelper.SendWebHttpRequestAsync(urlTxt.Text.Trim(), comboBox1.Text, jasonInput.Text, (wr) =>
                    //        {
                    //            //MessageBox.Show("now threadID:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
                    //            Console.WriteLine("now threadID:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
                    //            //System.Threading.Thread.Sleep(100);
                    //            if (wr != null)
                    //            {
                    //                if (wr != null)
                    //                {
                    //                    using (var httpResp = (HttpWebResponse)wr.GetResponse())
                    //                    {
                    //                        if (httpResp.StatusCode == HttpStatusCode.BadRequest)
                    //                        {
                    //                            var buff = new byte[httpResp.ContentLength];
                    //                            using (var response = httpResp.GetResponseStream())
                    //                            {
                    //                                if (response != null)
                    //                                {
                    //                                    response.Read(buff, 0, (int)httpResp.ContentLength);
                    //                                }
                    //                            }

                    //                            throw new InvalidOperationException(
                    //                                string.Format("Some error occurred while sending request to Elasticsearch.{0}{1}",
                    //                                    Environment.NewLine, Encoding.UTF8.GetString(buff)));
                    //                        }
                    //                        else
                    //                        {
                    //                            using (var sr = new StreamReader(httpResp.GetResponseStream(), Encoding.UTF8))
                    //                            {
                    //                                string s = sr.ReadToEnd();
                    //                                //Console.WriteLine(s);
                    //                                jasonOutput.Text = s;
                    //                            }
                    //                        }

                    //                    }
                    //                }
                    //            }
                    //        });

                    //}


                    for (int i = 0; i < 10000; i++)
                    {
                        HTTPHelper.SendWebHttpRequestFullAsync(urlTxt.Text.Trim(), comboBox1.Text, jasonInput.Text, delegate(IAsyncResult ar)
                        {
                            Console.WriteLine("CallBack threadID:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
                            if (ar == null)
                            {
                                return;
                            }


                            CallBacks.WebRequestCallBacks(ar, new MyProcess());

                            AsyncResult arr     = ar as AsyncResult;
                            SendHandler handler = arr.AsyncDelegate as SendHandler;
                            handler.EndInvoke(ar);
                        });

                        Console.WriteLine("III threadID:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
                    }
                }
                catch (Exception ex)
                {
                    jasonOutput.Text = ex.ToString();
                }
                finally
                {
                }
            }
        }