Пример #1
0
        internal AblyRealtime(ClientOptions options, Func <ClientOptions, AblyRest> createRestFunc)
        {
            CaptureSynchronizationContext(options);

            RestClient = createRestFunc(options);
            Channels   = new RealtimeChannels(this);
            Connection = new Connection(this);
            Connection.Initialise();

            if (options.AutoConnect)
            {
                Connect();
            }
        }
Пример #2
0
        internal AblyRealtime(ClientOptions options, Func <ClientOptions, AblyRest> createRestFunc)
        {
            Logger = options.Logger;
            CaptureSynchronizationContext(options);

            RestClient = createRestFunc != null?createRestFunc.Invoke(options) : new AblyRest(options);

            Channels   = new RealtimeChannels(this);
            Connection = new Connection(this, options.NowFunc, options.Logger);
            Connection.Initialise();

            RestClient.AblyAuth.AuthUpdated += Connection.ConnectionManager.OnAuthUpdated;

            if (options.AutoConnect)
            {
                Connect();
            }
        }
Пример #3
0
        internal AblyRealtime(ClientOptions options, Func <ClientOptions, IMobileDevice, AblyRest> createRestFunc, IMobileDevice mobileDevice = null)
        {
            if (options.Logger != null)
            {
                Logger = options.Logger;
            }

            Logger.LogLevel = options.LogLevel;

            if (options.LogHandler != null)
            {
                Logger.LoggerSink = options.LogHandler;
            }

            CaptureSynchronizationContext(options);
            RestClient = createRestFunc != null?createRestFunc.Invoke(options, mobileDevice) : new AblyRest(options, mobileDevice);

            Push = new PushRealtime(RestClient, Logger);

            Connection = new Connection(this, options.NowFunc, options.Logger);
            Connection.Initialise();

            if (options.AutomaticNetworkStateMonitoring)
            {
                IoC.RegisterOsNetworkStateChanged();
            }

            Channels = new RealtimeChannels(this, Connection, mobileDevice);
            RestClient.AblyAuth.OnAuthUpdated = ConnectionManager.OnAuthUpdated;

            State = new RealtimeState(options.GetFallbackHosts()?.Shuffle().ToList(), options.NowFunc);

            Workflow = new RealtimeWorkflow(this, Logger);
            Workflow.Start();

            if (options.AutoConnect)
            {
                Connect();
            }
        }