You've already forked linux-packaging-mono
							
							
		
			
	
	
		
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|   | //------------------------------------------------------------ | ||
|  | // Copyright (c) Microsoft Corporation.  All rights reserved. | ||
|  | //------------------------------------------------------------ | ||
|  | 
 | ||
|  | namespace System.ServiceModel.Channels | ||
|  | { | ||
|  |     using System.Threading; | ||
|  |     using System.Globalization; | ||
|  | 
 | ||
|  |     class UriGenerator | ||
|  |     { | ||
|  |         long id; | ||
|  |         string prefix; | ||
|  | 
 | ||
|  |         public UriGenerator() | ||
|  |             : this("uuid") | ||
|  |         { | ||
|  |         } | ||
|  | 
 | ||
|  |         public UriGenerator(string scheme) | ||
|  |             : this(scheme, ";") | ||
|  |         { | ||
|  |         } | ||
|  | 
 | ||
|  |         public UriGenerator(string scheme, string delimiter) | ||
|  |         { | ||
|  |             if (scheme == null) | ||
|  |                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("scheme")); | ||
|  | 
 | ||
|  |             if (scheme.Length == 0) | ||
|  |                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.UriGeneratorSchemeMustNotBeEmpty), "scheme")); | ||
|  | 
 | ||
|  |             prefix = string.Concat(scheme, ":", Guid.NewGuid().ToString(), delimiter, "id="); | ||
|  |         } | ||
|  | 
 | ||
|  |         public string Next() | ||
|  |         { | ||
|  |             long nextId = Interlocked.Increment(ref id); | ||
|  |             return prefix + nextId.ToString(CultureInfo.InvariantCulture); | ||
|  |         } | ||
|  |     } | ||
|  | } |