public async Task <Boolean> AddStockDiscussion(Int32 stockId, DiscussionItem discussionItem) { var uri = _dns.Resolve(_serviceName).Result; string baseUrl = string.Format(_stockDiscussion, uri.OriginalString); var loggerFactory = new LoggerFactory(); var logger = loggerFactory.CreateLogger <StockDiscussionPublisher>(); var connection = await ConnectAsync(baseUrl); try { var cts = new CancellationTokenSource(); await connection.InvokeAsync <DiscussionItem>("addStockDiscussion", stockId, discussionItem, cts.Token); return(true); } catch (AggregateException aex) when(aex.InnerExceptions.All(e => e is OperationCanceledException)) { return(false); } catch (OperationCanceledException) { return(false); } finally { await connection.DisposeAsync(); } }
public async Task <Boolean> Execute(int memberId, int stockId, DiscussionItem discussionItem) { Logger.LogInformation($"Adding {discussionItem.Comment} of stock '{stockId}'"); var result = await this.CommonStockRouteActor.Ask <CommonStockActor.CommonStockEvent>(new CommonStockActor.AddDiscussion( memberId, stockId, discussionItem.UserName, discussionItem.Comment, discussionItem.EnteredOn )); if (result is CommonStockActor.DiscussionAdded) { var e = result as CommonStockActor.DiscussionAdded; discussionItem.Id = e.DiscussionId; var res = await Pubisher.AddStockDiscussion(stockId, discussionItem); return(await Task.FromResult(res)); } else { throw new NotSupportedException(); } }
public CommonStockActor(CommonStockInfo commonStork, IActorRef eodStocksActor) { CommonStorkData = commonStork; Discussions = new List <DiscussionItem>(); Receive <GetStockInfo>(m => { Sender.Tell(CommonStorkData); }); Receive <GetDiscussion>(m => { Sender.Tell(new ReadOnlyCollection <DiscussionItem>(Discussions)); }); Receive <AddDiscussion>(m => { var discussionItem = new DiscussionItem { Id = Discussions.Count + 1, UserName = m.UserName, Comment = m.Comment, EnteredOn = m.EnteredOn }; Discussions.Add(discussionItem); Sender.Tell(new DiscussionAdded(discussionItem.Id)); }); }
public Task <Boolean> AddStockDiscussionItem(Int32 memberId, Int32 stockId, DiscussionItem discussionItem) { var client = new RestClient(_dns.Resolve(_serviceName).Result); string template = string.Format(_addStockDiscussionItem, stockId); var request = new RestRequest(template, Method.POST); request.AddHeader("Accept", "application/json"); request.Parameters.Clear(); request.AddJsonBody(discussionItem); var response = client.Execute(request); var content = response.Content; // raw content as string var result = JsonConvert.DeserializeObject <Boolean>(content); return(Task.FromResult <Boolean>(result)); }
public async Task AddStockDiscussion(int stockId, DiscussionItem discussionItem) { await Clients.Group(stockId.ToString()).InvokeAsync("addStockDiscussion", stockId, discussionItem); }
[HttpPost()] public async Task <Boolean> AddDiscussionItem(Int32 stockId, [FromBody] DiscussionItem discussionItem) { var result = await this.AddDiscussion.Execute(0, stockId, discussionItem); return(result); }
/// <summary> /// Updates the properties of this row /// </summary> private void UpdateProperties() { this.ModifiedOn = this.Thing.ModifiedOn; this.ReplyTo = this.Thing.ReplyTo; }