コード例 #1
0
        private void OnTransportConnected(object sender, TransportEventArgs e)
        {
            if (e.Transport.MTProtoType == MTProtoTransportType.Main &&
                e.Transport.ProxyConfig != null &&
                !e.Transport.ProxyConfig.IsEmpty &&
                e.Transport.ProxyConfig.IsEnabled.Value)
            {
                Telegram.Api.Helpers.Execute.BeginOnUIThread(() =>
                {
                    if (_proxyConfig != null)
                    {
                        for (var i = 0; i < _proxyConfig.Items.Count; i++)
                        {
                            var item = _proxyConfig.Items[i];
                            if (item == e.Transport.ProxyConfig.GetProxy())
                            {
                                var now        = TLUtils.DateToUniversalTimeTLInt(MTProtoService.ClientTicksDelta, DateTime.Now);
                                item.CheckTime = now;
                                item.Status    = ProxyStatus.Available;
                                item.Ping      = e.Transport.Ping > 0 ? new TLInt((int)e.Transport.Ping) : null;
                                if (item.Ping == null)
                                {
                                    PingMainTransportAsync(item, e.Transport);
                                }

                                Set(_proxyConfig);
                            }
                        }
                    }
                });
            }
        }
コード例 #2
0
        private void OnTransportConnected(object sender, TransportEventArgs e)
        {
            var mtProtoService = IoC.Get <IMTProtoService>();

            if (mtProtoService != null)
            {
                mtProtoService.SetMessageOnTime(0.0, string.Empty);
            }
        }
コード例 #3
0
ファイル: ViewModelLocator.cs プロジェクト: Fart03/lau
        private void OnTransportConnecting(object sender, TransportEventArgs e)
        {
            var protoService = UnigramContainer.Current.ResolveType <IMTProtoService>();

            if (protoService != null)
            {
                protoService.SetMessageOnTime(25, SettingsHelper.IsProxyEnabled ? "Connecting to proxy..." : "Connecting...");
            }
        }
コード例 #4
0
ファイル: ViewModelLocator.cs プロジェクト: Fart03/lau
        private void OnTransportConnected(object sender, TransportEventArgs e)
        {
            var protoService = UnigramContainer.Current.ResolveType <IMTProtoService>();

            if (protoService != null)
            {
                protoService.SetMessageOnTime(0, null);
            }
        }
コード例 #5
0
ファイル: ConnectionsPage.cs プロジェクト: tabrath/meshwork
 private void OnNewTransportAdded(object sender, TransportEventArgs args)
 {
     try {
         connectionListStore.AppendValues(args.Transport);
         Gui.MainWindow.RefreshCounts();
     } catch (Exception ex) {
         Core.LoggingService.LogError(ex);
         Gui.ShowErrorDialog(ex.ToString(), Gui.MainWindow.Window);
     }
 }
コード例 #6
0
    public void HandleTrashCanOverflow(object sender, TransportEventArgs e)
    {
        // Perform the downcast back to the overflowing trash can:
        var trashCan = (TrashCan)sender;

        // Transfer the given garbage amount from the trash can into the truck:
        trashCan.UsedVolume -= e.GarbageVolume;
        GarbageVolume       += e.GarbageVolume;

        Console.WriteLine("Total garbage volume in truck is now {0:F2}l.", GarbageVolume);
    }
コード例 #7
0
 protected void OnEvent(TransportEventArgs transportEventArgs)
 {
     if (_subscriptions.ContainsKey(transportEventArgs.Type))
     {
         var actions = _subscriptions[transportEventArgs.Type];
         foreach (var action in actions)
         {
             //TODO: investigate use of weak action
             action.Invoke(transportEventArgs.Value);
         }
     }
 }
コード例 #8
0
        private void OnTransportConnecting(object sender, TransportEventArgs e)
        {
            var mtProtoService = IoC.Get <IMTProtoService>();

            if (mtProtoService != null)
            {
                var transportIdString = string.Empty;
#if DEBUG
                var transport = e.Transport;
                if (transport != null)
                {
                    transportIdString = " t" + transport.Id;
                }
#endif
                mtProtoService.SetMessageOnTime(25.0, string.Format("{0}{1}...", AppResources.Connecting, transportIdString));
            }
        }
コード例 #9
0
ファイル: ConnectionsPage.cs プロジェクト: tabrath/meshwork
        private void OnTransportRemoved(object sender, TransportEventArgs args)
        {
            Gui.MainWindow.RefreshCounts();

            Gtk.TreeIter iter;
            connectionListStore.GetIterFirst(out iter);
            if (connectionListStore.IterIsValid(iter))
            {
                do
                {
                    ITransport transport = (ITransport)connectionListStore.GetValue(iter, 0);
                    if (transport == args.Transport)
                    {
                        connectionListStore.Remove(ref iter);
                        return;
                    }
                }  while (connectionListStore.IterNext(ref iter));
            }
        }
コード例 #10
0
        private void OnTransportConnecting(object sender, TransportEventArgs e)
        {
            var mtProtoService = IoC.Get <IMTProtoService>();

            if (mtProtoService != null)
            {
                var transport = e.Transport;

                if (transport == null)
                {
                    return;
                }

                if (transport.MTProtoType != MTProtoTransportType.Main)
                {
                    return;
                }

#if DEBUG
                var proxy =
                    transport.ProxyConfig != null &&
                    transport.ProxyConfig.IsEnabled.Value &&
                    !transport.ProxyConfig.IsEmpty
                    ? transport.ProxyConfig.GetProxy()
                    : null;

                var transportIdString = string.Format("({0} {1}_{2}{3})", transport.Id, transport.DCId, transport.ActualHost, proxy != null ? "_" + proxy.Server : "");
#else
                var transportIdString = string.Empty;
#endif

                var proxyConfig = transport.ProxyConfig;
                if (proxyConfig != null && proxyConfig.IsEnabled.Value && !proxyConfig.IsEmpty)
                {
                    mtProtoService.SetMessageOnTime(25.0, string.Format("{0}{1}...", AppResources.ConnectingToProxy, transportIdString));
                }
                else
                {
                    mtProtoService.SetMessageOnTime(25.0, string.Format("{0}{1}...", AppResources.Connecting, transportIdString));
                }
            }
        }
コード例 #11
0
        private void OnTransportConnected(object sender, TransportEventArgs e)
        {
            var mtProtoService = IoC.Get <IMTProtoService>();

            if (mtProtoService != null)
            {
                var transport = e.Transport;
                if (transport == null)
                {
                    return;
                }

                if (transport.MTProtoType != MTProtoTransportType.Main)
                {
                    return;
                }

                mtProtoService.SetMessageOnTime(0.0, string.Empty);
            }
        }
コード例 #12
0
        private void SocketAsyncEventArgs_Callback(object sender, SocketAsyncEventArgs e)
        {
            if (e.SocketError != SocketError.Success)
            {
                // FIXME: cleanup
                return;
            }

            if (NetworkEvent == null)
            {
                return;
            }

            switch (e.LastOperation)
            {
            case SocketAsyncOperation.Receive:
            case SocketAsyncOperation.ReceiveFrom:
            {
                TNET_Socket tskSocket = (e.UserToken as TNET_Socket);

                if (e.Buffer != null)
                {
                    byte[] bytes = new byte[e.BytesTransferred];
                    Buffer.BlockCopy(e.Buffer, 0, bytes, 0, bytes.Length);
                    TransportEventArgs eargs = new TransportEventArgs(TransportEventArgs.TransportEventTypes.Data, bytes, this, tskSocket.Id);
                    NetworkEvent(this, eargs);
                }
                // enqueue another event args
                tskSocket.ScheduleReceiveFromAsync();
                break;
            }

            case SocketAsyncOperation.SendTo:
            default:
            {
                break;
            }
            }
        }
コード例 #13
0
 private void OnTransportConnecting(object sender, TransportEventArgs e)
 {
     if (e.Transport.MTProtoType == MTProtoTransportType.Main &&
         e.Transport.ProxyConfig != null &&
         !e.Transport.ProxyConfig.IsEmpty &&
         e.Transport.ProxyConfig.IsEnabled.Value)
     {
         Telegram.Api.Helpers.Execute.BeginOnUIThread(() =>
         {
             if (_proxyConfig != null)
             {
                 foreach (var item in _proxyConfig.Items)
                 {
                     if (item == e.Transport.ProxyConfig.GetProxy())
                     {
                         item.Status = ProxyStatus.Connecting;
                         item.Ping   = null;
                     }
                 }
             }
         });
     }
 }
コード例 #14
0
        private void SocketAsyncEventArgs_Callback(object sender, SocketAsyncEventArgs e)
        {
            if (e.SocketError != SocketError.Success)
            {
                // FIXME: cleanup
                return;
            }

            if (NetworkEvent == null)
            {
                return;
            }

            switch (e.LastOperation)
            {
                case SocketAsyncOperation.Receive:
                case SocketAsyncOperation.ReceiveFrom:
                    {
                        TNET_Socket tskSocket = (e.UserToken as TNET_Socket);

                        if (e.Buffer != null)
                        {
                            byte[] bytes = new byte[e.BytesTransferred];
                            Buffer.BlockCopy(e.Buffer, 0, bytes, 0, bytes.Length);
                            TransportEventArgs eargs = new TransportEventArgs(TransportEventArgs.TransportEventTypes.Data, bytes, this, tskSocket.Id);
                            NetworkEvent(this, eargs);
                        }
                        // enqueue another event args
                        tskSocket.ScheduleReceiveFromAsync();
                        break;
                    }
                case SocketAsyncOperation.SendTo:
                default:
                    {
                        break;
                    }
            }
        }
コード例 #15
0
 public void OnEvent(TransportEventArgs transportEventArgs)
 {
     Channel.OnEvent(transportEventArgs);
 }
コード例 #16
0
 public void Publish(TransportEventArgs transportEventArgs)
 {
     _publisher.OnEvent(transportEventArgs);
 }
コード例 #17
0
 public void OnEvent(TransportEventArgs transportEventArgs)
 {
     FireEvent(transportEventArgs);
 }
コード例 #18
0
 public void OnEvent(TransportEventArgs transportEventArgs)
 {
     _action.Invoke(transportEventArgs);
 }