Пример #1
0
            public static Expression Normalize(Expression expression)
            {
                var rw = new ResourceRewriter().Visit(expression);
                var ce = new ClosureEliminator().Visit(rw);

                return(ce);
            }
Пример #2
0
        public static ShardedVertexInfo Create(
            string vertexName,
            string epochId,
            List <string> allInstances,
            List <int> allShards,
            List <int> addedShards,
            List <int> removedShards,
            Expression <Func <int, int> > shardLocator)
        {
            var strAllInstances  = string.Join(";", allInstances);
            var strAllShards     = string.Join(";", allShards);
            var strAddedShards   = string.Join(";", addedShards);
            var strRemovedShards = string.Join(";", removedShards);
            var strShardLocator  = "";

            if (shardLocator != null)
            {
                var        closureEliminator            = new ClosureEliminator();
                Expression vertexedUserLambdaExpression = closureEliminator.Visit(shardLocator);
                strShardLocator = SerializationHelper.Serialize(vertexedUserLambdaExpression);
            }

            return(new ShardedVertexInfo(
                       vertexName: vertexName,
                       epochId: epochId,
                       allInstances: strAllInstances,
                       allShards: strAllShards,
                       addedShards: strAddedShards,
                       removedShards: strRemovedShards,
                       shardLocator: strShardLocator));
        }
Пример #3
0
        public static VertexInfo Create(
            string instanceName,
            string vertexName,
            string vertexDefinition,
            string address,
            int port,
            Expression <Func <IShardedVertex> > vertexCreateAction,
            object vertexParameter,
            bool isActive,
            bool isSharded)
        {
            string vertexCreateActionStr = null;

            if (vertexCreateAction != null)
            {
                var        closureEliminator            = new ClosureEliminator();
                Expression vertexedUserLambdaExpression = closureEliminator.Visit(
                    vertexCreateAction);

                vertexCreateActionStr = SerializationHelper.Serialize(vertexedUserLambdaExpression);
            }

            string vertexParameterStr = SerializationHelper.SerializeObject(vertexParameter);

            return(new VertexInfo(
                       instanceName: instanceName,
                       address: address,
                       port: port,
                       vertexName: vertexName,
                       vertexDefinition: vertexDefinition,
                       vertexCreateAction: vertexCreateActionStr,
                       vertexParameter: vertexParameterStr,
                       isActive: isActive,
                       isSharded: isSharded));
        }
Пример #4
0
        public IShardedDataset <TKey2, TPayload2, TDataset2> Transform <TKey2, TPayload2, TDataset2>(
            Expression <Func <TDataset, TDataset2> > transformer)
            where TDataset2 : IDataset <TKey2, TPayload2>
        {
            transformer = new ClosureEliminator().Visit(transformer) as Expression <Func <TDataset, TDataset2> >;

            return(new DeployableShardedDataset <TKey, TPayload, TDataset,
                                                 Empty, Empty, EmptyDataSet, TKey2, TPayload2, TDataset2>(this, transformer));
        }
        /// <summary>
        /// Creates a new expression service provider instance.
        /// </summary>
        /// <param name="reactiveClientInterfaceType">Interface type of the IReactiveClient variant used to obtain reactive resources.</param>
        public ReactiveExpressionServices(Type reactiveClientInterfaceType)
        {
            ReactiveClientInterfaceType = reactiveClientInterfaceType;

            _registeredObjects                = new ConditionalWeakTable <object, Expression>();
            _closureEliminator                = new ClosureEliminator();
            _knownResourceRewriter            = new KnownResourceRewriter(this);
            _clientInterfaceCallToUriRewriter = new ClientInterfaceCallToUriRewriter(this);
            _knownResourceInvocationRewriter  = new KnownResourceInvocationRewriter(this);
        }
Пример #6
0
        public IShardedDataset <TKeyO, TPayloadO, TDatasetO> Transform <TKey2, TPayload2, TDataset2, TKeyO, TPayloadO, TDatasetO>(
            IShardedDataset <TKey2, TPayload2, TDataset2> input2,
            Expression <Func <TDataset, TDataset2, TDatasetO> > transformer)
            where TDataset2 : IDataset <TKey2, TPayload2>
            where TDatasetO : IDataset <TKeyO, TPayloadO>
        {
            transformer = new ClosureEliminator().Visit(transformer) as Expression <Func <TDataset, TDataset2, TDatasetO> >;

            return(new DeployableShardedDataset <TKey, TPayload, TDataset,
                                                 TKey2, TPayload2, TDataset2, TKeyO, TPayloadO, TDatasetO>(this, input2, transformer));
        }
Пример #7
0
        internal DeployableShardedDataset(IShardedDataset <TKeyI1, TPayloadI1, TDataSetI1> input,
                                          Expression <Func <TDataSetI1, TDataSetO> > transform)
        {
            _input1        = input;
            _input2        = null;
            _operationType = OperatorType.UnaryTransform;

            var closureEliminator = new ClosureEliminator();

            _unaryTransformer  = closureEliminator.Visit(transform) as Expression <Func <TDataSetI1, TDataSetO> >;
            _binaryTransformer = null;
            _splitter          = null;
            _merger            = null;
            _moveDescriptor    = null;
        }
Пример #8
0
        internal DeployableShardedDataset(
            IDataProvider dataProvider,
            IShardedDataset <TKeyI1, TPayloadI1, TDataSetI1> input,
            Expression <Func <TDataSetI1, IMoveDescriptor, TDataSetI2[]> > splitter,
            Expression <Func <TDataSetI2[], IMoveDescriptor, TDataSetO> > merger, IMoveDescriptor moveDescriptor)
            : base(dataProvider)
        {
            _input1        = input;
            _input2        = null;
            _operationType = OperatorType.Move;

            var closureEliminator = new ClosureEliminator();

            _splitter          = closureEliminator.Visit(splitter) as Expression <Func <TDataSetI1, IMoveDescriptor, TDataSetI2[]> >;
            _merger            = closureEliminator.Visit(merger) as Expression <Func <TDataSetI2[], IMoveDescriptor, TDataSetO> >;
            _moveDescriptor    = moveDescriptor;
            _unaryTransformer  = null;
            _binaryTransformer = null;
            _dataProvider      = dataProvider;
        }
Пример #9
0
        internal DeployableShardedDataset(
            IDataProvider dataProvider,
            IShardedDataset <TKeyI1, TPayloadI1, TDataSetI1> input1,
            IShardedDataset <TKeyI2, TPayloadI2, TDataSetI2> input2,
            Expression <Func <TDataSetI1, TDataSetI2, TDataSetO> > transform)
            : base(dataProvider)
        {
            _input1        = input1;
            _input2        = input2;
            _operationType = OperatorType.BinaryTransform;

            var closureEliminator = new ClosureEliminator();

            _binaryTransformer = closureEliminator.Visit(transform) as Expression <Func <TDataSetI1, TDataSetI2, TDataSetO> >;
            _unaryTransformer  = null;
            _splitter          = null;
            _merger            = null;
            _moveDescriptor    = null;
            _dataProvider      = dataProvider;
        }
Пример #10
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="instanceName"></param>
        /// <param name="vertexName"></param>
        /// <param name="vertexDefinition"></param>
        /// <param name="address"></param>
        /// <param name="port"></param>
        /// <param name="vertexCreateAction"></param>
        /// <param name="vertexParameter"></param>
        /// <param name="isActive"></param>
        public VertexTable(string instanceName, string vertexName, string vertexDefinition, string address, int port, Expression <Func <IShardedVertex> > vertexCreateAction, object vertexParameter, bool isActive)
        {
            this.PartitionKey = instanceName;
            this.RowKey       = vertexName;

            this.VertexDefinition   = vertexDefinition;
            this.Address            = address;
            this.Port               = port;
            this.VertexCreateAction = "";
            this.IsActive           = isActive;
            this.IsSharded          = true;

            if (vertexCreateAction != null)
            {
                var        closureEliminator            = new ClosureEliminator();
                Expression vertexedUserLambdaExpression = closureEliminator.Visit(
                    vertexCreateAction);

                this.VertexCreateAction = SerializationHelper.Serialize(vertexedUserLambdaExpression);
            }

            this.VertexParameter = SerializationHelper.SerializeObject(vertexParameter);
        }