Exemplo n.º 1
0
        public static IQueryPlanNode DeserializeQueryPlan(this ISystemContext context, Type nodeType, BinaryReader reader)
        {
            var serializers = context.ResolveAllServices <IQueryPlanNodeSerializer>();

            foreach (var serializer in serializers)
            {
                if (serializer.CanSerialize(nodeType))
                {
                    return((IQueryPlanNode)serializer.Deserialize(reader));
                }
            }

            throw new InvalidOperationException(string.Format("Could not find any serializer for node type '{0}'.", nodeType));
        }
Exemplo n.º 2
0
        public static IRoutine ResolveRoutine(this ISystemContext context, Invoke invoke, IQuery queryContext)
        {
            var resolvers = context.ResolveAllServices <IRoutineResolver>();

            foreach (var resolver in resolvers)
            {
                var routine = resolver.ResolveRoutine(invoke, queryContext);
                if (routine != null)
                {
                    return(routine);
                }
            }

            return(null);
        }
Exemplo n.º 3
0
        public static SqlType ResolveType(this ISystemContext context, string typeName, params DataTypeMeta[] meta)
        {
            var resolvers      = context.ResolveAllServices <ITypeResolver>();
            var resolveContext = new TypeResolveContext(SqlTypeCode.Type, typeName, meta);

            foreach (var typeResolver in resolvers)
            {
                var type = typeResolver.ResolveType(resolveContext);
                if (type != null)
                {
                    return(type);
                }
            }

            return(null);
        }
Exemplo n.º 4
0
        public static void SerializeQueryPlan(this ISystemContext context, IQueryPlanNode node, BinaryWriter writer)
        {
            var nodeType = node.GetType();

            var serializers = context.ResolveAllServices <IQueryPlanNodeSerializer>();

            foreach (var serializer in serializers)
            {
                if (serializer.CanSerialize(nodeType))
                {
                    serializer.Serialize(node, writer);
                    return;
                }
            }

            throw new InvalidOperationException(string.Format("Could not find any serializer for node type '{0}'.", nodeType));
        }
 public static IIndexFactory ResolveIndexFactory(this ISystemContext context, string indexType)
 {
     return(context.ResolveAllServices <IIndexFactory>().FirstOrDefault(x => x.HandlesIndexType(indexType)));
 }