private void OnRPCRefused(Refuse rpc) { if (this.RPCRefused != null) { this.RPCRefused(this, new RPCEventArgs(rpc, this.mTunnel)); } }
private void SendRefuse(UInt32 rpid) { Refuse refuse = new Refuse(rpid); EncryptedPacket p = new EncryptedPacket(this.mTunnel.ID, this.ID); p.RPCs.Add(refuse); this.mTunnel.EncryptAndSendPacket(p); }
public void HandleRekey() { //A rekey cannot happen until a prepare rekey rpc has been sent (note that they can be send together) //todo: add a test to send a prepare rekey and rekey together bool trigger1, trigger2, trigger3; trigger1 = trigger2 = trigger3 = false; KeyPair pair = Sodium.PublicKeyBox.GenerateKeyPair(); PrepareRekey prepareRekey = new PrepareRekey(pair.PublicKey); RekeyNow rekey = new RekeyNow(); tunnel.PacketInterceptor(p => { Assert.That(p.RPCs.Count > 0); Assert.That(p.RPCs.First.SerializationTag == (byte)RPCType.Refuse); Refuse rpc = (Refuse)p.RPCs.First; trigger1 = true; }); ControlPipe c = new ControlPipe(tunnel); EncryptedPacket packet = new EncryptedPacket(tunnel.ID, 0); packet.RPCs.Add(rekey); c.HandlePacket(packet); Assert.IsTrue(trigger1, "Refuse block never called"); tunnel.PacketInterceptor(p => { Assert.That(p.RPCs.Count > 0); Assert.That(p.RPCs.First.SerializationTag == (byte)RPCType.RekeyResponse); RekeyResponse ok = (RekeyResponse)p.RPCs.First; Assert.IsTrue(ok.NextPublicKey.Length == 32); trigger2 = true; }); packet = new EncryptedPacket(tunnel.ID, 0); packet.RPCs.Add(new PrepareRekey(new byte[] { 1, 2, 3 })); c.HandlePacket(packet); Assert.IsTrue(trigger2, "Rekey ack block never called"); tunnel.PacketInterceptor(p => { Assert.That(p.RPCs.Count > 0); Assert.That(p.RPCs.First.SerializationTag == (byte)RPCType.Ok); OkRPC ok = (OkRPC)p.RPCs.First; Assert.IsTrue(ok.RPCID == rekey.RequestID); trigger3 = true; }); packet = new EncryptedPacket(tunnel.ID, 0); packet.RPCs.Add(rekey); c.HandlePacket(packet); Assert.IsTrue(trigger1, "Rekey now block never called"); Assert.IsTrue(trigger3); }
/// <summary> /// Показыват сообщение пользователю и возвращает <see cref="Result.Ok"/> в случае подтверждения /// </summary> /// <param name="message">Сообщение, содерадщее просьбу и описание вариантов ответа для пользователя</param> /// <returns></returns> public IResult RequstApprove(string message) { bool hasApprove = false, hasRefuse = false; ConsoleKeyInfo current; while (!(hasApprove || hasRefuse)) { Console.WriteLine(message, $"Press {Approval.Description} to"); current = Console.ReadKey(intercept: true); hasApprove = Approval.Contains(current.Key); hasRefuse = Refuse.Contains(current.Key); } return(hasApprove ? Result.Ok() : Result.Fail(RefusalMessage)); }
private void btnRefuse_Click(object sender, RoutedEventArgs e) { List <int> list = GetSelected(); dynamic viewList = this.dataGrid1.ItemsSource as dynamic; for (int i = 0; i < viewList.Count; i++) { for (int j = 0; j < list.Count; j++) { if (viewList[i].SysNo == list[j] && viewList[i].Status != BizEntity.Customer.RefundRequestStatus.O) { list.Remove(list[j]); } } } if (list.Count > 0) { Refuse window = new Refuse(); window.Dialog = Window.ShowDialog(ResRefundRequestQuery.title_Refuse, window, (obj, args) => { if (args.DialogResult == Newegg.Oversea.Silverlight.Controls.Components.DialogResultType.OK) { RefundAuditReq filter = new RefundAuditReq(); filter.RefundRequestList = list; filter.Memo = args.Data.ToString(); filter.Status = BizEntity.Customer.RefundRequestStatus.R; facade.Audit(filter, (obj1, args1) => { if (args1.FaultsHandle()) { return; } dataGrid1.Bind(); Window.Alert(ResRefundRequestQuery.Msg_OperationOk); }); } }, new Size(320, 250)); } else { Window.Alert(ResRefundRequestQuery.Msg_OpreationFailed); this.dataGrid1.Bind(); } }
private void HandleRefuse(IHasSerializationTag rpc) { Refuse refuse = (Refuse)rpc; //todo }