public ETTask <List <ComponentWithId> > GetJson(string collectionName, string json, long skip, long limit)
        {
            ETTaskCompletionSource <List <ComponentWithId> >           tcs      = new ETTaskCompletionSource <List <ComponentWithId> >();
            PipelineStageDefinition <ComponentWithId, ComponentWithId> _match   = PipelineStageDefinitionBuilder.Match <ComponentWithId>(json);
            PipelineStageDefinition <ComponentWithId, ComponentWithId> _skip    = PipelineStageDefinitionBuilder.Skip <ComponentWithId>((int)skip);
            PipelineStageDefinition <ComponentWithId, ComponentWithId> _limit   = PipelineStageDefinitionBuilder.Limit <ComponentWithId>((int)limit);
            PipelineDefinition <ComponentWithId, ComponentWithId>      pipeline = new PipelineStagePipelineDefinition <ComponentWithId, ComponentWithId>(
                new PipelineStageDefinition <ComponentWithId, ComponentWithId>[] { _match, _skip, _limit });
            DBQueryPipelineTask dbQueryPipelineTask = ComponentFactory.Create <DBQueryPipelineTask, string, PipelineDefinition <ComponentWithId, ComponentWithId>, ETTaskCompletionSource <List <ComponentWithId> > >
                                                          (collectionName, pipeline, tcs);

            this.tasks[(int)((ulong)dbQueryPipelineTask.Id % taskCount)].Add(dbQueryPipelineTask);
            return(tcs.Task);
        }
 public override void Awake(DBQueryPipelineTask self, string collectionName, PipelineDefinition <ComponentWithId, ComponentWithId> pipeline, ETTaskCompletionSource <List <ComponentWithId> > tcs)
 {
     self.CollectionName = collectionName;
     self.pipeline       = pipeline;
     self.Tcs            = tcs;
 }