예제 #1
0
        public void DoStartServer()
        {
            var listener = new HttpListener();

            listener.Prefixes.Add(uri);
            isStarted = true;
            listener.Start();

            var context = listener.GetContext();

            using (var reader = new StreamReader(context.Request.InputStream))
            {
                var body       = reader.ReadToEnd();
                var notifyData = new NotifyData();
                notifyData.Deserialize(body);
                if (notifyData.Type == NotifyType.Email)
                {
                    var json   = notifyData.Data.ToString();
                    var entity = JsonConvert.DeserializeObject <MailEntity>(json);
                    var agent  = new MailAgent();
                    agent.Send(entity);
                }
            }

            var output = context.Response.OutputStream;

            output.Flush();
            output.Close();
        }
예제 #2
0
 protected void NotifyObservers(NotifyData data)
 {
     foreach (var obs in observers)
     {
         obs.Notify(data);
     }
 }
예제 #3
0
    public void handleBtnClick(INotifyData obj)
    {
        NotifyData <int> msg = obj as NotifyData <int>;

        if (msg != null)
        {
            GameModel    gameModel    = GameModel.getInstance();
            GameNotifier gameNotifier = GameNotifier.getInstance();

            bool needResult = false;

            //如果现在已经有数字, 加上去
            if (gameModel.opNumber > 0)
            {
                gameModel.opNumber += msg.data;
                needResult          = true;
            }
            else
            {
                gameModel.opNumber = msg.data;
            }

            //通知炮上的数字发生改变
            gameNotifier.notifydata((int)NotifyId.CANNON_NUMBER_CHANGE, gameModel.opNumber);

            //如果需要结算
            if (needResult)
            {
                handleOpResult();
            }
        }
    }
예제 #4
0
 // 通知事件
 private void OnSyncEvent(NotifyData data)
 {
     if (_func != null)
     {
         _func(data);    // 回调逻辑层
     }
 }
예제 #5
0
 public void Notify(NotifyData data)
 {
     if (Updatable)
     {
         _list.Add(data);
     }
 }
예제 #6
0
 /// <summary>
 /// Set a communications notification callback, or null to remove the callback.
 /// The registered delegate receives all communications on the TCP channels (both
 /// on the platform and on the data channel).
 /// Note:  Communications on the platform and data channels can be asynchronous on
 /// more than one thread.  The callback must disentangle if this might occur
 /// </summary>
 /// <param name="notifier"></param>
 public void SetTransportCallback(NotifyData notifier)
 {
     lock (CallbackLock)
     {
         Notifier = notifier;
     }
 }
예제 #7
0
    /// <summary>
    /// 更新进度
    /// </summary>
    private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
    {
        //UnityEngine.Debug.Log(e.ProgressPercentage);

        //UnityEngine.Debug.Log(string.Format("{0} MB's / {1} MB's",
        //    (e.BytesReceived / 1024d / 1024d).ToString("0.00"),
        //    (e.TotalBytesToReceive / 1024d / 1024d).ToString("0.00")));

        //float value = (float)e.ProgressPercentage / 100f;
        string speed = string.Format("{0} kb/s", (e.BytesReceived / 1024d / m_stopwatch.Elapsed.TotalSeconds).ToString("0.00"));

        object[]   evParam = { m_currDownFile, speed, e.BytesReceived };
        NotifyData data    = new NotifyData(NotifyConst.UPDATE_PROGRESS, evParam);

        if (m_SyncEvent != null)
        {
            m_SyncEvent(data);
        }

        //if ( e.ProgressPercentage == 100 && e.BytesReceived == e.TotalBytesToReceive )
        //{
        //    m_stopwatch.Reset();
        //    data = new NotifyData( NotifyConst.UPDATE_DOWNLOAD, m_currDownFile );
        //    if ( m_SyncEvent != null )
        //        m_SyncEvent( data );
        //}
    }
예제 #8
0
        /// <summary>
        /// Removes specified file from quarantine queue,
        /// also terminate file processing if performed
        /// </summary>
        /// <param name="FileName"></param>
        public static void CancelItemProcessing(long id,IntPtr[] Listeners)
        {
            lock (MainLock)
            {
                if (QueueLocked)
                {
                    return;
                }

                foreach (QuarantineItem item in ItemsQueue)
                {
                    if (item.ID == id)
                    {
                        ItemsQueue.Remove(item);
                        NotifyData data = new NotifyData();
                        data.ID = id;
                        SendQuarantineNotify(UM_QUARANTINE_ITEM_PROCESSING_CANCELED, data, Listeners);
                        return;
                    }
                }

                if (CurrentID == id)
                {
                    // File is processing right now
                    SkipCurrentItem = true;
                }
            }
        }
        public static DbNotifyData ConvertNotifyData(NotifyData notification)
        {
            int          nextId         = DbManager.Instance.GetNotifyWithMaxId();
            DbNotifyData DBnotification = new DbNotifyData(nextId, notification.Context, notification.UserName);

            return(DBnotification);
        }
예제 #10
0
        private async void Client_OnMessage(object sender, MessageEventArgs e)
        {
            byte[] byteMsg = e.RawData;
            string json    = Encoding.UTF8.GetString(byteMsg);// changed
            Dictionary <string, object> resDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(json);

            if (resDict.TryGetValue("_Opcode", out object opcodeObj))
            {
                int opcode = Convert.ToInt32(opcodeObj);
                if (opcode == (int)Opcode.NOTIFICATION)
                {
                    NotifyData notifyData = JsonConvert.DeserializeObject <NotifyData>(json);
                    await NotifierService.Update(notifyData.Context);
                }
                else if (opcode == (int)Opcode.STATISTICS)
                {
                    NotifyStatisticsData statData = JsonConvert.DeserializeObject <NotifyStatisticsData>(json);
                    await NotifierService.GotStatistics(statData.statistics);
                }
                else
                {
                    responses.Add(json);
                }
            }
        }
예제 #11
0
        public void Notify(NotifyData data)
        {
            List <string> result = new List <string>();

            if (data.ExtraData.Contains("STARTED"))
            {
                result.Add("Voting has just started!");
            }
            else if (data.IsOpen)
            {
                result.Add("Voting is open");
                if (data.VotesReceived != -1)
                {
                    result.Add("Option " + data.OptionName + " received " + data.VotesReceived + " votes");
                }
            }
            else
            {
                result.Add("Voting is closed");
            }
            if (data.IsValidated)
            {
                result.Add("Voting is now officialy validated!");
            }
            result.Add("Total/Eligible votes: " + data.TotalVoters + "/" + data.EligibleVoters);
            NotifyObservers(result);
        }
예제 #12
0
    // 上传进度
    private void UploadProgress(object sender, UploadProgressChangedEventArgs e)
    {
        string value = string.Format("{0} kb/s", (e.BytesSent / 1024d / _stopWatch.Elapsed.TotalSeconds).ToString("0.00"));

        object[]   evParam = { value, e.BytesSent };
        NotifyData data    = new NotifyData(NotifyConst.UPLOAD_PROGRESS, evParam);

        OnSyncEvent(data);
    }
예제 #13
0
    // 上传完成
    private void UploadCompleted(object sender, AsyncCompletedEventArgs e)
    {
        _stopWatch.Reset();
        // 通知逻辑层
        object[]   evParam = { _currUploadFile };
        NotifyData data    = new NotifyData(NotifyConst.UPLOAD, evParam);

        OnSyncEvent(data);
    }
예제 #14
0
    // 更新下载进度
    private void DownloadProgress(object sender, DownloadProgressChangedEventArgs e)
    {
        string speed = string.Format("{0} kb/s", (e.BytesReceived / 1024d / _stopWatch.Elapsed.TotalSeconds).ToString("0.00"));

        object[]   evParam = { _currDownFile, speed, e.BytesReceived };
        NotifyData data    = new NotifyData(NotifyConst.DOWNLOAD_PROGRESS, evParam);

        OnSyncEvent(data);
    }
예제 #15
0
        public DbNotifyer(NotifyData data)
        {
            m_Data = data;

            m_tbNotify             = new TaskbarIcon();
            m_tbNotify.Icon        = Resources.Database;
            m_tbNotify.ToolTipText = data.Title;

            SLLogEvents.ShowBallonTipp += OnShowLogBallonTipp;
        }
예제 #16
0
 protected static void UpdateData(NotifyData data)
 {
     using (LiveScoreContext dbContext = new LiveScoreContext())
     {
         LiveScore score = dbContext.LiveScore.Where(ls => ls.Css == data.ID.Replace("txt", "")).FirstOrDefault();
         //LiveScore score = dbContext.LiveScore.Where(ls => ls.ID == data.No).FirstOrDefault();
         score.Score = data.Score;
         dbContext.SaveChanges();
     }
 }
예제 #17
0
        private void RefreshData( )
        {
            NotifyData?data = Notify.GetDataByID(this.THREAD_ID);

            if (data.HasValue)
            {
                this.dataTemp = data.Value;
            }

            this.Refresh( );
        }
예제 #18
0
    /// <summary>
    /// 上传完成
    /// </summary>
    private void UploadFileCompleted(object sender, AsyncCompletedEventArgs e)
    {
        m_stopwatch.Reset();
        // 通知逻辑层
        object[]   evParam = { m_currUploadFile };
        NotifyData data    = new NotifyData(NotifyConst.UPLOAD, evParam);

        if (m_SyncEvent != null)
        {
            m_SyncEvent(data);
        }
    }
예제 #19
0
    private void startRound(INotifyData obj)
    {
        NotifyData <NotifyRoundStartMsg> msg = obj as NotifyData <NotifyRoundStartMsg>;

        //创建一个石球
        resetStoneBall(msg.data.result);

        cannon.clearNumber();

        //刷新按键数字
        numberBtnArea.refreshNumbers(msg.data.numbers);
    }
예제 #20
0
    private void onOpNumberChanged(INotifyData obj)
    {
        NotifyData <int> msg = obj as NotifyData <int>;

        if (msg.data <= 0)
        {
            numberText.text = "";
        }
        else
        {
            numberText.text = msg.data.ToString();
        }
    }
예제 #21
0
        public override void GetStateFromMemento(Memento mementoState)
        {
            var state = ((RefMemento)mementoState).GetState();

            _question      = state.title;
            IsOpen         = state.isopen;
            EligibleVoters = state.eligible;
            TotalVotes     = state.total;
            var mementoData = state.data;

            lastData = new NotifyData(IsOpen, mementoData.BallotNumber, mementoData.OptionName, mementoData.VotesReceived, IsValidated(), TotalVotes, _question, EligibleVoters, mementoData.ExtraData);
            NotifyObservers(mementoData);
        }
예제 #22
0
        public void notify(string username, NotifyData msg)
        {
            byte[] response;
            //get_session:
            WebSocketSession session = handler.GetSession(username);

            if (session == null)
            {
                //goto get_session;
                return;
            }
            response = handler.HandleNotification(msg);
            session.Send(response, 0, response.Length);
        }
 // 継続データの設定
 public static void SetContinueNotify()
 {
     lock (cointinueData) {
         try {
             var filename = Hm.Edit.FilePath ?? "";
             cointinueData = new NotifyData {
                 hasData = true, strFilePath = filename, time = timeGetTime()
             };
         } catch (Exception e)
         {
             System.Diagnostics.Trace.WriteLine(e.Message);
             System.Diagnostics.Trace.WriteLine(e.StackTrace);
         }
     }
 }
예제 #24
0
 public void Open(string title, string content)
 {
     App.Current.Dispatcher.Invoke((Action)(() =>
     {
         NotifyData data = new NotifyData();
         data.Title = title;
         data.Content = content;
         NotificationWindow dialog = new NotificationWindow();//new 一个通知
         dialog.Closed += Dialog_Closed;
         dialog.TopFrom = GetTopFrom();
         _dialogs.Add(dialog);
         dialog.DataContext = data;//设置通知里要显示的数据
         dialog.Show();
     }));
 }
예제 #25
0
        private void ShowNotification(string title, string msg)
        {
            NotifyData data = new NotifyData();

            data.Title   = title;
            data.Content = msg;

            NotificationDialog dialog = new NotificationDialog();//new 一个通知

            dialog.Closed += Dialog_Closed;
            dialog.TopFrom = GetTopFrom();
            _notificationDialogs.Add(dialog);
            dialog.DataContext   = data;//设置通知里要显示的数据
            dialog.ShowActivated = false;
            dialog.Show();
        }
예제 #26
0
        private async Task NotifyWithOutGroup(NotifyData input)
        {
            // 指定的用户连接Dictionary列表
            var dictUserConnections = await GetUserConnectDict(input.UserIds);

            var userConnects = dictUserConnections.SelectMany(m => m.Value).ToList();

            if (input.ExcludeUsers)
            {
                await _notifyHub.Clients.AllExcept(userConnects).OnNotify(input.NotifyObj);
            }
            else
            {
                await _notifyHub.Clients.Clients(userConnects).OnNotify(input.NotifyObj);
            }
        }
예제 #27
0
        public async Task Post(NotifyData input)
        {
            _logger.LogDebug($"post:{JsonConvert.SerializeObject(input)}");
            var hasGroups = !string.IsNullOrWhiteSpace(input.GroupIds);

            // input.NotifyObj= MessagePackSerializer.Deserialize<NotifyData>(MessagePackSerializer.SerializeUnsafe(input));
            input.NotifyObj = JsonConvert.SerializeObject(input.NotifyObj);
            if (hasGroups)
            {
                await NotifyWithGroup(input);
            }
            else
            {
                await NotifyWithOutGroup(input);
            }
        }
예제 #28
0
 /// <summary>
 /// 定时事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private async void Timer_Elapsed(object sender, ElapsedEventArgs e)
 {
     for (int i = 0; i < 3; i++)
     {
         var notifyData = new NotifyData()
         {
             Title   = "标题" + i,
             Content = DateTime.Now.AddHours(i).ToString()
         };
         EventData eventData = new EventData()
         {
             EventNotify = EventNotifyType.New,
             Data        = notifyData
         };
         Handler.EventNotify(eventData);
     }
 }
예제 #29
0
 public override void AddVotes(int choiceNr, string choiceTitle, int votes)
 {
     if (!IsOpen)
     {
         return;
     }
     if (TotalVotes + votes <= EligibleVoters)
     {
         TotalVotes += votes;
         var data = new NotifyData(number: choiceNr, optionName: choiceTitle, votes: votes, total: TotalVotes, eligible: EligibleVoters, validated: IsValidated());
         NotifyObservers(data);
     }
     else
     {
         EndVoting();
     }
 }
예제 #30
0
        /// <summary>
        /// Send message to Listeners
        /// </summary>        
        private static void SendQuarantineNotify(int notification, NotifyData data, IntPtr[] Listeners)
        {
            lock (MainLock)
            {
                if (Listeners == null)
                {
                    return;
                }

                foreach (IntPtr handle in Listeners)
                {
                    int size = Marshal.SizeOf(data);
                    IntPtr ptr = Marshal.AllocHGlobal(size);
                    Marshal.StructureToPtr(data, ptr, false);
                    Win32API.PostMessage(handle, notification, (uint)ptr.ToInt32(), 0);
                }
            }
        }