public override async Task SendData( IAsyncStreamReader <MyMessage> requestStream, IServerStreamWriter <MyMessage> responseStream, ServerCallContext context) { var httpContext = context.GetHttpContext(); _logger.LogInformation($"Connection id: {httpContext.Connection.Id}"); if (!await requestStream.MoveNext()) { return; } var user = requestStream.Current.Name; _logger.LogInformation($"{user} connected"); var subscriber = new SubscribersModel { Subscriber = responseStream, Name = user }; _serverGrpcSubscribers.AddSubscriber(subscriber); do { await _serverGrpcSubscribers.BroadcastMessageAsync(requestStream.Current); } while (await requestStream.MoveNext()); _serverGrpcSubscribers.RemoveSubscriber(subscriber); _logger.LogInformation($"{user} disconnected"); }
// [HttpPost] public ActionResult SaveSubscribers(bool status, Guid?UserId) { SubscribersModel model = new SubscribersModel(); if (UserId == null) { model.ProfileUserId = User.Identity.GetUserId(); } else { model.ProfileUserId = UserId.ToString(); } model.SubscriptionStatus = status; model.SubscriberUserId = User.Identity.GetUserId(); try { var value = data.SaveSubscribers(SessionToken, model); return(Redirect(ControllerContext.HttpContext.Request.UrlReferrer.ToString())); } catch (Exception ex) { return(View("~/Views/Errorpage/Errorpage.cshtml")); } }
public void AddSubscriber(SubscribersModel subscriber) { bool added = Subscribers.TryAdd(subscriber.Name, subscriber); _logger.LogInformation($"New subscriber added: {subscriber.Name}"); if (!added) { _logger.LogInformation($"could not add subscriber: {subscriber.Name}"); } }
public RequestResult <SubscribersModel> SaveSubscribers(string sessionToken, SubscribersModel model) { try { return(_repository.SaveSubscribers(sessionToken, model)); } catch (Exception ex) { throw ex; } }
public void RemoveSubscriber(SubscribersModel subscriber) { try { Subscribers.TryRemove(subscriber.Name, out SubscribersModel item); _logger.LogInformation($"Force Remove: {item.Name} - no longer works"); } catch (Exception ex) { _logger.LogError(ex, $"Could not remove {subscriber.Name}"); } }
public RequestResult <SubscribersModel> SaveSubscribers(string sessionToken, SubscribersModel model) { string parameters = $"/savecommonfunctionality/savesubscribers?sessionToken={sessionToken}"; try { var serilizedData = JsonConvert.SerializeObject(model); return(PostAndGetData <RequestResult <SubscribersModel> >(sessionToken, parameters, serilizedData)); } catch (Exception ex) { throw ex; } }
public ActionResult Subscribe([Bind(Include = "SubscriberEmail")] SubscribersModel subscribersModel) { var ReturnUrl = Request.Form["ReturnUrl"]; if (string.IsNullOrEmpty(ReturnUrl)) { ReturnUrl = "Index"; } TempData["SubsAlertDiv"] = "SubsAlertDiv"; if (ModelState.IsValid) { subscribersModel.Status = 1; if (db.Subcribers.Any(s => s.SubscriberEmail == subscribersModel.SubscriberEmail && s.Status != 0)) { TempData["ErrorMessage"] = "Already subscribed."; return(Redirect(ReturnUrl)); } else if (db.Subcribers.Any(s => s.SubscriberEmail == subscribersModel.SubscriberEmail && s.Status == 0)) { //Update status if (AppFunctions.UpdateSubcriberStatus(subscribersModel.SubscriberEmail, 1)) { TempData["SuccessMessage"] = "Subscription successfull."; return(Redirect(ReturnUrl)); } TempData["ErrorMessage"] = "Failed to re-subscribe."; return(Redirect(ReturnUrl)); } db.Subcribers.Add(subscribersModel); db.SaveChanges(); TempData["SuccessMessage"] = "Subscription successfull."; if (!string.IsNullOrEmpty(ReturnUrl)) { return(Redirect(ReturnUrl)); } return(RedirectToAction("Index", "Home")); } TempData["ErrorMessage"] = "Opps!an error occured."; if (!string.IsNullOrEmpty(ReturnUrl)) { return(Redirect(ReturnUrl)); } return(RedirectToAction("Index", "Home")); }
/// <summary> /// Получение списка потребителей /// </summary> /// <returns></returns> public static IEnumerable <Subscriber> GetSubscribers() { SubscribersModel model = null; model = GetDataFromArmtes <SubscribersModel>(@"SubscribersRegistryEdit/GetSubscribers?pagenum=0&pagesize=100000", needAuthorization: true); if (model != null) { return(model.Subscribers); } else { return(null); } }
private async Task <SubscribersModel> SendMessageToSubscriber(SubscribersModel subscriber, MyMessage message) { try { _logger.LogInformation($"Broadcasting: {message.Name} - {message.Message}"); await subscriber.Subscriber.WriteAsync(message); return(null); } catch (Exception ex) { _logger.LogError(ex, "Could not send"); return(subscriber); } }
public override bool Filter(SubscribersModel <ResponseMessage> subscriber, ResponseMessage message) => true;