Example #1
0
        public OutletObserver(IObservable <T> outlet, TimeSpan heartbeatInterval, Func <Task> heartbeatTask)
        {
            if (outlet == null)
            {
                throw new ArgumentNullException(nameof(outlet));
            }
            if (heartbeatInterval.TotalMilliseconds <= 0)
            {
                throw new ArgumentException(nameof(heartbeatInterval));
            }
            if (heartbeatTask == null)
            {
                throw new ArgumentNullException(nameof(heartbeatTask));
            }

            _heartbeatInterval = heartbeatInterval;
            _heartbeatTask     = heartbeatTask;
            _outlet            = (Outlet <T>)outlet;
        }
Example #2
0
        public Outlet Create(string name)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            var outlet = new Outlet(_node, name);

            while (!ImmutableInterlocked.Update(ref _outlets, list =>
            {
                if (list.Any(i => i.Id == name))
                {
                    throw new ArgumentException("An outlet with the same name already exists.", nameof(name));
                }
                return(list.Add(outlet));
            }))
            {
            }

            //            OnCollectionChanged();

            return(outlet);
        }
Example #3
0
 public Outlet(Outlet outlet) : base(outlet.Node, outlet.Id)
 {
     _outlet = outlet;
 }
Example #4
0
 private object CastOutlet(Outlet outlet, Type type)
 {
     return(Activator.CreateInstance(typeof(Outlet <>).MakeGenericType(type), outlet));
 }
Example #5
0
 internal void Bind(Outlet outlet)
 {
     _inlet.Bind(outlet);
 }
Example #6
0
 public void Bind(Outlet outlet, Inlet inlet)
 {
     inlet.Bind(outlet);
 }
Example #7
0
 internal void Bind(Outlet outlet)
 {
     BoundedOutlet = outlet;
     _latestValue.Reset();
     _inletBuffer.SetSource(outlet);
 }