Пример #1
0
        public string ToHubFireAndForgetWriteMessage()
        {
            string parameterType;
            string requestObject;

            if (Parameters.Length == 0)
            {
                parameterType = "Nil";
                requestObject = "Nil.Default";
            }
            else if (Parameters.Length == 1)
            {
                parameterType = Parameters[0].TypeName;
                requestObject = Parameters[0].ParameterName;
            }
            else
            {
                var typeArgs       = string.Join(", ", Parameters.Select(x => x.TypeName));
                var parameterNames = string.Join(", ", Parameters.Select(x => x.ParameterName));

                parameterType = $"DynamicArgumentTuple<{typeArgs}>";
                requestObject = $"new DynamicArgumentTuple<{typeArgs}>({parameterNames})";
            }

            if (OriginalResponseTypeSymbol.ApproximatelyEqual(ReferenceSymbols.Global.Task))
            {
                return($"WriteMessageAsync<{parameterType}>({HubId}, {requestObject})");
            }
            else
            {
                return($"WriteMessageAsyncFireAndForget<{parameterType}, {UnwrappedOriginalResposneTypeSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)}> ({HubId}, {requestObject})");
            }
        }
Пример #2
0
        public (string line1, string line2) ToHubOnResponseEvent()
        {
            string type;

            if (OriginalResponseTypeSymbol.ApproximatelyEqual(ReferenceSymbols.Global.Task))
            {
                type = "Nil";
            }
            else
            {
                type = UnwrappedOriginalResposneTypeSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat);
            }

            var line1 = $"var result = MessagePackSerializer.Deserialize<{type}>(data, serializerOptions);";
            var line2 = $"((TaskCompletionSource<{type}>)taskCompletionSource).TrySetResult(result);";

            return(line1, line2);
        }