Exemple #1
0
 public override async Task<object[]> GetProfiles(RnetBusObject target)
 {
     return Enumerable.Concat(
             await GetRussoundProfiles(target),
             await base.GetProfiles(target))
         .ToArray();
 }
Exemple #2
0
        /// <summary>
        /// Obtains additional profiles for a nested bus object.
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        protected virtual Task<object[]> GetRussoundProfiles(RnetBusObject target)
        {
            var zone = target as RnetZone;
            if (zone == null)
                return null;

            // our zones only
            if (zone.Controller != Controller)
                return null;

            return Task.FromResult(new object[]
            { 
                new Zone(zone),
                new Media.Audio.Zone(zone),
            });
        }
Exemple #3
0
        /// <summary>
        /// Obtains the profiles for a nested bus object.
        /// </summary>
        /// <param name="target"></param>
        /// <param name="profileType"></param>
        /// <returns></returns>
        public virtual Task<object[]> GetProfiles(RnetBusObject target)
        {
            var zone = target as RnetZone;
            if (zone == null)
                return null;

            // our zones only
            if (zone.Controller != Controller)
                return null;

            return Task.FromResult(new object[]
            { 
                new Zone(zone),
                new ZoneContainer(zone) 
            });
        }
Exemple #4
0
        /// <summary>
        /// Sets the container context values.
        /// </summary>
        /// <param name="target"></param>
        /// <param name="owner"></param>
        /// <param name="container"></param>
        public static void SetContainerContext(this RnetBusObject target, RnetBusObject owner, RnetBusObject container)
        {
            Contract.Requires<ArgumentNullException>(target != null);
            Contract.Requires<ArgumentNullException>(container != null);
            Contract.Requires<ArgumentNullException>(owner != null);

            var context = target.Context.Get<IContainerContext>();
            if (context == null ||
                context.Owner != owner ||
                context.Container != container)
                target.Context.Set<IContainerContext>(new ContainerContext(owner, container));
        }
Exemple #5
0
        /// <summary>
        /// Gets the child objects refs for the given object.
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public async Task<ObjectDataCollection> GetObjects(IContext context, RnetBusObject o)
        {
            Contract.Requires<ArgumentNullException>(o != null);

            // load container
            var p = await profileManager.GetProfile<IContainer>(o) ?? Enumerable.Empty<RnetBusObject>();
            return new ObjectDataCollection(await Task.WhenAll(p.Select(i => ObjectToData(context, i))));
        }
Exemple #6
0
        /// <summary>
        /// Gets the profile refs for the given object.
        /// </summary>
        /// <param name="o"></param>
        /// <returns></returns>
        public async Task<ProfileRefCollection> GetProfileRefs(IContext context, RnetBusObject o)
        {
            Contract.Requires<ArgumentNullException>(o != null);

            // load container
            var p = await profileManager.GetProfiles(o) ?? Enumerable.Empty<ProfileHandle>();
            return new ProfileRefCollection(await Task.WhenAll(p.Select(i => ProfileToRef(context, i))));
        }
Exemple #7
0
        async Task<ObjectData> FillObjectData(IContext context, RnetBusObject o, ObjectData d)
        {
            Contract.Requires<ArgumentNullException>(o != null);
            Contract.Requires<ArgumentNullException>(d != null);

            d.Uri = await o.GetUri(profileManager, context);
            d.FriendlyUri = await o.GetFriendlyUri(profileManager, context);
            d.Id = await o.GetId(profileManager);
            d.Name = await o.GetName(profileManager, context);
            d.Objects = await GetObjects(context, o);
            d.Profiles = await GetProfileRefs(context, o);
            return d;
        }
Exemple #8
0
        /// <summary>
        /// Transforms the given <see cref="RnetBusObject"/> into a <see cref="ObjectData"/> instance.
        /// </summary>
        /// <param name="d"></param>
        /// <returns></returns>
        public async Task<ObjectData> ObjectToData(IContext context, RnetBusObject d)
        {
            Contract.Requires<ArgumentNullException>(d != null);

            if (d is RnetDevice)
                return await DeviceToData(context, (RnetDevice)d);
            else
                return await FillObjectData(context, d, new ObjectData());
        }
Exemple #9
0
 /// <summary>
 /// Updates the values.
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="container"></param>
 internal void Set(RnetBusObject owner, RnetBusObject container)
 {
     Owner = owner;
     Container = container;
 }
Exemple #10
0
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 internal ContainerContext(RnetBusObject owner, RnetBusObject container)
 {
     Set(owner, container);
 }
Exemple #11
0
        /// <summary>
        /// Initializes a new instance.
        /// </summary>
        /// <param name="target"></param>
        protected ProfileBase(RnetBusObject target)
        {
            Contract.Requires<ArgumentNullException>(target != null);

            Target = target;
        }