public async Task Send(MTProtoRequest request) { // TODO: refactor if (needConfirmation.Any()) { var ackRequest = new AckRequest(needConfirmation); using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { ackRequest.OnSend(writer); await Send(memory.ToArray(), ackRequest); needConfirmation.Clear(); } } using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { request.OnSend(writer); await Send(memory.ToArray(), request); } _session.Save(); }
public async Task Send(TLMethod request, CancellationToken token = default) { token.ThrowIfCancellationRequested(); // TODO: refactor if (needConfirmation.Any()) { var ackRequest = new AckRequest(needConfirmation); using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { ackRequest.SerializeBody(writer); await Send(memory.ToArray(), ackRequest, token).ConfigureAwait(false); needConfirmation.Clear(); } } using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { request.SerializeBody(writer); await Send(memory.ToArray(), request, token).ConfigureAwait(false); } session.Save(); }
private Status Check(string hash, string chainid) { Request = new AckRequest(); Request.param.Chainid = chainid; Request.param.hash = hash; var execute = Run(Request); if (!execute) { return(Status.RequestFailed); } Status status = Status.Unknown; if (!Enum.TryParse(Result?.result?.Entrydata?.Status ?? "null", out status)) { if (!Enum.TryParse(Result?.result?.Commitdata?.Status ?? "null", out status)) { Enum.TryParse(Result?.result.Status ?? "unknown", out status); } } return(status); }
public async Task Send(TeleSharp.TL.TLMethod request) { // TODO: refactor if (needConfirmation.Any()) { var ackRequest = new AckRequest(needConfirmation); using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { ackRequest.SerializeBody(writer); await Send(memory.ToArray(), ackRequest); needConfirmation.Clear(); } } using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { request.SerializeBody(writer); await Send(memory.ToArray(), request); } _session.Save(); }
public async Task Send(TLSchema.TLMethod request) { // TODO: refactor if (needConfirmation.Any()) { var ackRequest = new AckRequest(needConfirmation); using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { ackRequest.SerializeBody(writer); await Send(memory.ToArray(), ackRequest); needConfirmation.Clear(); } } using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { request.SerializeBody(writer); await Send(memory.ToArray(), request); } _client.RaiseSessionChanged(); }
public async Task Send(TeleSharp.TL.TLMethod request, CancellationToken token = default(CancellationToken)) { token.ThrowIfCancellationRequested(); // TODO: refactor if (this.needConfirmation.Any()) { AckRequest ackRequest = new AckRequest(this.needConfirmation); using (MemoryStream memory = new MemoryStream()) using (BinaryWriter writer = new BinaryWriter(memory)) { ackRequest.SerializeBody(writer); await this.Send(memory.ToArray(), ackRequest, token).ConfigureAwait(false); this.needConfirmation.Clear(); } } using (MemoryStream memory = new MemoryStream()) using (BinaryWriter writer = new BinaryWriter(memory)) { request.SerializeBody(writer); await this.Send(memory.ToArray(), request, token).ConfigureAwait(false); } this.session.Save(); }
private async Task AckRequestAsync(Address destinationAddress, Address indirectEndPoint, Member[] membersList) { logger.LogDebug("{LocalAddress} sending AckRequest to {destinationAddress} via {indirectEndPoint}", Self.Address, destinationAddress, indirectEndPoint); var ackRequest = new AckRequest { DestinationAddress = destinationAddress, SourceAddress = Self.Address }; WriteMembers(ackRequest, membersList); await transport.SendAsync(indirectEndPoint, ackRequest); }
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId) { string text = intent.GetStringExtra("ack") ?? "no data"; if (text != "no data") { _ack = JsonConvert.DeserializeObject <AckRequest>(text); Webservices.SilenceAlarm(_ack); } StopSelf(); return(StartCommandResult.NotSticky); }
public bool Run(AckRequest requestData) { var reply = Client.MakeRequest <AckRequest>(requestData); JsonReply = reply.Content; if (reply.StatusCode == System.Net.HttpStatusCode.OK) { Result = JsonConvert.DeserializeObject <AckResult>(reply.Content); return(true); } return(false); }
private async Task Ack() { if (needConfirmation.Any()) { var ackRequest = new AckRequest(needConfirmation); using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { ackRequest.SerializeBody(writer); await Send(memory.ToArray(), ackRequest); needConfirmation.Clear(); } } }
// TODO(keli.wang): when one ack delay and blocks many other acks, can we just make this one a nack? private bool HandleNormalAckRequests(AckHandler handler) { lock (_updateGuard) { if (handler != _beginScanPosition) { return(false); } var handlers = ContinuousCompleteHandlers(); _beginScanPosition = handlers[handlers.Count - 1].Item2.Next; if (handlers.Count == 1) { if (!AllowSendAck(handlers[0].Item2)) { return(false); } } var requests = new List <AckRequest>(handlers.Count); foreach (var segment in handlers) { var request = new AckRequest { Subject = Subject, Group = Group, IsBroadcast = _isBroadcast, ConsumerId = ClientId.CurrentClientId, PullOffsetBegin = segment.Item1.PullLogOffset, PullOffsetEnd = segment.Item2.PullLogOffset, }; requests.Add(request); } _head = _beginScanPosition; // All message is acked, need reset head and tail if (_head == null) { _tail = null; } UpdateLastAckTime(); EnqueueRequests(requests); return(true); } }
private bool HandleForceSendAckRequests() { lock (_updateGuard) { if (DateTime.Now.ToTime() - _lastAckTime < TryForceSendAckIntervalSeconds * 1000) { return(false); } if (_head == null || !_head.Completed) { EnqueueRequests(new List <AckRequest> { CreateEmptyAckRequest() }); return(true); } var handlers = ContinuousCompleteHandlers(); _beginScanPosition = handlers[handlers.Count - 1].Item2.Next; var requests = new List <AckRequest>(handlers.Count); foreach (var segment in handlers) { var request = new AckRequest { Subject = Subject, Group = Group, IsBroadcast = _isBroadcast, ConsumerId = ClientId.CurrentClientId, PullOffsetBegin = segment.Item1.PullLogOffset, PullOffsetEnd = segment.Item2.PullLogOffset, }; requests.Add(request); } _head = _beginScanPosition; // All message is acked, need reset head and tail if (_head == null) { _tail = null; } UpdateLastAckTime(); EnqueueRequests(requests); return(true); } }
public Task <Response> Ack(string brokerGroup, AckRequest request) { var client = GetBrokerGroupClient(brokerGroup, request.Subject, request.Group); if (client == null || !client.Writtable) { _brokerGroupService.ConsumerGetSubjectCluster(request.Subject, request.Group, true); var tsc = new TaskCompletionSource <Response>(); tsc.SetResult(new Response(-1, Response.Error) { Result = new NoWritableBrokerException( $"broker group {brokerGroup} is not writable now, so cannot send ack for {request.Subject}/{request.Group}") }); return(tsc.Task); } return(client.Send(new Request(request), 3000)); }
private static bool IsEmptyAck(AckRequest request) { return(request.PullOffsetBegin == -1 && request.PullOffsetEnd == -1); }
public MesssageAckPayloadHolder(AckRequest request) { this.request = request; }
public override async Task <AckResponse> ack(AckRequest request, ServerCallContext context) { return(await _ackDelegate(request)); }
public AckResponse Ack(AckRequest request) { throw new NotImplementedException(); }
//protected override void OnError(Context context, string errorId) //{ // Log.Error(ApplicationSettings.AzureTag, "GCM Error: " + errorId); //} // protected override void OnRegistered(Context context, string registrationId) // { //PushNotificationImplementation.registerRequest.deviceToken = registrationId; //ApplicationSettings.DeviceToken = registrationId; ////added on 1/25/17 by aditmer to unregister the device if the registrationId has changed //CheckInstallationID.CheckNewInstallationID(registrationId); //Webservices.RegisterPush(PushNotificationImplementation.registerRequest); ////commented out on 11/29/16 by aditmer so we can register on the server // //RegistrationID = registrationId; // //Hub = new NotificationHub(NightscoutMobileHybrid.Constants.NotificationHubPath, NightscoutMobileHybrid.Constants.ConnectionString, context); // //try // //{ // // Hub.UnregisterAll(registrationId); // //} // //catch (Exception ex) // //{ // // Log.Error(ApplicationSettings.AzureTag, ex.Message); // //} // //var tags = new List<string>() { ApplicationSettings.AzureTag }; // //try // //{ // // const string templateBodyGCM = "{\"data\":{\"message\":\"$(message)\",\"eventName\":\"$(eventName)\",\"group\":\"$(group)\",\"key\":\"$(key)\",\"level\":\"$(level)\",\"sound\":\"$(sound)\",\"title\":\"$(title)\"}}"; // // var hubRegistration = Hub.RegisterTemplate(registrationId, "nightscout", templateBodyGCM, tags.ToArray()); // //} // //catch (Exception ex) // //{ // // Log.Error(ApplicationSettings.AzureTag, ex.Message); // //} //} //protected override void OnUnRegistered(Context context, string registrationId) //{ // createNotification("0", "GCM Unregistered...", "The device has been unregistered!", 0,"0","0"); //} void createNotification(string key, string title, string desc, int sound, string group, string level) { var intent = new Intent(this, typeof(MainActivity)); intent.AddFlags(ActivityFlags.SingleTop); var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.UpdateCurrent); //addd on 12/5/16 by aditmer to add actions to the push notifications AckRequest ack = new AckRequest(); ack.group = group; ack.key = key; ack.level = level; ack.time = ApplicationSettings.AlarmUrgentMins1; var notificationIntent = new Intent(this, typeof(NotificationActionService)); notificationIntent.PutExtra("ack", JsonConvert.SerializeObject(ack)); var snoozeIntent1 = PendingIntent.GetService(this, 0, notificationIntent, PendingIntentFlags.OneShot); //adds 2nd action that snoozes the alarm for the ApplicationSettings.AlarmUrgentMins[1] amount of time var notificationIntent2 = new Intent(this, typeof(NotificationActionService)); AckRequest ack2 = new AckRequest(); ack2.group = group; ack2.key = key; ack2.level = level; ack2.time = ApplicationSettings.AlarmUrgentMins2; notificationIntent2.PutExtra("ack", JsonConvert.SerializeObject(ack2)); var snoozeIntent2 = PendingIntent.GetService(this, 0, notificationIntent2, PendingIntentFlags.OneShot); //Notification.Action notificationAction = new Notification.Action(0, "Snooze", snoozeIntent); var notificationBuilder = new Notification.Builder(this); if (Build.VERSION.SdkInt >= BuildVersionCodes.O) { notificationBuilder.SetChannelId("nightscout"); } notificationBuilder.SetSmallIcon(NightscoutMobileHybrid.Droid.Resource.Drawable.icon); notificationBuilder.SetContentTitle(title); notificationBuilder.SetContentText(desc); notificationBuilder.SetAutoCancel(true); notificationBuilder.SetPriority((int)NotificationPriority.Max); notificationBuilder.SetContentIntent(pendingIntent); notificationBuilder.AddAction(0, $"Snooze {ack.time} min", snoozeIntent1); notificationBuilder.AddAction(0, $"Snooze {ack2.time} min", snoozeIntent2); if (sound == 0) { notificationBuilder.SetDefaults(NotificationDefaults.Vibrate | NotificationDefaults.Lights | NotificationDefaults.Sound); } else { notificationBuilder.SetDefaults(NotificationDefaults.Vibrate | NotificationDefaults.Lights); notificationBuilder.SetSound(Android.Net.Uri.Parse(ContentResolver.SchemeAndroidResource + "://" + PackageName + "/Raw/" + sound)); } var notificationManager = (NotificationManager)GetSystemService(Context.NotificationService); var notification = notificationBuilder.Build(); if (sound != 0) { notification.Flags = NotificationFlags.Insistent; } notificationManager.Notify(key, 1, notification); //Not using in-app notifications (Nightscout handles all of that for us) //dialogNotify(title, desc); }
public async override void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, Action completionHandler) { //changed on 8/12/18 by aditmer. Replaces HockeyApp analytics w/ AppCenter Analytics.TrackEvent("iOS Notification Ack"); Debug.WriteLine("Snooze me"); Console.WriteLine("Snoozed"); // Take action based on Action ID AckRequest ack = new AckRequest(); ack.time = -1; switch (response.ActionIdentifier) { case "snooze1": ack.time = ApplicationSettings.AlarmUrgentLowMins1; break; case "snooze2": ack.time = ApplicationSettings.AlarmUrgentLowMins2; break; case "snooze3": ack.time = ApplicationSettings.AlarmUrgentMins1; break; case "snooze4": ack.time = ApplicationSettings.AlarmUrgentMins2; break; // default: // Take action based on identifier //switch (response.ActionIdentifier) //{ // case UNActionIdentifier.Default: //// Handle default //... //break; // case UNActionIdentifier.Dismiss: // Handle dismiss //... //break; //} //break; } if (ack.time != -1) { var userInfo = response.Notification.Request.Content.UserInfo; if (userInfo.ContainsKey(new NSString("level"))) { ack.level = userInfo.ValueForKey(new NSString("level")) as NSString; //ack.Level = level.Int32Value; } if (userInfo.ContainsKey(new NSString("group"))) { ack.group = (userInfo.ValueForKey(new NSString("group")) as NSString).ToString(); } if (userInfo.ContainsKey(new NSString("key"))) { ack.key = (userInfo.ValueForKey(new NSString("key")) as NSString).ToString(); } await Webservices.SilenceAlarm(ack); } // Inform caller it has been handled completionHandler(); }
public async Task Send(TeleSharp.TL.TLMethod request) { // TODO: refactor if (needConfirmation.Any()) { var ackRequest = new AckRequest(needConfirmation); using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { ackRequest.SerializeBody(writer); await Send(memory.ToArray(), ackRequest); needConfirmation.Clear(); } } //using (var memory = new MemoryStream()) //using (var writer = new BinaryWriter(memory)) //{ // request.SerializeBody(writer); // await Send(memory.ToArray(), request); //} TaskCompletionSource <bool> responseSource; using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { //var messageId = _session.GetNewMessageId(); //request.MessageId = messageId; //if (request.GetType() == typeof(TeleSharp.TL.TLRequestInvokeWithLayer)) //{ // connectMessageID = messageId; //} request.SerializeBody(writer); request.MessageId = _session.GetNewMessageId(); Debug.WriteLine($"Send request - {request.MessageId}"); responseSource = new TaskCompletionSource <bool>(); runningRequests.Add(request.MessageId, Tuple.Create(request, responseSource)); await Send(memory.ToArray(), request); Debug.WriteLine("sended"); } await responseSource.Task; Debug.WriteLine("complete"); if (runningRequests.ContainsKey(request.MessageId)) { runningRequests.Remove(request.MessageId); } Debug.WriteLine("request removed from queue"); _session.Save(); Debug.WriteLine("session saved"); }