/// <summary> /// 获取服务条目集合。 /// </summary> /// <returns>服务条目集合。</returns> public TcpServiceEntry GetEntry() { var services = _types.ToArray(); TcpServiceEntry result = new TcpServiceEntry(); if (_tcpServiceEntryType != null) { result = CreateServiceEntry(_tcpServiceEntryType); } else { foreach (var service in services) { var entry = CreateServiceEntry(service); if (entry != null) { _tcpServiceEntryType = service; result = entry; break; } } if (_logger.IsEnabled(LogLevel.Debug)) { _logger.LogDebug($"发现了以下Tcp服务:{result.Type.FullName}。"); } } return(result); }
public TcpServiceEntry CreateServiceEntry(Type service) { TcpServiceEntry result = null; var routeTemplate = service.GetCustomAttribute <ServiceBundleAttribute>(); var objInstance = _serviceProvider.GetInstances(service); var behavior = objInstance as TcpBehavior; var path = RoutePatternParser.Parse(routeTemplate.RouteTemplate, service.Name); if (path.Length > 0 && path[0] != '/') { path = $"/{path}"; } if (behavior != null) { result = new TcpServiceEntry { Behavior = behavior, Type = behavior.GetType(), Path = path, } } ; return(result); } #endregion }
private async Task LocalExecuteAsync(TcpServiceEntry entry, byte[] bytes) { HttpResultMessage <object> resultMessage = new HttpResultMessage <object>(); try { // await entry.Behavior.Dispatch(bytes); } catch (Exception exception) { if (_logger.IsEnabled(LogLevel.Error)) { _logger.LogError(exception, "执行本地逻辑时候发生了错误。"); } } }