| 
					
				 | 
			
			
				@@ -47,17 +47,18 @@ class SecureCredentials; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class Credentials : public GrpcLibrary { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  public: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ~Credentials() GRPC_OVERRIDE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  virtual bool ApplyToCall(grpc_call* call) = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  protected: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  friend std::unique_ptr<Credentials> CompositeCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const std::unique_ptr<Credentials>& creds1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const std::unique_ptr<Credentials>& creds2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  friend std::shared_ptr<Credentials> CompositeCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const std::shared_ptr<Credentials>& creds1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const std::shared_ptr<Credentials>& creds2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   virtual SecureCredentials* AsSecureCredentials() = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  private: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   friend std::shared_ptr<ChannelInterface> CreateChannel( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const grpc::string& target, const std::unique_ptr<Credentials>& creds, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const grpc::string& target, const std::shared_ptr<Credentials>& creds, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const ChannelArguments& args); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   virtual std::shared_ptr<ChannelInterface> CreateChannel( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -80,20 +81,20 @@ struct SslCredentialsOptions { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Factories for building different types of Credentials 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// The functions may return empty unique_ptr when credentials cannot be created. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// The functions may return empty shared_ptr when credentials cannot be created. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // If a Credentials pointer is returned, it can still be invalid when used to 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // create a channel. A lame channel will be created then and all rpcs will 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // fail on it. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Builds credentials with reasonable defaults. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> GoogleDefaultCredentials(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> GoogleDefaultCredentials(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Builds SSL Credentials given SSL specific options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> SslCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> SslCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const SslCredentialsOptions& options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Builds credentials for use when running in GCE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> ComputeEngineCredentials(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> ComputeEngineCredentials(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Builds service account credentials. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // json_key is the JSON key string containing the client's private key. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -101,7 +102,7 @@ std::unique_ptr<Credentials> ComputeEngineCredentials(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // token_lifetime_seconds is the lifetime in seconds of each token acquired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // through this service account credentials. It should be positive and should 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // not exceed grpc_max_auth_token_lifetime or will be cropped to this value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> ServiceAccountCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> ServiceAccountCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const grpc::string& json_key, const grpc::string& scope, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     long token_lifetime_seconds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -110,27 +111,27 @@ std::unique_ptr<Credentials> ServiceAccountCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // token_lifetime_seconds is the lifetime in seconds of each Json Web Token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // (JWT) created with this credentials. It should not exceed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // grpc_max_auth_token_lifetime or will be cropped to this value. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> JWTCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const grpc::string& json_key, long token_lifetime_seconds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> JWTCredentials(const grpc::string& json_key, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            long token_lifetime_seconds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Builds refresh token credentials. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // json_refresh_token is the JSON string containing the refresh token along 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // with a client_id and client_secret. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> RefreshTokenCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> RefreshTokenCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const grpc::string& json_refresh_token); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Builds IAM credentials. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> IAMCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> IAMCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const grpc::string& authorization_token, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const grpc::string& authority_selector); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Combines two credentials objects into a composite credentials 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> CompositeCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const std::unique_ptr<Credentials>& creds1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const std::unique_ptr<Credentials>& creds2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> CompositeCredentials( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const std::shared_ptr<Credentials>& creds1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const std::shared_ptr<Credentials>& creds2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Credentials for an unencrypted, unauthenticated channel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-std::unique_ptr<Credentials> InsecureCredentials(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+std::shared_ptr<Credentials> InsecureCredentials(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }  // namespace grpc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |