public async Task ListTracesAsync()
        {
            // Snippet: ListTracesAsync(string,string,int?,CallSettings)
            // Create client
            TraceServiceClient traceServiceClient = TraceServiceClient.Create();
            // Initialize request argument(s)
            string projectId = "";
            // Make the request
            IPagedAsyncEnumerable <ListTracesResponse, Trace> response =
                traceServiceClient.ListTracesAsync(projectId);

            // Iterate over all response items, lazily performing RPCs as required
            await response.ForEachAsync((Trace item) =>
            {
                // Do something with each item
                Console.WriteLine(item);
            });

            // Or iterate over fixed-sized pages, lazily performing RPCs as required
            int pageSize = 10;
            IAsyncEnumerable <FixedSizePage <Trace> > fixedSizePages = response.AsPages().WithFixedSize(pageSize);
            await fixedSizePages.ForEachAsync((FixedSizePage <Trace> page) =>
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (Trace item in page)
                {
                    Console.WriteLine(item);
                }
            });

            // End snippet
        }
예제 #2
0
        /// <summary>
        /// Gets a trace that contains a span with the given name.
        /// </summary>
        /// <param name="expectTrace">True if the trace is expected to exist.  This is used
        ///     to minimize RPC calls.</param>
        private async Task <TraceProto> GetTrace(string spanName, bool expectTrace = true)
        {
            TimeSpan totalSleepTime = TimeSpan.Zero;

            while (totalSleepTime <= _timeout)
            {
                TimeSpan sleepTime = expectTrace ? _sleepInterval : _timeout;
                totalSleepTime += sleepTime;
                Thread.Sleep(sleepTime);

                ListTracesRequest request = new ListTracesRequest
                {
                    ProjectId = _projectId,
                    StartTime = _startTime,
                    View      = ListTracesRequest.Types.ViewType.Complete
                };
                var        traces = _client.ListTracesAsync(request);
                TraceProto trace  = await traces.FirstOrDefault(t => t.Spans.Any(s => s.Name.Equals(spanName)));

                if (trace != null)
                {
                    return(trace);
                }
            }
            return(null);
        }
        /// <summary>Snippet for ListTracesAsync</summary>
        public async Task ListTracesRequestObjectAsync()
        {
            // Snippet: ListTracesAsync(ListTracesRequest, CallSettings)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            ListTracesRequest request = new ListTracesRequest
            {
                ProjectId = "",
                View      = ListTracesRequest.Types.ViewType.Unspecified,
                StartTime = new Timestamp(),
                EndTime   = new Timestamp(),
                Filter    = "",
                OrderBy   = "",
            };
            // Make the request
            PagedAsyncEnumerable <ListTracesResponse, Trace> response = traceServiceClient.ListTracesAsync(request);

            // Iterate over all response items, lazily performing RPCs as required
            await response.ForEachAsync((Trace item) =>
            {
                // Do something with each item
                Console.WriteLine(item);
            });

            // Or iterate over pages (of server-defined size), performing one RPC per page
            await response.AsRawResponses().ForEachAsync((ListTracesResponse page) =>
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (Trace item in page)
                {
                    // Do something with each item
                    Console.WriteLine(item);
                }
            });

            // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
            int          pageSize   = 10;
            Page <Trace> singlePage = await response.ReadPageAsync(pageSize);

            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (Trace item in singlePage)
            {
                // Do something with each item
                Console.WriteLine(item);
            }
            // Store the pageToken, for when the next page is required.
            string nextPageToken = singlePage.NextPageToken;
            // End snippet
        }