Ejemplo n.º 1
0
        public async Task DistEvent()
        {
            FrameInitializer.Initialize(null);

            const int    count = 5;
            const string topic = "test_topic";

            DistEventService.Subscribe <TestDataObj>(topic, msg => Console.WriteLine($"Subscribe1 get:{SerializeUtil.ToJson(msg)}"));

            DistEventService.Subscribe <TestDataObj>(topic, msg => Console.WriteLine($"Subscribe2 get:{SerializeUtil.ToJson(msg)}"));

            //new TestDataObj {Id = 1001, Name = "testName"}

            await Task.Run(() =>
            {
                for (var i = 0; i < count; i++)
                {
                    DistEventService.Publish(topic, new TestDataObj {
                        Id = 1000 + i, Name = DateTime.Now.ToShortTimeString()
                    });

                    Thread.Sleep(3000);
                }
            });
        }
Ejemplo n.º 2
0
 public IAccessorFrameState GetImplementationState(Action <IAccessorFrameInitializer> configuration)
 {
     if (++_initCount < _realInitCount)
     {
         return(null);
     }
     if (_state == null)
     {
         var init = new FrameInitializer(this);
         configuration(init);
         _state = init.State;
         ++_realInitCount;
     }
     return(_state);
 }
Ejemplo n.º 3
0
        internal Frame(IChannelOwner parent, string guid, FrameInitializer initializer) : base(parent, guid)
        {
            _channel     = new FrameChannel(guid, parent.Connection, this);
            _initializer = initializer;
            Url          = _initializer.Url;
            Name         = _initializer.Name;
            ParentFrame  = _initializer.ParentFrame;
            _loadStates  = initializer.LoadStates;

            _channel.LoadState += (sender, e) =>
            {
                lock (_loadStates)
                {
                    if (e.Add.HasValue)
                    {
                        _loadStates.Add(e.Add.Value);
                        LoadState?.Invoke(this, new LoadStateEventArgs {
                            LifecycleEvent = e.Add.Value
                        });
                    }

                    if (e.Remove.HasValue)
                    {
                        _loadStates.Remove(e.Remove.Value);
                    }
                }
            };

            _channel.Navigated += (sender, e) =>
            {
                Url  = e.Url;
                Name = e.Name;
                Navigated?.Invoke(this, e);

                if (string.IsNullOrEmpty(e.Error))
                {
                    ((Page)Page)?.OnFrameNavigated(this);
                }
            };
        }
Ejemplo n.º 4
0
 internal Frame(ConnectionScope scope, string guid, FrameInitializer initializer)
 {
     _scope   = scope;
     _channel = new FrameChannel(guid, scope, this);
 }