public static void LogMessage(this IMessageLogger logger, string category, MessageLogLevel level, string format, params object[] args)
 {
     if (logger == null) return;
     string msg = format;
     if (args.Length > 0) msg = String.Format(format, args);
     logger.LogMessage(new LogMessageRecord { Category = category, Message = msg, Level = level });
 }
Beispiel #2
0
        public async Task <Channel <Message> > CreateChannelAsync(
            Symbol publisherId, CancellationToken cancellationToken)
        {
            var clientId = ClientId.Value;

            try {
                var connectionUri = ConnectionUrlResolver.Invoke(this, publisherId);
                _log.LogInformation($"{clientId}: Connecting to {connectionUri}...");
                var ws = ClientWebSocketFactory.Invoke(ServiceProvider);
                using var cts = new CancellationTokenSource(ConnectTimeout);
                using var lts = CancellationTokenSource.CreateLinkedTokenSource(cts.Token, cancellationToken);
                await ws.ConnectAsync(connectionUri, lts.Token).ConfigureAwait(false);

                _log.LogInformation($"{clientId}: Connected.");

                var wsChannel = new WebSocketChannel(ws);
                Channel <string> stringChannel = wsChannel;
                if (MessageLogLevel.HasValue)
                {
                    stringChannel = stringChannel.WithLogger(
                        clientId, _log,
                        MessageLogLevel.GetValueOrDefault(),
                        MessageMaxLength);
                }
                var serializers   = ChannelSerializerPairFactory.Invoke(ServiceProvider);
                var resultChannel = stringChannel.WithSerializers(serializers);
                wsChannel.WhenCompletedAsync(default).ContinueWith(async _ => {
        public async Task <Channel <Message> > CreateChannelAsync(
            Symbol publisherId, CancellationToken cancellationToken)
        {
            var clientId = ClientId.Value;

            try {
                var connectionUri = GetConnectionUrl(publisherId);
                _log.LogInformation($"{clientId}: Connecting to {connectionUri}...");
                var ws = ClientWebSocketFactory.Invoke(ServiceProvider);
                using var cts = new CancellationTokenSource(ConnectTimeout);
                using var lts = CancellationTokenSource.CreateLinkedTokenSource(cts.Token, cancellationToken);
                await ws.ConnectAsync(connectionUri, lts.Token).ConfigureAwait(false);

                _log.LogInformation($"{clientId}: Connected.");

                await using var wsChannel = new WebSocketChannel(ws);
                Channel <string> stringChannel = wsChannel;
                if (MessageLogLevel.HasValue)
                {
                    stringChannel = stringChannel.WithLogger(
                        clientId, _log,
                        MessageLogLevel.GetValueOrDefault(),
                        MessageMaxLength);
                }
                var serializers   = ChannelSerializerPairFactory.Invoke(ServiceProvider);
                var resultChannel = stringChannel.WithSerializers(serializers);
                return(resultChannel);
            }
            catch (OperationCanceledException) {
                if (cancellationToken.IsCancellationRequested)
                {
                    throw;
                }
                throw Errors.WebSocketConnectTimeout();
            }
            catch (Exception e) {
                _log.LogError(e, $"{clientId}: Error.");
                throw;
            }
        }
Beispiel #4
0
 public LogMessageRecord(MessageLogLevel level, string message)
     : this()
 {
     Level = level;
     Message = message;
 }
 public static void LogMessage(this IMessageLogger logger, MessageLogLevel level, string message)
 {
     if (logger == null) return;
     LogMessageRecord rec = new LogMessageRecord(level, message);
     logger.LogMessage(rec);
 }
 public static void LogMessageDetail(this IMessageLogger logger, string category, MessageLogLevel level, string message, string detail)
 {
     if (logger == null) return;
     logger.LogMessage(new LogMessageRecord { Category = category, Message = message, Detail = detail, Level = level });
 }