Пример #1
0
 public void NotifyPropertyChanged([CallerMemberName] string propertyName = null)
 {
     if (PropertyChanged != null)
     {
         PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
     }
     if (Subscribers != null && Subscribers.ContainsKey(propertyName))
     {
         Subscribers[propertyName]();
     }
 }
Пример #2
0
        private void OnHandleEventMessages(object sender, System.Timers.ElapsedEventArgs e)
        {
            if (Interlocked.CompareExchange(ref _running, 1, 0) != 0)
            {
                Logger.DebugFormat("OnHandleEventMessages is running. Current Thread[{thread}]", Thread.CurrentThread.ManagedThreadId);
                return;
            }

            Logger.DebugFormat("OnHandleEventMessages starts on the thread({threadid}).", Thread.CurrentThread.ManagedThreadId);

            var target = (System.Timers.Timer)sender;

            if (!target.Enabled)
            {
                Logger.Debug("EventHub's timer has stopped.");
                return;
            }

            Logger.Debug("EventHub's timer stops.");
            target.Stop();

            var messages = GetPendingMessages();

            foreach (var msg in messages)
            {
                List <IEventHandler> handlers;
                if (Subscribers.TryGetValue(msg.Kind, out handlers))
                {
                    foreach (var h in handlers)
                    {
                        try
                        {
                            Logger.DebugFormat("Executing the {handler}.", h.GetType().FullName);
                            h.Handle(msg);
                        }
                        catch (FailedHandleException ex)
                        {
                            Logger.ErrorFormat("Invoking handler error[FailedHandleException]:{@ex}.", ex);
                            PublishAsync(ex.FailedMessage);
                            Logger.DebugFormat("Failed message: {@msg}.", ex.FailedMessage);
                            continue;
                        }
                        catch (Exception ex)
                        {
                            Logger.ErrorFormat("Invoking handler error[Exception]:{@ex}.", ex);
                            continue;
                        }
                    }
                    Logger.DebugFormat("Destroy message({id}).", msg.Id);
                    DestroyMessage(msg.Id);
                }
            }

            Interlocked.CompareExchange(ref _running, 0, 1);

            Logger.Debug("EventHub's timer starts again.");
            target.Start();

            Logger.DebugFormat("OnHandleEventMessages ends on the thread({threadid}).", Thread.CurrentThread.ManagedThreadId);
        }
Пример #3
0
        public void AddMessageHandler <T>(Func <IHandler <T> > futureHandler) where T : Message
        {
            List <Func <Message, bool> > handlers;

            if (!_handlers.TryGetValue(typeof(T), out handlers))
            {
                handlers = new List <Func <Message, bool> >();
                _handlers.Add(typeof(T), handlers);
            }
            var handlerInstance    = futureHandler();
            var guaranteedDelivery = new GuaranteedOnceDelivery <T>(handlerInstance);

            IHandler <T> handler = new FutureHandler <T>(futureHandler);

            if (guaranteedDelivery.Enabled)
            {
                if (_messageLock == null)
                {
                    throw new Exception("IMessageLock is null. You need to specify an implementation for IMessageLock.");
                }

                handler = new ExactlyOnceHandler <T>(handler, _messageLock, guaranteedDelivery.TimeOut, handlerInstance.GetType().FullName.ToLower());
            }
            var executionTimeMonitoring = _messagingMonitor as IMeasureHandlerExecutionTime;

            if (executionTimeMonitoring != null)
            {
                handler = new StopwatchHandler <T>(handler, executionTimeMonitoring);
            }

            Subscribers.Add(new Subscriber(typeof(T)));
            handlers.Add(message => handler.Handle((T)message));
        }
Пример #4
0
        static async Task Main(string[] args)
        {
            try
            {
                MagazineStore m = new MagazineStore();

                // Get Token
                Token t = await m.GetToken();

                Console.WriteLine($"Retrieved Token : {t.token}");
                // Get Subscribers
                var tSubscribers = m.GetSubscribers(t.token);
                // Get Magazines
                var tMagazines = m.GetMagazines(t.token);
                Task.WaitAll(new Task[] { tSubscribers, tMagazines });
                Subscribers s         = tSubscribers.Result;
                var         magazines = tMagazines.Result;
                // Get List of Subscribers who subscribed magazine in each category
                var list = m.GetSubscribersForAllCategories(s.data, magazines);
                // Submit the answer and get the response
                AnswerResponse a = await m.PostAnswer(t.token, list);

                Console.WriteLine(JsonConvert.SerializeObject(a));
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Unhandled Exception : {ex.Message}");
            }
        }
Пример #5
0
        private static SubscribersList getMatchedSubscribers(Subscribers subscribers, Categories categories, List <Magazine> magazines)
        {
            SubscribersList matchedSubscribers = new SubscribersList();

            matchedSubscribers.subscribers = new List <string>();
            foreach (Subscriber subscriber in subscribers.data)
            {
                //build a list of categories this user subscribes to
                List <string> subscriberCategories = new List <string>();
                foreach (int id in subscriber.magazineIds)
                {
                    //get the category of this magazine
                    string category = magazines.Where(x => x.id == id).First().category;

                    //if it's not already on our list, add it
                    if (!subscriberCategories.Contains(category))
                    {
                        subscriberCategories.Add(category);
                    }
                }

                //if we have the same amount of categories, subscriber has one for each
                if (subscriberCategories.Count() == categories.data.Count())
                {
                    matchedSubscribers.subscribers.Add(subscriber.id);
                }
            }
            return(matchedSubscribers);
        }
 public SubscriberRequestCollection(IEnumerable <SubscriberItem> subscribers)
 {
     foreach (var subscriber in subscribers)
     {
         Subscribers.Add(subscriber);
     }
 }
Пример #7
0
        /// <summary>订阅主题</summary>
        /// <param name="user"></param>
        /// <param name="session"></param>
        /// <returns></returns>
        public Boolean Add(String user, IApiSession session)
        {
            if (Subscribers.ContainsKey(user))
            {
                return(false);
            }

            var scb = new Subscriber
            {
                User    = user,
                Session = session
            };

            Subscribers[user] = scb;

            var ds = session as IDisposable2;

            if (ds != null)
            {
                ds.OnDisposed += (s, e) => Remove(user);
            }

#if DEBUG
            var msg = new Message
            {
                Sender = user,
                Body   = "上线啦"
            };
            Enqueue(msg);
#endif

            return(true);
        }
Пример #8
0
 public ActionResult Index()
 {
     return(View(new HomeViewModel
     {
         Subscribers = Subscribers.ToList()
     }));
 }
Пример #9
0
        private void InitializeAppResponders(AppConf[] configs)
        {
            string currentMode = ProcessMode.Current.Mode.ToString();

            configs.Where(c => c.ProcessMode.Equals(currentMode)).Each(ac =>
            {
                OnAppContentResponderInitializing(ac);
                Logger.RestartLoggingThread();
                AppContentResponder responder = new AppContentResponder(this, ac)
                {
                    Logger = Logger
                };
                Subscribers.Each(logger =>
                {
                    logger.RestartLoggingThread();
                    responder.Subscribe(logger);
                });
                string appName = ac.Name.ToLowerInvariant();
                responder.Initialize();
                responder.FileUploading      += (o, a) => FileUploading?.Invoke(o, a);
                responder.FileUploaded       += (o, a) => FileUploaded?.Invoke(o, a);
                responder.Responded          += (r, context) => OnResponded(context);
                responder.NotResponded       += (r, context) => OnNotResponded(context);
                AppContentResponders[appName] = responder;

                OnAppContentResponderInitialized(ac);
            });
        }
Пример #10
0
        private static void LogLine(string msg, EventType eventType)
        {
            switch (eventType)
            {
            case EventType.Error:
                Logger.WriteError(Logger.EventId.NotDefined, msg, AdSyncLogCategory);
                break;

            case EventType.Warning:
                Logger.WriteWarning(Logger.EventId.NotDefined, msg, AdSyncLogCategory);
                break;

            case EventType.Info:
                Logger.WriteInformation(Logger.EventId.NotDefined, msg, AdSyncLogCategory);
                break;

            case EventType.Verbose:
                Logger.WriteVerbose(string.Format("  {0}", msg), AdSyncLogCategory);
                break;
            }

            Console.WriteLine(msg);

            // log event for subscriber of the current thread
            StringBuilder sb;

            if (Subscribers.TryGetValue(Thread.CurrentThread.GetHashCode(), out sb))
            {
                if (sb != null)
                {
                    sb.AppendLine(GetMsgWithTimeStamp(msg));
                }
            }
        }
 public SubscriberRequestCollection(IEnumerable <Uri> subscribers)
 {
     foreach (Uri subscriber in subscribers)
     {
         Subscribers.Add(subscriber);
     }
 }
Пример #12
0
        private Addons.TestAddon.TestAddon testAddon;                    // Reference ourselves lol?

        public TestAddon(Subscribers Subscriber) : base(Subscriber)
        {
            this.Name = this.GetType().Name;
            this.CoreDependencies.Add(typeof(Core.ServerQueryConnection.ServerQueryConnection).Name);
            this.CoreDependencies.Add(typeof(Core.ServerQueryShell.ServerQueryShell).Name);
            this.AddonDependencies.Add(typeof(Addons.TestAddon.TestAddon).Name);
        }
Пример #13
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Email")] Subscribers subscribers)
        {
            if (id != subscribers.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(subscribers);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SubscribersExists(subscribers.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(subscribers));
        }
Пример #14
0
        static void SendFreeGameMessage(Subscribers sub)
        {
            try
            {
                DatabaseContext db = new DatabaseContext();
                foreach (var game in games)
                {
                    if ((sub.wantsDlcInfo && game.gameType == "dlc") || (sub.wantsGameInfo && game.gameType == "game"))
                    {
                        if (db.notifications.Any(n => n.steamLink.StartsWith(game.steamLink) && n.chatID == sub.chatID))
                        {
                            continue;
                        }

                        bot.SendTextMessageAsync(sub.chatID, game.name + " just went free! " + game.steamLink);

                        Notifications notification = new Notifications();
                        notification.chatID    = sub.chatID;
                        notification.steamLink = game.steamLink;
                        db.notifications.Add(notification);
                        db.SaveChanges();

                        Thread.Sleep(1000); //Sleep 1 second between every message so I don't hit any limits
                    }
                }
            }
            catch { }
        }
Пример #15
0
        private static void Bot_OnCallbackQuery(object sender, Telegram.Bot.Args.CallbackQueryEventArgs e)
        {
            long chatID = e.CallbackQuery.Message.Chat.Id;

            DatabaseContext db  = new DatabaseContext();
            Subscribers     sub = db.subscribers.Where(s => s.chatID == chatID).FirstOrDefault();

            if (sub == null)
            {
                sub               = new Subscribers();
                sub.chatID        = chatID;
                sub.wantsDlcInfo  = false;
                sub.wantsGameInfo = false;
                db.subscribers.Add(sub);
            }

            switch (e.CallbackQuery.Data)
            {
            case gameOnly:
                sub.wantsDlcInfo  = false;
                sub.wantsGameInfo = true;

                bot.SendTextMessageAsync(
                    chatId: chatID,
                    text: "Thank you, I will let you know when I find some free games!",
                    replyMarkup: new ReplyKeyboardRemove()
                    );

                SendFreeGameMessage(sub);
                break;

            case gameanddlc:
                sub.wantsDlcInfo  = true;
                sub.wantsGameInfo = true;

                bot.SendTextMessageAsync(
                    chatId: chatID,
                    text: "Thank you, I will let you know when I find some free games and dlcs!",
                    replyMarkup: new ReplyKeyboardRemove()
                    );

                SendFreeGameMessage(sub);
                break;

            case dlcsOnly:
                sub.wantsDlcInfo  = true;
                sub.wantsGameInfo = false;

                bot.SendTextMessageAsync(
                    chatId: chatID,
                    text: "Thank you, I will let you know when I find some free dlcs!",
                    replyMarkup: new ReplyKeyboardRemove()
                    );

                SendFreeGameMessage(sub);
                break;
            }

            db.SaveChanges();
        }
Пример #16
0
            private void RemoveSubscription(string id, ref int subscriptions)
            {
                object o;

                if (Subscribers.TryRemove(id, out o))
                {
                    if (!Subscribers.Any())
                    {
                        var variable = new List <string> {
                            Name
                        };
                        var parent = Parent;
                        while (parent != null)
                        {
                            variable.Insert(0, parent.Name);
                            parent = parent.Parent;
                        }

                        using (var guard = new ReaderGuard(_papperLock))
                        {
                            _papper.SetActiveState(false, variable.FirstOrDefault(), variable.Skip(1).Aggregate((a, b) => $"{a}.{b}"));
                            _papper.UnsubscribeDataChanges(Name, OnDataChanged);
                        }
                    }
                    Interlocked.Decrement(ref subscriptions);
                }
                foreach (var child in Childs)
                {
                    child.Value.RemoveSubscription(id, ref subscriptions);
                }
            }
Пример #17
0
        public ActionResult AddSubcribe(Subscribers newsubscrib)
        {
            subscribers.Addsub(newsubscrib);
            string message = "SUCCESS";

            return(Json(new { Message = message, JsonRequestBehavior.AllowGet }));
        }
Пример #18
0
        public SubscriberAndPrefs FetchSubscriberAndPreferences()
        {
            lastcallContext c = new LastCallDatabase.lastcallContext();

            Subscribers person = c.Subscribers.Where(x => x.Id == 1).FirstOrDefault();

            if (person == null)
            {
                return(null);
            }

            Foodpreferences[] prefs = (from x in c.Foodpreferences where x.Subscriberid == person.Id select x).Include(x => x.Preference).ToArray();

            SubscriberAndPrefs result = new SubscriberAndPrefs(person);

            result.Preferences = new Preference[prefs.Length];

            for (int i = 0; i < prefs.Length; i++)
            {
                result.Preferences[i] = new Preference()
                {
                    Id = prefs[i].Id, Preftype = prefs[i].Preferenceid, Prefname = prefs[i].Preference.Foodtype
                }
            }
            ;

            return(result);
        }
Пример #19
0
        // https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework-core-scaffold-example.html
        private bool CheckUserRegistered(string email)
        {
            lastcallContext c          = new LastCallDatabase.lastcallContext();
            Subscribers     subscriber = c.Subscribers.Where((x) => x.Email == email).FirstOrDefault();

            return(subscriber != null);
        }
Пример #20
0
        private void addSubBtn_Click(object sender, EventArgs e)
        {
            Subscriber sub = new Subscriber(subTB.Text);

            Subscribers.Add(sub);
            RefreshSubscribers();
        }
Пример #21
0
 public void Unsubscribe(string uid)
 {
     lock (Subscribers)
     {
         Subscribers.Remove(uid);
     }
 }
Пример #22
0
        static void Main(string[] args)
        {
            token = getToken();
            Console.WriteLine("Token: " + token);

            //get categories
            Console.Write("Get categories... ");
            Categories categories = getCategories();

            Console.WriteLine("done.");


            //get subscribers
            Console.Write("Get subscribers... ");
            Subscribers subscribers = getSubscribers();

            Console.WriteLine("done.");

            //get all magazines from each category
            Console.Write("Get magazines... ");
            List <Magazine> magazines = getAllMagazines(categories.data);

            Console.WriteLine("done.");

            //for subscribers who match all categories
            SubscribersList matchedSubscribers = getMatchedSubscribers(subscribers, categories, magazines);

            string jsonAnswer = JsonConvert.SerializeObject(matchedSubscribers);
            string response   = postAnswer(jsonAnswer);

            parseAnswer(response);

            Console.WriteLine("Press any key to quit...");
            Console.ReadKey();
        }
Пример #23
0
        public async Task <IActionResult> Create([Bind("StoreId,StoreName,SellerFirstname,SellerLasttname,StoreDescription,PhoneNumber,Email")] Store store)
        {
            if (ModelState.IsValid)
            {
                await HttpContext.Session.LoadAsync();

                string userId = HttpContext.Session.GetString("UserId");
                int    userID = Convert.ToInt32(protector.Unprotect(userId));
                _context.Add(store);
                var user = await _context.Users
                           .FirstOrDefaultAsync(m => m.UserID == userID);

                await _context.SaveChangesAsync();

                Subscribers joined = new Subscribers()
                {
                    UserId   = userID,
                    StoreId  = store.StoreId,
                    Username = user.Username,
                    email    = user.email,
                    IsOwner  = true,
                };
                await _context.JoinedStore.AddAsync(joined);

                await _context.SaveChangesAsync();

                return(RedirectToAction("Dashboard", "Stores", new { ID = joined.StoreId }));
            }
            return(View(store));
        }
        public async Task automatically_sticks_in_replies_queue()
        {
            await configure();

            Subscribers.HasSubscriber(TransportConstants.RetryUri)
            .ShouldBeTrue();
        }
Пример #25
0
 public IActionResult AddSubscriber(Subscribers sub, [FromBody] Subscribers subscriber)
 {
     sub.DateModified = DateTime.Now;
     _context.Subscribers.Add(subscriber);
     _context.SaveChanges();
     return(Ok(subscriber));
 }
Пример #26
0
        public override AStarPlanResponse HandleRequest(AstarPlanRequest req)
        {
            // If there are no subscribers that want this request, it must be old. So remove it.
            if (Subscribers.Find(s => s.ID == req.Subscriber.ID) == null)
            {
                return(new AStarPlanResponse
                {
                    Path = null,
                    Success = false,
                    Request = req,
                    Result = AStarPlanner.PlanResultCode.Cancelled
                });
            }

            AStarPlanner.PlanResultCode result;
            List <MoveAction>           path = AStarPlanner.FindPath(req.Sender.Movement, req.Start, req.GoalRegion, req.Sender.Manager.World.ChunkManager,
                                                                     req.MaxExpansions, req.HeuristicWeight, Requests.Count, () => { return(Subscribers.Find(s => s.ID == req.Subscriber.ID && s.CurrentRequestID == req.ID) != null); }, out result);

            AStarPlanResponse res = new AStarPlanResponse
            {
                Path    = path,
                Success = (path != null),
                Request = req,
                Result  = result
            };

            return(res);
        }
Пример #27
0
 private void SubscribeToIpcMessageEvents(IpcMessage msg)
 {
     Subscribers.Each(logger =>
     {
         msg.Subscribe(logger);
     });
 }
Пример #28
0
        public void TableChanged(UspTableVersionChangeTrackingReturnModel table)
        {
            // get all the subscribers
            try
            {
                var subscriberKeys = (from c in Subscribers
                                      select c.Key).ToList();

                for (int i = subscriberKeys.Count - 1; i >= 0; i--)
                {
                    var keyValue = subscriberKeys.ElementAt(i);

                    IEventNotificationCallback callback = Subscribers[keyValue];
                    if (((ICommunicationObject)callback).State == CommunicationState.Opened)
                    {
                        //call back only those subscribers who are interested in this fileType
                        if (string.Equals(keyValue.TableInterested, table.Name, StringComparison.OrdinalIgnoreCase))
                        {
                            callback.PublishTableChange(table.Name, keyValue.Id);
                        }
                    }
                    else
                    {
                        //These subscribers are no longer active. Delete them from subscriber list
                        subscriberKeys.Remove(keyValue);
                        Subscribers.Remove(keyValue);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex, ex.Message);
                throw;
            }
        }
Пример #29
0
        public static void LogException(Exception ex)
        {
            Logger.WriteException(ex, AdSyncLogCategory);

            Console.WriteLine(string.Format("ERROR - exception: {0}", ex.Message));
            Console.WriteLine(ex.StackTrace);
            if (ex.InnerException != null)
            {
                Console.WriteLine(ex.InnerException.Message);
            }

            // log event for subscriber of the current thread
            StringBuilder sb;

            if (Subscribers.TryGetValue(Thread.CurrentThread.GetHashCode(), out sb))
            {
                if (sb != null)
                {
                    sb.AppendLine(string.Format("ERROR - exception: {0}", ex.Message));
                    sb.AppendLine(ex.StackTrace);
                    if (ex.InnerException != null)
                    {
                        sb.AppendLine(ex.InnerException.Message);
                    }
                }
            }

            //Logger.WriteError(string.Format("ERROR - exception: {0}", ex.Message));
            //LogMain(string.Format("        {0}", ex.StackTrace));
            //if (ex.InnerException != null)
            //{
            //    LogMain(string.Format("        {0}", ex.InnerException.Message));
            //}
            IncreaseError();
        }
Пример #30
0
        public static Subscribers FromConfiguration(this Subscribers subscribers)
        {
            if (EventBusConfigSection.CheckConfig)
            {
                subscribers = subscribers.WithCreator(DefaultSingleton <ICreator> .Instance);

                if (EventBusConfigSection.Current.Subscribers != null)
                {
                    EventBusConfigSection.Current.Subscribers.Assemblies.Cast <AssemblyElement>().ToList()
                    .ForEach(element =>
                    {
                        subscribers = subscribers.WithAssembly(Assembly.Load(element.Assembly));
                    });

                    EventBusConfigSection.Current.Subscribers.Events.Cast <EventTypeElement>().ToList()
                    .ForEach(element =>
                    {
                        typeof(Subscribers).GetMethod("Subscribe")
                        .MakeGenericMethod(Type.GetType(element.Name)).Invoke(subscribers, new object[] { });
                    });
                }
            }

            return(subscribers);
        }
 /// <summary>
 /// Creates an instance of <see cref="SubscriberMeasurementUserControl"/>.
 /// </summary>
 public SubscriberMeasurementUserControl()
 {
     InitializeComponent();
     m_dataContext = new Subscribers(1);
     m_dataContext.PropertyChanged += DataContext_PropertyChanged;
     StackPanelManageSubscriberMeasurements.DataContext = m_dataContext;
     UpdateFilterExpressions();
 }
Пример #32
0
 /// <summary>
 /// Creates an instance of <see cref="SubscriberStatusUserControl"/>.
 /// </summary>
 public SubscriberStatusUserControl()
 {
     InitializeComponent();
     this.Loaded += SubscriberStatusUserControl_Loaded;
     this.Unloaded += SubscriberStatusUserControl_Unloaded;
     m_dataContext = new Subscribers(20);
     this.DataContext = m_dataContext;
 }
Пример #33
0
 /// <summary>
 /// Creates an instance of <see cref="SubscriberUserControl"/>.
 /// </summary>
 public SubscriberUserControl()
 {
     InitializeComponent();
     this.Loaded += SubscriberUserControl_Loaded;
     this.Unloaded += SubscriberUserControl_Unloaded;
     m_dataContext = new Subscribers(10, false);
     this.DataContext = m_dataContext;
     m_dataContext.PropertyChanged += DataContext_PropertyChanged;
     m_dataContext.SecurityMode = !string.IsNullOrEmpty(m_dataContext.CurrentItem.RemoteCertificateFile) ? SecurityMode.TLS : SecurityMode.Gateway;
     m_certificateWaitHandle = new ManualResetEventSlim();
 }