public void PinBulkStop( Context context, TimeSpan duration, IReadOnlyList <ContentHash> contentHashes, IEnumerable <Indexed <PinResult> > results, Exception error, PinBulkOptions pinBulkOptions) { if (context.IsEnabled) { const string Success = "Success", Error = "Error", Canceled = "Canceled"; var pinStatus = error == null ? Success : (error.IsPinContextObjectDisposedException() ? Canceled : Error); int count = contentHashes.Count; if (pinStatus == Success) { // Trace successful case differently when the pins were restored at startup by reading hibernated sessions. if (pinBulkOptions.RePinFromHibernation) { TracerOperationFinished(context, BoolResult.Success, $"{Name}.{PinBulkCallName}() stop by {duration.TotalMilliseconds}ms for {count} hash(es). FromHibernation=True."); } else { // Regular successful case TraceBulk( $"{Name}.{PinBulkCallName}() stop by {duration.TotalMilliseconds}ms for {count} hash(es). Result={pinStatus}. ", results.Select((result, index) => (result, hash: contentHashes[index])), contentHashes.Count, itemPrinter: tpl => $"{tpl.hash.ToShortString()}={tpl.result.Item}", printAction: message => Debug(context, message)); } } else if (pinStatus == Error) { // An actual failure case. this.Error(context, $"{Name}.{PinBulkCallName}() stop by {duration.TotalMilliseconds}ms for {count} hash(es). Error={error}"); TraceBulk( $"{Name}.{PinBulkCallName}() failed for hashes", results.Select((result, index) => (result, hash: contentHashes[index])), contentHashes.Count, itemPrinter: tpl => $"{tpl.hash.ToShortString()}={tpl.result.Item}", printAction: message => Debug(context, message)); } // Don't have to print anything special for Canceled case. General message should be enough. } _pinBulkCallCounter.Completed(duration.Ticks); }
public Task <IEnumerable <Indexed <PinResult> > > PinAsync(Context context, IReadOnlyList <ContentHash> contentHashes, PinContext pinContext, PinBulkOptions options) { throw new NotImplementedException(); }