public static IEntitySetMetadata GetEntitySetFor(this IContainerMetadata containerMetadata, IEntityTypeMetadata entityTypeMetadata)
        {
            Contract.Requires <ArgumentNullException>(containerMetadata != null);
            Contract.Requires <ArgumentNullException>(entityTypeMetadata != null);

            return(containerMetadata.EntitySets.SingleOrDefault(es => es.ElementTypeMetadata.ClrType == entityTypeMetadata.ClrType));
        }
示例#2
0
 public EditDbSetController(Lazy <TDbContext> lazyDbContext,
                            IContainerMetadata <TDbContext> containerMetadata,
                            ODataValidationSettings queryValidationSettings,
                            ODataQuerySettings querySettings)
     : base(lazyDbContext, containerMetadata, queryValidationSettings, querySettings)
 {
 }
        public ReadOnlyDbSetController(Lazy <TDbContext> lazyDbContext, IContainerMetadata <TDbContext> containerMetadata, ODataValidationSettings queryValidationSettings, ODataQuerySettings querySettings)
            : base(containerMetadata, queryValidationSettings, querySettings)
        {
            Contract.Requires <ArgumentNullException>(lazyDbContext != null);

            _lazyDb = lazyDbContext;
        }
        /// <summary>
        /// Default constructor
        /// </summary>
        /// <param name="msd"></param>
        public H264Parser(SampleBuffer outputBuffer, IContainerMetadata metadata, HLSStream hlsStream)
            : base(outputBuffer, hlsStream)
        {
            string[] resolution = null;

            string s;
            if (metadata.Attributes != null &&
                metadata.Attributes.TryGetValue(HLSPlaylistMetaKeys.Resolution, out s))
            {
                string[] components = s.Split(new char[] { 'x' });
                if (components != null && components.Length == 2)
                    resolution = components;
            }

            if (resolution == null)
            {
                HLSTrace.WriteLine("Missing 'Resolution' tag in HLS MetaKeys, defaulting to the maximum supported resolution of 1280x720.");
                resolution = new string[] { "1280", "720" };
            }

            Dictionary<MediaStreamAttributeKeys, string> streamAttributes = new Dictionary<MediaStreamAttributeKeys, string>();
            streamAttributes[MediaStreamAttributeKeys.VideoFourCC] = "H264";
            streamAttributes[MediaStreamAttributeKeys.Width] = resolution[0];
            streamAttributes[MediaStreamAttributeKeys.Height] = resolution[1];
            Description = new MediaStreamDescription(MediaStreamType.Video, streamAttributes);
        }
        public static IEntitySetMetadata GetEntitySet(this IContainerMetadata containerMetadata, string entitySetName)
        {
            Contract.Requires <ArgumentNullException>(containerMetadata != null);
            Contract.Requires <ArgumentException>(!string.IsNullOrWhiteSpace(entitySetName));

            return(containerMetadata.EntitySets.SingleOrDefault(es => string.Equals(es.Name, entitySetName, StringComparison.Ordinal)));
        }
示例#6
0
        /// <summary>
        /// Callback invoked to set per-controller overrides for this controllerDescriptor.
        /// </summary>
        /// <param name="controllerSettings">The controller settings to initialize.</param>
        /// <param name="controllerDescriptor">The controller descriptor. Note that the <see
        /// cref="T:System.Web.Http.Controllers.HttpControllerDescriptor" /> can be associated with the derived
        /// controller type given that <see cref="T:System.Web.Http.Controllers.IControllerConfiguration" /> is
        /// inherited.</param>
        public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
        {
            if (controllerSettings == null)
            {
                throw new ArgumentNullException("controllerSettings");
            }

            if (controllerDescriptor == null)
            {
                throw new ArgumentNullException("controllerDescriptor");
            }

            ServicesContainer services = controllerSettings.Services;

            Contract.Assert(services != null);

            IContainerMetadata containerMetadata = controllerDescriptor.GetContainerMetadata();

            // Replace the action selector with one that is based on the OData routing conventions
            IHttpActionSelector originalActionSelector = services.GetActionSelector();
            IHttpActionSelector actionSelector;

            if (containerMetadata != null)
            {
                // ContainerMetadata was stored with the HttpControllerDescriptor - so use our "special" ActionSelector
                actionSelector = new EntityRepositoryActionSelector(containerMetadata, originalActionSelector);
            }
            else
            {
                // No ContainerMetadata stored with the HttpControllerDescriptor - so use the standard odata ActionSelector
                actionSelector = new ODataActionSelector(originalActionSelector);
            }
            controllerSettings.Services.Replace(typeof(IHttpActionSelector), actionSelector);
        }
        public static IEntityTypeMetadata GetEntityType(this IContainerMetadata containerMetadata, Type clrType)
        {
            Contract.Requires <ArgumentNullException>(containerMetadata != null);
            Contract.Requires <ArgumentNullException>(clrType != null);
            Contract.Ensures(Contract.Result <IEntityTypeMetadata>() != null);

            return(containerMetadata.EntityTypes.SingleOrDefault(et => et.ClrType == clrType));
        }
示例#8
0
        public static object GetKeyFor <TEntity>(this IContainerMetadata containerMetadata, TEntity entity)
        {
            Contract.Requires <ArgumentNullException>(containerMetadata != null);
            Contract.Requires <ArgumentNullException>(entity != null);

            IEntityTypeMetadata entityTypeMetadata = containerMetadata.GetEntityType(typeof(TEntity));

            return(entityTypeMetadata.EntityKeyFunction(entity));
        }
示例#9
0
        // TODO: Remove this - but keeping it in for now until we prove in all cases that the ctor below is better.
        public ODataServerConfigurer(HttpConfiguration webApiConfig, IContainerMetadata containerMetadata)
        {
            Contract.Requires <ArgumentNullException>(webApiConfig != null);

            _webApiConfig      = webApiConfig;
            _containerMetadata = containerMetadata;

            _controllerSelector = EntityRepositoryControllerSelector.Install(webApiConfig, this);
        }
		// TODO: Remove this - but keeping it in for now until we prove in all cases that the ctor below is better.
		public ODataServerConfigurer(HttpConfiguration webApiConfig, IContainerMetadata containerMetadata)
		{
			Contract.Requires<ArgumentNullException>(webApiConfig != null);

			_webApiConfig = webApiConfig;
			_containerMetadata = containerMetadata;

			_controllerSelector = EntityRepositoryControllerSelector.Install(webApiConfig, this);
		}
        public static IEntitySetMetadata GetEntitySetFor(this IContainerMetadata containerMetadata, IEdmSchemaType edmSchemaType)
        {
            Contract.Requires <ArgumentNullException>(containerMetadata != null);
            Contract.Requires <ArgumentNullException>(edmSchemaType != null);

            IEntityTypeMetadata entityType = GetEntityType(containerMetadata, edmSchemaType);

            if (entityType == null)
            {
                return(null);
            }
            return(containerMetadata.EntitySets.SingleOrDefault(es => es.ElementTypeHierarchyMetadata.Contains(entityType)));
        }
        public static IEntityTypeMetadata GetEntityType(this IContainerMetadata containerMetadata, IEdmSchemaType edmSchemaType)
        {
            Contract.Requires <ArgumentNullException>(containerMetadata != null);
            Contract.Requires <ArgumentNullException>(edmSchemaType != null);

            return(containerMetadata.EntityTypes.SingleOrDefault(et =>
            {
                IEdmEntityType edmType = et.EdmType;
                return edmType.TypeKind == edmSchemaType.TypeKind &&
                edmType.Name == edmSchemaType.Name &&
                ((edmType.Namespace == edmSchemaType.Namespace) || (containerMetadata.Namespace == edmSchemaType.Namespace) || (et.ClrType.Namespace == edmSchemaType.Namespace));
            }));
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="EntityRepositoryActionSelector" /> class.
		/// </summary>
		/// <param name="containerMetadata">The container metadata describing all the entity sets in the container.</param>
		/// <param name="innerSelector">The inner controller selector to call.</param>
		public EntityRepositoryActionSelector(IContainerMetadata containerMetadata, IHttpActionSelector innerSelector)
		{
			if (containerMetadata == null)
			{
				throw new ArgumentNullException("containerMetadata");
			}
			if (innerSelector == null)
			{
				throw new ArgumentNullException("innerSelector");
			}

			_containerMetadata = containerMetadata;
			_innerSelector = innerSelector;
		}
示例#14
0
		internal EntitySetMetadata(Type contextType, IContainerMetadata container, IEdmEntitySet edmEntitySet, IEntityTypeMetadata entityTypeMetadata, IEntityTypeMetadata[] entityTypeHierarchyMetadata)
		{
			Contract.Assert(container != null);
			Contract.Assert(edmEntitySet != null);
			Contract.Assert(entityTypeMetadata != null);
			Contract.Assert(entityTypeHierarchyMetadata != null);
			Contract.Assert(entityTypeHierarchyMetadata.Length >= 1);

			ContextType = contextType;
			ContainerMetadata = container;
			_edmEntitySet = edmEntitySet;
			ElementTypeMetadata = entityTypeMetadata;
			ElementTypeHierarchyMetadata = entityTypeHierarchyMetadata;
		}
示例#15
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EntityRepositoryActionSelector" /> class.
        /// </summary>
        /// <param name="containerMetadata">The container metadata describing all the entity sets in the container.</param>
        /// <param name="innerSelector">The inner controller selector to call.</param>
        public EntityRepositoryActionSelector(IContainerMetadata containerMetadata, IHttpActionSelector innerSelector)
        {
            if (containerMetadata == null)
            {
                throw new ArgumentNullException("containerMetadata");
            }
            if (innerSelector == null)
            {
                throw new ArgumentNullException("innerSelector");
            }

            _containerMetadata = containerMetadata;
            _innerSelector     = innerSelector;
        }
示例#16
0
        internal EntitySetMetadata(Type contextType, IContainerMetadata container, IEdmEntitySet edmEntitySet, IEntityTypeMetadata entityTypeMetadata, IEntityTypeMetadata[] entityTypeHierarchyMetadata)
        {
            Contract.Assert(container != null);
            Contract.Assert(edmEntitySet != null);
            Contract.Assert(entityTypeMetadata != null);
            Contract.Assert(entityTypeHierarchyMetadata != null);
            Contract.Assert(entityTypeHierarchyMetadata.Length >= 1);

            ContextType                  = contextType;
            ContainerMetadata            = container;
            _edmEntitySet                = edmEntitySet;
            ElementTypeMetadata          = entityTypeMetadata;
            ElementTypeHierarchyMetadata = entityTypeHierarchyMetadata;
        }
示例#17
0
        public ODataServerConfigurer(HttpConfiguration webApiConfig)
        {
            Contract.Requires <ArgumentNullException>(webApiConfig != null);

            _webApiConfig = webApiConfig;

            // Obtain the container metadata from the DI service
            _containerMetadata = webApiConfig.DependencyResolver.Resolve <IContainerMetadata>();
            if (_containerMetadata == null)
            {
                throw new ArgumentException("IContainerMetadata could not be resolved from HttpConfiguration.DependencyResolver.");
            }

            _controllerSelector = EntityRepositoryControllerSelector.Install(webApiConfig, this);
        }
		public ODataServerConfigurer(HttpConfiguration webApiConfig)
		{
			Contract.Requires<ArgumentNullException>(webApiConfig != null);

			_webApiConfig = webApiConfig;

			// Obtain the container metadata from the DI service
			_containerMetadata = webApiConfig.DependencyResolver.Resolve<IContainerMetadata>();
			if (_containerMetadata == null)
			{
				throw new ArgumentException("IContainerMetadata could not be resolved from HttpConfiguration.DependencyResolver.");
			}

			_controllerSelector = EntityRepositoryControllerSelector.Install(webApiConfig, this);
		}
示例#19
0
        protected EntitySetController(IContainerMetadata containerMetadata, ODataValidationSettings queryValidationSettings, ODataQuerySettings querySettings)
        {
            Contract.Requires<ArgumentNullException>(containerMetadata != null);
            Contract.Requires<ArgumentNullException>(queryValidationSettings != null);
            Contract.Requires<ArgumentNullException>(querySettings != null);

            _entitySetMetadata = containerMetadata.GetEntitySetFor(typeof(TEntity));
            if (_entitySetMetadata == null)
            {
                throw new InvalidOperationException("EntitySet not found in containerMetadata for type " + typeof(TEntity));
            }

            _queryValidationSettings = queryValidationSettings;
            _querySettings = querySettings;
        }
		public static void ConfigureFromContainer(this ODataModelBuilder modelBuilder, IContainerMetadata containerMetadata)
		{
			modelBuilder.ContainerName = containerMetadata.Name;
			modelBuilder.Namespace = containerMetadata.Namespace;

			// Add all entity types
			foreach (IEntityTypeMetadata entityTypeMetadata in containerMetadata.EntityTypes)
			{
				EntityTypeConfiguration entityTypeConfig = modelBuilder.AddEntity(entityTypeMetadata.ClrType);
			}

			// Add all entity sets
			foreach (IEntitySetMetadata entitySetMetadata in containerMetadata.EntitySets)
			{
				string entitySetName = entitySetMetadata.Name;
				EntityTypeConfiguration entityTypeConfig = (EntityTypeConfiguration) modelBuilder.GetTypeConfigurationOrNull(entitySetMetadata.ElementTypeMetadata.ClrType);
				EntitySetConfiguration entitySetConfig = modelBuilder.AddEntitySet(entitySetName, entityTypeConfig);
			}
		}
示例#21
0
        private static void ExpandGenericNavigationActionsForAllNavigationProperties(IEnumerable <HttpActionDescriptor> navigationActions,
                                                                                     List <HttpActionDescriptor> expandedDescriptors,
                                                                                     List <HttpActionDescriptor> removeDescriptors,
                                                                                     Func <string, string> actionNameBuilder)
        {
            foreach (HttpActionDescriptor navigationAction in navigationActions)
            {
                ReflectedHttpActionDescriptor reflectedHttpActionDescriptor = navigationAction as ReflectedHttpActionDescriptor;
                if ((reflectedHttpActionDescriptor != null) &&
                    reflectedHttpActionDescriptor.MethodInfo.IsGenericMethodDefinition &&
                    reflectedHttpActionDescriptor.MethodInfo.GetGenericArguments().Length == 1)
                {
                    // Lookup the EntitySet metadata for the controller
                    IContainerMetadata containerMetadata = reflectedHttpActionDescriptor.ControllerDescriptor.GetContainerMetadata();
                    if (containerMetadata != null)
                    {
                        IEntitySetMetadata entitySetMetadata = containerMetadata.GetEntitySet(reflectedHttpActionDescriptor.ControllerDescriptor.ControllerName);
                        if (entitySetMetadata != null)
                        {
                            foreach (IEntityTypeMetadata entityTypeMetadata in entitySetMetadata.ElementTypeHierarchyMetadata)
                            {
                                // Foreach NavigationProperty in all of the entity types, add a new HttpActionDescriptor
                                foreach (var edmNavigationProperty in entityTypeMetadata.EdmType.DeclaredProperties.OfType <IEdmNavigationProperty>())
                                {
                                    IEdmEntityType      toEntityType         = edmNavigationProperty.ToEntityType();
                                    IEntityTypeMetadata propertyTypeMetadata = containerMetadata.GetEntityType(toEntityType);

                                    Type       tProperty          = propertyTypeMetadata.ClrType;
                                    MethodInfo genericMethod      = reflectedHttpActionDescriptor.MethodInfo.MakeGenericMethod(tProperty);
                                    string     expandedActionName = actionNameBuilder(edmNavigationProperty.Name);
                                    expandedDescriptors.Add(new RenamedReflectedHttpActionDescriptor(reflectedHttpActionDescriptor.ControllerDescriptor,
                                                                                                     genericMethod,
                                                                                                     expandedActionName));
                                }
                            }
                        }
                    }

                    removeDescriptors.Add(reflectedHttpActionDescriptor);
                }
            }
        }
示例#22
0
        /// <summary>
        /// Common construction code for all constructors
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="audioBuffer"></param>
        /// <param name="videoBuffer"></param>
        private void CommonConstruct(EncryptedStream stream, SampleBuffer audioBuffer,
                                    SampleBuffer videoBuffer, IContainerMetadata metadata, uint bitrate,
                                    BandwidthHistory BWHistory)
        {
            if (stream == null)
                throw new ArgumentNullException("stream");
            _stream = stream;
            _metadata = metadata;
            _audioBuffer = audioBuffer;
            _audioBuffer.ResetOnSegmentStart();
            _videoBuffer = videoBuffer;
            _videoBuffer.ResetOnSegmentStart();

            _previousReadEndTime = stream.RequestStartTime;

            _bitrate = bitrate;

            _downloadChunkBuffer = new byte[_downloadChunkSize];
            _TSPacketBuffer = new byte[TSPacketSize];

            _BWHistory = BWHistory;
        }
示例#23
0
        /// <summary>
        /// Special constructor for creating new demux for next stream in sequence
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="previousDemux"></param>
        public TSDemux(EncryptedStream stream, TSDemux previousDemux, IContainerMetadata metadata, uint bitrate, BandwidthHistory BWHistory)
        {
            if (previousDemux == null)
                throw new ArgumentNullException("previousDemux");

            CommonConstruct(stream, previousDemux._audioBuffer, previousDemux._videoBuffer, metadata, bitrate, BWHistory);

            if (!stream.Discontinuity)
                _streams = previousDemux._streams;

            _audioFormatParser = previousDemux._audioFormatParser;
            _videoFormatParser = previousDemux._videoFormatParser;
            _audioFormatParser.HLSStream = stream.HLSStream;
            _videoFormatParser.HLSStream = stream.HLSStream;
        }
示例#24
0
 /// <summary>
 ///  Default constructor.
 /// </summary>
 /// <param name="stream"></param>
 /// <param name="audioBuffer"></param>
 /// <param name="videoBuffer"></param>
 public TSDemux(EncryptedStream stream, SampleBuffer audioBuffer,
                SampleBuffer videoBuffer, IContainerMetadata metadata, uint bitrate, 
                BandwidthHistory BWHistory)
 {
     CommonConstruct(stream, audioBuffer, videoBuffer, metadata, bitrate, BWHistory);
 }
        public static void ConfigureFromContainer(this ODataModelBuilder modelBuilder, IContainerMetadata containerMetadata)
        {
            modelBuilder.ContainerName = containerMetadata.Name;
            modelBuilder.Namespace     = containerMetadata.Namespace;

            // Add all entity types
            foreach (IEntityTypeMetadata entityTypeMetadata in containerMetadata.EntityTypes)
            {
                EntityTypeConfiguration entityTypeConfig = modelBuilder.AddEntity(entityTypeMetadata.ClrType);
            }

            // Add all entity sets
            foreach (IEntitySetMetadata entitySetMetadata in containerMetadata.EntitySets)
            {
                string entitySetName = entitySetMetadata.Name;
                EntityTypeConfiguration entityTypeConfig = (EntityTypeConfiguration)modelBuilder.GetTypeConfigurationOrNull(entitySetMetadata.ElementTypeMetadata.ClrType);
                EntitySetConfiguration  entitySetConfig  = modelBuilder.AddEntitySet(entitySetName, entityTypeConfig);
            }
        }
		public EntityRepositoryMetadataController(IContainerMetadata containerMetadata)
		{
			Contract.Requires<ArgumentNullException>(containerMetadata != null);

			_containerMetadata = containerMetadata;
		}
        public EntityRepositoryMetadataController(IContainerMetadata containerMetadata)
        {
            Contract.Requires <ArgumentNullException>(containerMetadata != null);

            _containerMetadata = containerMetadata;
        }