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 }
/// <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 }