void HandleRpcs()

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