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"); }
public RRRepository(RRContext context) { _context = context; }