in api/src/gmsa_service.cpp [2063:2110]
void HandleRpcs( std::string krb_files_dir, CF_logger& cf_logger,
std::string aws_sm_secret_name )
{
void* got_tag; // uniquely identifies a request.
bool ok;
new CallDataCreateKerberosLease( &service_, cq_.get() );
new CallDataAddNonDomainJoinedKerberosLease( &service_, cq_.get() );
new CallDataRenewNonDomainJoinedKerberosLease( &service_, cq_.get() );
new CallDataDeleteKerberosLease( &service_, cq_.get() );
new CallDataHealthCheck( &service_, cq_.get() );
#if AMAZON_LINUX_DISTRO
new CallDataCreateKerberosArnLease( &service_, cq_.get() );
new CallDataRenewKerberosArnLease( &service_, cq_.get() );
#endif
while ( pthread_shutdown_signal != nullptr && !( *pthread_shutdown_signal ) )
{
// Spawn a new CallData instance to serve new clients.
// Block waiting to read the next event from the completion queue. The
// event is uniquely identified by its tag, which in this case is the
// memory address of a CallData instance.
// The return value of Next should always be checked. This return value
// tells us whether there is any kind of event or cq_ is shutting down.
GPR_ASSERT( cq_->Next( &got_tag, &ok ) );
if ( !ok )
{
return;
}
static_cast<CallDataCreateKerberosLease*>( got_tag )->Proceed( krb_files_dir, cf_logger,
aws_sm_secret_name );
static_cast<CallDataAddNonDomainJoinedKerberosLease*>( got_tag )->Proceed(
krb_files_dir, cf_logger, aws_sm_secret_name );
static_cast<CallDataRenewNonDomainJoinedKerberosLease*>( got_tag )->Proceed(
krb_files_dir, cf_logger, aws_sm_secret_name );
static_cast<CallDataDeleteKerberosLease*>( got_tag )->Proceed( krb_files_dir, cf_logger,
aws_sm_secret_name );
static_cast<CallDataHealthCheck*>( got_tag )->Proceed( cf_logger );
#if AMAZON_LINUX_DISTRO
static_cast<CallDataCreateKerberosArnLease*>( got_tag )->Proceed(
krb_files_dir, cf_logger, aws_sm_secret_name );
static_cast<CallDataRenewKerberosArnLease*>( got_tag )->Proceed(
krb_files_dir, cf_logger, aws_sm_secret_name );
#endif
}
}