public void ParseAssemblyAndRegisterRosServices(Assembly assembly) { foreach (Type type in assembly.GetTypes()) { var typeInfo = type.GetTypeInfo(); if (type == typeof(RosService) || !typeInfo.IsSubclassOf(typeof(RosService))) { continue; } RosService service = Activator.CreateInstance(type) as RosService; if (service.ServiceType == "undefined/unknown") { throw new Exception("Invalid servive type. Service type field (srvtype) was not initialized correctly."); } var packageName = service.ServiceType.Split('/')[0]; if (!PackageNames.Contains(packageName)) { PackageNames.Add(packageName); } Logger.LogDebug($"Register {service.ServiceType}"); if (!TypeRegistry.ContainsKey(service.ServiceType)) { TypeRegistry.Add(service.ServiceType, service.GetType()); } } }
public async Task <bool> Call(RosService srv) { (bool result, RosMessage response) = await Call(srv.RequestMessage).ConfigureAwait(false); srv.ResponseMessage = response; return(result); }
public AdvertiseServiceOptions(string service, ServiceFunction <MReq, MRes> serviceCallback) { this.Service = service; ServiceCallback = serviceCallback; Helper = new ServiceCallbackHelper <MReq, MRes>(serviceCallback); RequestDataType = new MReq().MessageType.Replace("/Request", "__Request"); ResponseDataType = new MRes().MessageType.Replace("/Response", "__Response"); SrvType = RequestDataType.Replace("__Request", ""); Md5Sum = RosService.Generate(SrvType).MD5Sum(); }
public AdvertiseServiceOptions(string service, ServiceFunction <MReq, MRes> serviceCallback) { this.service = service; srv_func = serviceCallback; helper = new ServiceCallbackHelper <MReq, MRes>(serviceCallback); req_datatype = new MReq().MessageType.Replace("/Request", "__Request"); res_datatype = new MRes().MessageType.Replace("/Response", "__Response"); SrvType = req_datatype.Replace("__Request", ""); datatype = SrvType; md5sum = RosService.Generate(SrvType).MD5Sum(); }
private async Task WriteHeader() { var header = new Dictionary <string, string> { ["service"] = name, ["md5sum"] = RosService.Generate(RequestType.Replace("__Request", "").Replace("__Response", "")).MD5Sum(), ["callerid"] = ThisNode.Name, ["persistent"] = persistent ? "1" : "0" }; if (headerValues != null) { foreach (string o in headerValues.Keys) { header[o] = headerValues[o]; } } await this.connection.WriteHeader(header, cancel).ConfigureAwait(false); }
internal void initialize(Connection connection) { this.connection = connection; connection.DroppedEvent += onConnectionDropped; connection.setHeaderReceivedCallback(onHeaderReceived); IDictionary <string, string> header = new Dictionary <string, string> { ["service"] = name, ["md5sum"] = RosService.Generate(RequestType.Replace("__Request", "").Replace("__Response", "")).MD5Sum(), ["callerid"] = ThisNode.Name, ["persistent"] = persistent ? "1" : "0" }; if (header_values != null) { foreach (string o in header_values.Keys) { header[o] = header_values[o]; } } connection.writeHeader(header, onHeaderWritten); }
public bool call(RosService srv) { return(call(srv.RequestMessage, ref srv.ResponseMessage)); }