Exemple #1
0
        internal void Execute()
        {
            if (TestRemoteDest != null &&
                OutboundEstablishedPool.Count >= 2 &&
                InboundEstablishedPool.Count >= 2 &&
                TestRemoteDest.InboundEstablishedPool.Count >= 2)
            {
                try
                {
                    SendNewData.Do(() =>
                    {
                        var dest        = TestRemoteDest.MyDestination;
                        var origmessage = new DeliveryStatusMessage(I2NPHeader.GenerateMessageId());
                        var big         = BufUtils.RandomInt(100) < 5;

                        Destinations.Send(dest, true,
                                          new GarlicCloveDeliveryDestination(
                                              origmessage, dest.IdentHash),
                                          (big ?
                                           new GarlicCloveDeliveryDestination(BigMessage, dest.IdentHash) :
                                           new GarlicCloveDeliveryDestination(origmessage, dest.IdentHash)));
                    });
                }
                catch (Exception ex)
                {
                    SendNewData.Reset();
                    DebugUtils.Log(ex);
                }
            }

            QueueStatusLog.Do(() =>
            {
                DebugUtils.LogInformation(string.Format(
                                              "ClientTunnelProvider {4}: Established tunnels in: {0,2}, out: {1,2}. Pending in: {2,2}, out {3,2}",
                                              InboundEstablishedPool.Count, OutboundEstablishedPool.Count,
                                              InboundPending.Count, OutboundPending.Count, MyDestination.IdentHash.Id32Short));
            });

            Destinations.Run();
        }