public override async Task <MessageEntry> CallFunction(MessageEntry rr_m)
        {
            string       rr_ename = rr_m.MemberName;
            MessageEntry rr_mr    = new MessageEntry(MessageEntryType.FunctionCallRes, rr_ename);

            switch (rr_ename)
            {
            case "GetLocalNodeServices": {
                object rr_ret = await obj.GetLocalNodeServices(default(CancellationToken));

                rr_mr.AddElement(new MessageElement("return", RRContext.PackMapType <int, ServiceInfo>(rr_ret)));
                break;
            }

            case "GetRoutedNodes": {
                object rr_ret = await obj.GetRoutedNodes(default(CancellationToken));

                rr_mr.AddElement(new MessageElement("return", RRContext.PackMapType <int, NodeInfo>(rr_ret)));
                break;
            }

            case "GetDetectedNodes": {
                object rr_ret = await obj.GetDetectedNodes(default(CancellationToken));

                rr_mr.AddElement(new MessageElement("return", RRContext.PackMapType <int, NodeInfo>(rr_ret)));
                break;
            }

            default:
                throw new MemberNotFoundException("Member not found");
            }
            return(rr_mr);
        }
        public async Task <Dictionary <int, ServiceInfo> > GetLocalNodeServices(CancellationToken rr_cancel = default(CancellationToken))
        {
            MessageEntry rr_mm = new MessageEntry(MessageEntryType.FunctionCallReq, "GetLocalNodeServices");
            MessageEntry rr_mr = await ProcessRequest(rr_mm, rr_cancel);

            MessageElement rr_me = rr_mr.FindElement("return");

            return((Dictionary <int, ServiceInfo>)RRContext.UnpackMapType <int, ServiceInfo>(rr_me.Data));
        }
        public override object GetCallbackFunction(uint rr_endpoint, string rr_membername)
        {
            switch (rr_membername)
            {
            case "cb2": {
                return(new Func <double, double, CancellationToken, Task>(async delegate(double d1, double d2, CancellationToken rr_cancel) {
                        MessageEntry rr_mm = new MessageEntry(MessageEntryType.CallbackCallReq, "cb2");
                        rr_mm.ServicePath = m_ServicePath;
                        MessageElementUtil.AddMessageElement(rr_mm, MessageElementUtil.PackScalar <double>("d1", d1));
                        MessageElementUtil.AddMessageElement(rr_mm, MessageElementUtil.PackScalar <double>("d2", d2));
                        MessageEntry rr_mr = await RRContext.ProcessCallbackRequest(rr_mm, rr_endpoint, rr_cancel);
                        MessageElement rr_me = rr_mr.FindElement("return");
                    }));
            }

            default:
                break;
            }
            throw new MemberNotFoundException("Member not found");
        }
Example #4
0
 public RRRepository(RRContext context)
 {
     _context = context;
 }