Example #1
0
        public async Task <RpcResult <APaperStaDetailRsp> > GetAPaperStaAsync(GetAPaperStaDetailReq req, int timeOut = 3000)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20002, 4);

            message.FriendlyServiceName = "APaperService.GetAPaperSta";
            message.Data = req.ToByteArray();
            var response = await base.CallInvoker.AsyncCall(message, timeOut);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <APaperStaDetailRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new APaperStaDetailRsp();
            }
            else
            {
                result.Data = APaperStaDetailRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #2
0
 /*
  * We always reduce our map call first, then children.
  */
 public State AddChildResult(RpcResult child)
 {
     if (Reducing)
     {
         //We need to add this to pending
         var pend = new ImmutableList <RpcResult>(child, Pending);
         return(new State(MapResult, Tree, ChildReductions, ReduceResult, Done, pend, true));
     }
     else if (MapResult == DEFAULT_OBJ)
     {
         /*
          * We are not reducing AND we have not finished the first
          * Reduce, that means we are waiting for the Map result.
          */
         var pend = new ImmutableList <RpcResult>(child, Pending);
         return(new State(MapResult, Tree, ChildReductions, ReduceResult, Done, pend, false));
     }
     else
     {
         /*
          * In this case, we are not already reducing, and we have reduced
          * the MapResult
          */
         return(new State(MapResult, Tree, ChildReductions, ReduceResult, Done, ImmutableList <RpcResult> .Empty, true));
     }
 }
Example #3
0
        static void Ping(IList nodes)
        {
            Random     my_r    = new Random();
            int        idx0    = my_r.Next(0, nodes.Count);
            int        idx1    = my_r.Next(0, nodes.Count);
            Node       n0      = (Node)nodes[idx0];
            Node       n1      = (Node)nodes[idx1];
            RpcManager pinger  = n0.Rpc;
            Channel    results = new Channel();

            results.EnqueueEvent += delegate(object q, EventArgs a) {
                object    result = results.Dequeue();
                RpcResult r      = (RpcResult)result;
                try {
                    IDictionary data = (IDictionary)r.Result;
                    Console.WriteLine("target: {0}, rtt: {1}", data["target"], data["musec"]);
                }
                catch (Exception x) {
                    Console.WriteLine("target: {0}, Exception: {1}", n1.Address, x);
                }
            };
            Console.WriteLine("Pinging: {0} -> {1}", n0.Address, n1.Address);
            try {
                pinger.Invoke(n0, results, "trace.GetRttTo", n1.Address.ToString());
            }
            catch (Exception x) {
                Console.WriteLine("Exception: {0}", x);
            }
        }
        public async Task <RpcResult <SaveQPaperRsp> > SaveQPaperAsync(SaveQPaperReq req, int timeOut = 3000)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20001, 1);

            message.FriendlyServiceName = "QPaperInnerService.SaveQPaper";
            message.Data = req.ToByteArray();
            var response = await base.CallInvoker.AsyncCall(message, timeOut);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <SaveQPaperRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }
            else if (response.Data == null)
            {
                result.Code = ErrorCodes.CODE_INTERNAL_ERROR;
            }
            else
            {
                result.Data = SaveQPaperRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #5
0
            /**
             * Step 1. Get vivaldi state for the current trial.
             * @param state information associated with the node we are going to sample.
             */
            protected void GetVivaldiState()
            {
#if NC_DEBUG
                Console.Error.WriteLine("[NCService] {0} Requesting vivaldi state from: {1}.", _node.Address, _target_address);
#endif
                Channel q = new Channel(1);
                q.CloseEvent += delegate(object o, EventArgs args) {
                    Channel nc_q = (Channel)o;
                    if (nc_q.Count > 0)
                    {
                        try {
                            RpcResult result = nc_q.Dequeue() as RpcResult;
                            _state_result.Value = (Hashtable)result.Result;
                        } catch (Exception) {}
                    }

                    //if got  something valid, move on to Step 2.
                    if (_state_result.Value != null)
                    {
                        GetLatencySample();
                    }
                    else
                    {
                        //do nothing, looks like things are not going well with this trial
                        //termination
#if NC_DEBUG
                        Console.Error.WriteLine("[NCService] {0} Rpc (GetVivaldiState) failed: {1}.", _node.Address, _target_address);
#endif
                    }
                };

                try {
                    _node.Rpc.Invoke(_target_edge, q, "ncserver.EchoVivaldiState", new object[] {});
                } catch (Exception) {}
            }
Example #6
0
        public async Task <RpcResult <RegisterRsp> > RegisterAsync(RegisterReq req, int timeOut = 3000)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20003, 1);

            message.FriendlyServiceName = "UserService.Register";
            message.Data = req.ToByteArray();
            var response = await base.CallInvoker.AsyncCall(message, timeOut);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <RegisterRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new RegisterRsp();
            }
            else
            {
                result.Data = RegisterRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #7
0
        //同步方法
        public RpcResult <AddRes> Add(AddReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(10005, 1);

            message.FriendlyServiceName = "Math.Add";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <AddRes>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new AddRes();
            }
            else
            {
                result.Data = AddRes.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #8
0
        public async Task <RpcResult <VoidRes> > EnqueueAsync(EnqueueReq req, int timeOut = 3000)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(1000, 1);

            message.FriendlyServiceName = "TaskProducerService.Enqueue";
            message.Data = req.ToByteArray();
            var response = await base.CallInvoker.AsyncCall(message, timeOut);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <VoidRes>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }
            else if (response.Data == null)
            {
                result.Code = ErrorCodes.CODE_INTERNAL_ERROR;
            }
            else
            {
                result.Data = VoidRes.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
        //同步方法
        public RpcResult <VoidRsp> AddAPaperCount(AddAPaperReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20001, 5);

            message.FriendlyServiceName = "QPaperService.AddAPaperCount";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <VoidRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new VoidRsp();
            }
            else
            {
                result.Data = VoidRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #10
0
        public override void Reduce(Channel q, object reduce_arg,
                                    object current_result, RpcResult child_rpc)
        {
            bool    done         = false;
            ISender child_sender = child_rpc.ResultSender;
            //the following can throw an exception, will be handled by the framework
            object child_result = child_rpc.Result;


            //child result is a valid result
            if (current_result == null)
            {
                q.Enqueue(new Brunet.Collections.Pair <object, bool>(child_result, done));
                return;
            }


            ArrayList   retval   = current_result as ArrayList;
            IDictionary my_entry = (IDictionary)retval[0];

            my_entry["next_con"] = child_sender.ToUri();
            retval.AddRange((IList)child_result);

            if (LogEnabled)
            {
                ProtocolLog.Write(ProtocolLog.MapReduce,
                                  String.Format("{0}: {1}, reduce list count: {2}.", this.TaskName, _node.Address, retval.Count));
            }
            q.Enqueue(new Brunet.Collections.Pair <object, bool>(retval, done));
        }
Example #11
0
            protected void Callback(object o, EventArgs ea)
            {
                Channel q = o as Channel;

                try {
                    RpcResult res    = (RpcResult)q.Dequeue();
                    int       result = (int)res.Result;
                    if (result != 0)
                    {
                        throw new Exception(res.Result.ToString());
                    }

                    _total_latency += (DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond) - _start_time;
                } catch {
//        } catch(Exception e) {
//          Console.WriteLine(e);
                }
                if (Interlocked.Decrement(ref _waiting_on) == 0)
                {
                    Interlocked.Exchange(ref _done, 1);
                    Console.WriteLine("Performed {0} tests on {1} nodes", _count, _nodes.Count);
                    Console.WriteLine("Latency avg: {0}", _total_latency / _count);
                    DateTime start = new DateTime(_start_time * TimeSpan.TicksPerMillisecond);
                    Console.WriteLine("Finished in: {0}", (DateTime.UtcNow - start));
                }
            }
Example #12
0
        public override Task <RpcResult <TaskVoidRes> > ScheduleSecondTransforAsync(ScheduleTaskReq req)
        {
            RpcResult <TaskVoidRes> res = new RpcResult <TaskVoidRes>();

            _jobClient.Schedule <IHangfireJobService>(x => x.Schedule(0, 1, req.Delay, $"{req.ServiceId}|{req.MessageId}|{req.Data}", null), TimeSpan.FromSeconds(req.Delay));
            return(Task.FromResult(res));
        }
Example #13
0
        public override Task <RpcResult <TaskVoidRes> > ExcuteAsync(CommonTaskReq req)
        {
            var result = new RpcResult <TaskVoidRes>();

            _logger.LogInformation("receive task req: jobId={0},data ={1}", req.JobId, req.Data);
            return(Task.FromResult(result));
        }
Example #14
0
        public async Task <RpcResult <TResult> > AsyncRequest <T, TResult>(string callName, string groupName, int serviceId, ushort messageId,
                                                                           T req, int timeout = 3000)
        {
            RpcResult <TResult> result = new RpcResult <TResult>();
            var reqMessage             = AmpMessage.CreateRequestMessage(serviceId, messageId);

            reqMessage.FriendlyServiceName = callName;
            reqMessage.ServiceGroupName    = groupName;
            reqMessage.CodecType           = (CodecType)Enum.ToObject(typeof(CodecType), this._serializer.CodecType);
            reqMessage.Data = this._serializer.Serialize(req);
            var rsp = await AsyncCallInner(reqMessage, timeout);

            if (rsp != null)
            {
                result.Code = rsp.Code;
                if (rsp.Data != null)
                {
                    result.Data = this._serializer.Deserialize <TResult>(rsp.Data);
                }
            }
            else
            {
                this._logger.LogError("Call {0} , return null", callName);
                result.Code = RpcErrorCodes.CODE_INTERNAL_ERROR;
            }
            return(result);
        }
        public override Task <RpcResult <VoidRes> > ScheduleSecondAsync(ScheduleReq req)
        {
            RpcResult <VoidRes> res = new RpcResult <VoidRes>();

            _jobClient.Schedule <IJobService>(x => x.Schedule(req.ServiceId, req.MessageId, req.Data, null), TimeSpan.FromSeconds(req.Delay));
            return(Task.FromResult(res));
        }
Example #16
0
        public async Task <RpcResult <TaskVoidRes> > ScheduleSecondTransforAsync(ScheduleTaskReq req, int timeOut = 3000)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(2001, 106);

            message.FriendlyServiceName = "TaskProducerService.ScheduleSecondTransfor";
            message.Data = req.ToByteArray();
            var response = await base.CallInvoker.AsyncCall(message, timeOut);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <TaskVoidRes>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new TaskVoidRes();
            }
            else
            {
                result.Data = TaskVoidRes.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #17
0
        //同步方法
        public RpcResult <TaskVoidRes> ScheduleTransfor(ScheduleTaskReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(2001, 105);

            message.FriendlyServiceName = "TaskProducerService.ScheduleTransfor";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <TaskVoidRes>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new TaskVoidRes();
            }
            else
            {
                result.Data = TaskVoidRes.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #18
0
        static void TraceRoute(IList nodes)
        {
            Random     my_r    = new Random();
            int        idx0    = my_r.Next(0, nodes.Count);
            int        idx1    = my_r.Next(0, nodes.Count);
            Node       n0      = (Node)nodes[idx0];
            Node       n1      = (Node)nodes[idx1];
            RpcManager pinger  = n0.Rpc;
            Channel    results = new Channel();

            Console.WriteLine("Traceroute: {0} -> {1}", n0.Address, n1.Address);
            results.EnqueueEvent += delegate(object q, EventArgs a) {
                object    result = results.Dequeue();
                RpcResult r      = (RpcResult)result;
                IList     data   = (IList)r.Result;
                int       hop    = 0;
                foreach (IDictionary d in data)
                {
                    Console.WriteLine("Hop: {0} :: {1}\n  :: {2}", hop, d["node"], d["next_con"]);
                    hop++;
                }
            };
            try {
                pinger.Invoke(n0, results, "trace.GetRouteTo", n1.Address.ToString());
            }
            catch (Exception x) {
                Console.WriteLine("Exception: {0}", x);
            }
        }
Example #19
0
        public override async Task <RpcResult <APaperStaDetailRsp> > GetAPaperStaAsync(GetAPaperStaDetailReq request)
        {
            var res = new RpcResult <APaperStaDetailRsp>();

            res.Data = new APaperStaDetailRsp();


            var staList = await this._apaperRepo.QueryQPaperStaDetailAsync(request.QpaperId);


            foreach (var item in staList)
            {
                var stad = new APaperStaDetail()
                {
                    QuestionId = item.QuestionId
                };
                stad.Oa.AddRange(new int[]
                {
                    item.OA1, item.OA2, item.OA3, item.OA4, item.OA5, item.OA6, item.OA7, item.OA8, item.OA9, item.OA10
                });
                res.Data.StaDetail.Add(stad);
            }

            return(res);
        }
Example #20
0
        /**
         * Try to get an RpcResult out and handle it
         */
        protected void EnqueueHandler(object queue, EventArgs arg)
        {
            Channel   q       = (Channel)queue;
            RpcResult rpc_res = null;

            try {
                rpc_res = (RpcResult)q.Dequeue();
                ConnectToMessage new_ctm = new ConnectToMessage((IDictionary)rpc_res.Result);
                if (_local_node.Address.Equals(new_ctm.Target.Address))
                {
                    throw new Exception("Trying to connect to myself!");
                }
                lock ( _sync ) {
                    /**
                     * It is the responsibilty of the ConnectionOverlord
                     * to deal with this ctm
                     */
                    _got_ctms.Add(new_ctm);
                }
                bool close_queue = _co.HandleCtmResponse(this, rpc_res.ResultSender, new_ctm);
                if (close_queue)
                {
                    q.Close();
                }
            }
            catch (Exception) {
                //This can happen if the queue is empty and closed.  Don't do
                //anything.
            }
        }
Example #21
0
        //同步方法
        public RpcResult <VoidRes> Schedule(ScheduleReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(1000, 2);

            message.FriendlyServiceName = "TaskProducerService.Schedule";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <VoidRes>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }
            else if (response.Data == null)
            {
                result.Code = ErrorCodes.CODE_INTERNAL_ERROR;
            }
            else
            {
                result.Data = VoidRes.Parser.ParseFrom(response.Data);
            }
            return(result);
        }
Example #22
0
        public async Task <RpcResult <SubmitOrderRes> > SubmitOrder(SubmitOrderReq req)
        {
            var result = new RpcResult <SubmitOrderRes>();

            try
            {
                //var userService = _rpcServiceProxy.GetService<IUserService>();
                //var user = await userService.GetUser(new UserService.DTO.GetUserReq { UserId = req.UserId });

                var productService = _rpcServiceProxy.GetService <IProductService>();
                foreach (var item in req.Lines ?? new List <SubmitOrderLine>())
                {
                    var skuInfo = await productService.GetProduct(new ProductService.DTO.GetProductReq {
                        ProductId = item.SkuId
                    });
                }


                result.Data = new SubmitOrderRes
                {
                    OrderId = OrderId++
                };
            }
            catch (Exception ex)
            {
                result.Code    = ExceptionCode.INTETNAL_ERROR;
                result.Message = "内部错误";
            }

            return(result);
        }
        /// <summary>
        /// 分页获取问卷列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public override async Task <RpcResult <QPaperListRsp> > QueryQPaperListAsync(QueryQPaperReq request)
        {
            var res = new RpcResult <QPaperListRsp>();

            res.Data = new QPaperListRsp();

            var userId = request.CheckRole ? request.Identity : String.Empty;
            var view   = new PageView(request.Page, request.Rp);

            var plist = await this._qpaperRepo.QueryQPaperList(Utility.ClearSafeStringParma(request.Query), userId, view);

            res.Data.Total = view.PageIndex == 0 ? plist.Total : -1;

            if (plist != null && plist.DataList != null && plist.DataList.Count > 0)
            {
                foreach (var qpaper in plist.DataList)
                {
                    res.Data.List.Add(new DTOQPaper()
                    {
                        QpaperId    = qpaper.QpaperId,
                        Subject     = qpaper.Subject,
                        Description = qpaper.Description,
                        ApaperCount = qpaper.ApaperCount,
                        StartTime   = qpaper.StartTime.HasValue ? qpaper.StartTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                        EndTime     = qpaper.EndTime.HasValue ? qpaper.EndTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""
                    });
                }
            }
            return(res);
        }
        //同步方法
        public RpcResult <RegisterRsp> Register(RegisterReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(10001, 31);

            message.FriendlyServiceName = "UserGateService.Register";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <RegisterRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }
            else if (response.Data == null)
            {
                result.Code = ErrorCodes.CODE_INTERNAL_ERROR;
            }
            else
            {
                result.Data = RegisterRsp.Parser.ParseFrom(response.Data);
            }
            return(result);
        }
Example #25
0
        //同步方法
        public RpcResult <LoginRsp> Login(LoginReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20003, 2);

            message.FriendlyServiceName = "UserService.Login";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <LoginRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new LoginRsp();
            }
            else
            {
                result.Data = LoginRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
        public async Task <RpcResult <GetUserRsp> > CheckLoginAsync(CheckLoginReq req, int timeOut = 3000)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(10001, 34);

            message.FriendlyServiceName = "UserGateService.CheckLogin";
            message.Data = req.ToByteArray();
            var response = await base.CallInvoker.AsyncCall(message, timeOut);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <GetUserRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }
            else if (response.Data == null)
            {
                result.Code = ErrorCodes.CODE_INTERNAL_ERROR;
            }
            else
            {
                result.Data = GetUserRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #27
0
        public async Task <RpcResult <AddRes> > AddAsync(AddReq req, int timeOut = 3000)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(10005, 1);

            message.FriendlyServiceName = "Math.Add";
            message.Data = req.ToByteArray();
            var response = await base.CallInvoker.AsyncCall(message, timeOut);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <AddRes>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new AddRes();
            }
            else
            {
                result.Data = AddRes.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
Example #28
0
        //同步方法
        public RpcResult <APaperStaDetailRsp> GetAPaperSta(GetAPaperStaDetailReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20002, 4);

            message.FriendlyServiceName = "APaperService.GetAPaperSta";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <APaperStaDetailRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }

            if (response.Data == null)
            {
                result.Data = new APaperStaDetailRsp();
            }
            else
            {
                result.Data = APaperStaDetailRsp.Parser.ParseFrom(response.Data);
            }

            return(result);
        }
        //同步方法
        public RpcResult <QPaperListRsp> QueryQPaperList(QueryQPaperReq req)
        {
            AmpMessage message = AmpMessage.CreateRequestMessage(20001, 2);

            message.FriendlyServiceName = "QPaperInnerService.QueryQPaperList";


            message.Data = req.ToByteArray();
            var response = base.CallInvoker.BlockingCall(message);

            if (response == null)
            {
                throw new RpcException("error,response is null !");
            }
            var result = new RpcResult <QPaperListRsp>();

            if (response.Code != 0)
            {
                result.Code = response.Code;
            }
            else if (response.Data == null)
            {
                result.Code = ErrorCodes.CODE_INTERNAL_ERROR;
            }
            else
            {
                result.Data = QPaperListRsp.Parser.ParseFrom(response.Data);
            }
            return(result);
        }
Example #30
0
        /// <summary>
        /// 获取答卷列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public override async Task <RpcResult <APaperListRsp> > QueryAPaperListAsync(QueryAPaperReq request)
        {
            var res = new RpcResult <APaperListRsp>();

            res.Data = new APaperListRsp();

            var view = new PageView(request.Page, request.Rp);

            var plist = await this._apaperRepo.QueryAPaperList(request.Qtext, request.QpaperId, request.CheckRole?request.Identity : "", view);

            res.Data.Total = view.PageIndex == 0 ? plist.Total : -1;

            if (plist != null && plist.DataList != null && plist.DataList.Count > 0)
            {
                foreach (var apaper in plist.DataList)
                {
                    res.Data.List.Add(new DTOAPaper()
                    {
                        ApaperId      = apaper.PaperId,
                        CreateTime    = apaper.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        QpaperId      = apaper.QpaperId,
                        UserId        = apaper.UserId,
                        QpaperSubject = apaper.QpaperSubject ?? "",
                        QpaperUserId  = apaper.QpaperUserId ?? "",
                        Remark        = apaper.Remark
                    });
                }
            }
            return(res);
        }
    /**
     * Reduce method
     * @param reduce_arg argument for reduce
     * @param current_result result of current map 
     * @param child_rpc results from children 
     * @param done if done is true, stop reducing and return result
     * return table of hop count, number of success, tree depth
     */
    public override object Reduce(object reduce_arg, 
                                  object current_result, RpcResult child_rpc,
                                  out bool done) {

      done = false;
      object child_result = child_rpc.Result;
      if (current_result == null) {
        return child_result;
      }
      int my_count = (int)(current_result);

      int child_count = (int)(child_result);
      int result = my_count + child_count;
      return result;
    }
Example #32
0
    private void AddStuffToBQAndClose(object ostate) {
      object[] state = (object[])ostate;
      BlockingQueue bq = (BlockingQueue)state[0];
      ISender target = (ISender)state[1];

      foreach (object o in this.CurrentInvokeState.RetValues) {
        if (CurrentInvokeState.EnqueueIntervalInMillisec >= 0) {
          Thread.Sleep(CurrentInvokeState.EnqueueIntervalInMillisec);
        }
        RpcResult rs = new RpcResult(target, o);
        bq.Enqueue(rs);
      }

      if (CurrentInvokeState.IntervalBetweenLastEnqueueAndClose >= 0) {
        Thread.Sleep(CurrentInvokeState.IntervalBetweenLastEnqueueAndClose); 
      }
      bq.Close();
    }
    /**
     * Reduce method
     * @param reduce_arg argument for reduce
     * @param current_result result of current map 
     * @param child_rpc results from children 
     * @param done if done is true, stop reducing and return result
     * return table of hop count, number of success, tree depth
     */
    public override object Reduce(object reduce_arg, 
                                  object current_result, RpcResult child_rpc,
                                  out bool done) {

      done = false;
      //ISender child_sender = child_rpc.ResultSender;
      //the following can throw an exception, will be handled by the framework
      object child_result = child_rpc.Result;
      
      //child result is a valid result
      if (current_result == null) {
        return child_result;
      }
      
      IDictionary my_entry = current_result as IDictionary;
      IDictionary value = child_result as IDictionary;
      int max_height = (int) my_entry["height"];
      int count = (int) my_entry["count"];
      my_entry["success"] = (int) my_entry["success"] + (int) value["success"];
      int y = (int) value["count"];
      my_entry["count"] = count + y;
      int z = (int) value["height"] + 1;
      if (z > max_height) {
        my_entry["height"] = z; 
      }
      return my_entry;
    }
    /**
     * Reduce method
     * @param reduce_arg argument for reduce
     * @param current_result result of current map 
     * @param child_rpc results from children 
     * @param done if done is true, stop reducing and return result
     * return table of hop count, tree depth, and query result
     */  
    public override object Reduce(object reduce_arg, 
                                  object current_result, RpcResult child_rpc,
                                  out bool done) {

      done = false;
      //ISender child_sender = child_rpc.ResultSender;
      string query_type = (string)reduce_arg;
      object child_result = null;
      try {
        child_result = child_rpc.Result;
      }
      catch {
        throw new Exception("no rpc result.");
      }
      //child result is a valid result
      if (current_result == null) {
        return child_result;
      }
      IDictionary my_entry = current_result as IDictionary;
      IDictionary value = child_result as IDictionary;
      int max_height = (int) (my_entry["height"]);
      int count = (int) (my_entry["count"]);
      int y = (int) value["count"];
      my_entry["count"] = count + y;
      int z = (int) value["height"] + 1;
      if (z > max_height) {
        my_entry["height"] = z; 
      }
      if (query_type == "exact") {
        string m_result = (string)(my_entry["query_result"]); //current result
	string c_result = (string)(value["query_result"]); //child result
	if (m_result != null) {
          //Console.WriteLine("m_result is not null");
	  // if query type is exact matching and current result is not an empty string, 
	  // stop searching and return the result immediately.
	  done = true;
	}
	else {
	  if (c_result != null) {
            //Console.WriteLine("c_result is not null");
            done = true;
	    my_entry["query_result"] = c_result;
	  }
	  else {
            //there is no valid result, return null for the entry
            my_entry["query_result"] = null;
	  }
	}
	return my_entry;
      }
      else if (query_type == "regex") {
        ArrayList q_result = (ArrayList)(my_entry["query_result"]);
        ArrayList c_result = (ArrayList)(value["query_result"]);
        q_result.AddRange(c_result); //concatenate current result with child result
        my_entry["query_result"] = q_result;
        return my_entry;
      }
      else {
        throw new AdrException(-32608, "This query type {0} is supported." + query_type);
      }
    }