Ejemplo n.º 1
0
        protected override void OnConnectionStopped(ISourceConnection connection, ConnectionStoppedArgs args)
        {
            switch (args.Reason)
            {
            case StopReason.UserReconnect:
            case StopReason.UserShutdown:
                break;

            default:
                args.Delay     = 3000;
                args.Reconnect = true;
                break;
            }
        }
Ejemplo n.º 2
0
 protected void StartConnection(Uri source_uri)
 {
     if (!sourceConnection.IsCompleted)
     {
         throw new InvalidOperationException("Connection is already started");
     }
     sourceConnection = ConnectionWrapper.Run(CreateConnection(source_uri), async(conn, prev) => {
         var args = new ConnectionStoppedArgs();
         try {
             var result  = await prev.ConfigureAwait(false);
             args.Reason = result;
             Logger.Debug($"Connection stopped by reason {result}");
         }
         catch (OperationCanceledException) {
             args.Reason = StopReason.UserShutdown;
             Logger.Debug("Connection stopped by canceled");
         }
         catch (Exception e) {
             args.Reason = StopReason.NotIdentifiedError;
             Logger.Debug("Connection stopped by Error");
             Logger.Error(e);
         }
         Queue("CONNECTION_CLEANUP", async() => {
             Logger.Debug($"Cleaning up connection (closed by {args.Reason})");
             OnConnectionStopped(conn.Connection, args);
             if (args.Delay > 0)
             {
                 await Task.Delay(args.Delay).ConfigureAwait(false);
             }
             if (sourceConnection == conn)
             {
                 if (args.IgnoreSource != null)
                 {
                     IgnoreSourceHost(args.IgnoreSource);
                 }
                 if (args.Reconnect)
                 {
                     DoReconnect();
                 }
                 else if (args.Reason != StopReason.UserReconnect)
                 {
                     DoStopStream(args.Reason);
                 }
             }
         });
     });
 }
Ejemplo n.º 3
0
        protected override void OnConnectionStopped(ISourceConnection connection, ConnectionStoppedArgs args)
        {
            switch (args.Reason)
            {
            case StopReason.UnavailableError:
                args.IgnoreSource = connection.SourceUri;
                args.Reconnect    = true;
                break;

            case StopReason.ConnectionError:
            case StopReason.OffAir:
                if (connection.SourceUri != this.SourceUri)
                {
                    args.IgnoreSource = connection.SourceUri;
                    args.Reconnect    = true;
                }
                break;
            }
        }
Ejemplo n.º 4
0
 protected virtual void OnConnectionStopped(ISourceConnection connection, ConnectionStoppedArgs args)
 {
 }