コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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
    }
コード例 #3
0
        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, "执行本地逻辑时候发生了错误。");
                }
            }
        }