class DynamicRPCListener {
	public:

	DynamicRPCListener(MasterService::AsyncService* service, ServerCompletionQueue* cq, Master* master)
		: masterService(service), theCompletionQueue(cq), responderObject(&serverContext), status_(CREATE), master(master)
	{
		Proceed();
	}

	void Proceed() {
		if (status_ == CREATE) {
			status_ = PROCESS;
			masterService->RequesttaskComplete(&serverContext, &taskCompletion, &responderObject, theCompletionQueue, theCompletionQueue, this);
		
		} else if (status_ == PROCESS) {
			new DynamicRPCListener(masterService, theCompletionQueue, master);
			master -> handle_task_completion(taskCompletion);
			status_ = FINISH;
			acknowledgement.set_master_message("You are good.");
			responderObject.Finish(acknowledgement, Status::OK, this);
			
		} else {
			GPR_ASSERT(status_ == FINISH);
			delete this;
		}
	}

	private:
	Master* master;
	MasterService::AsyncService* masterService;
	CompletionQueue asyncCallsQueue;
	ServerCompletionQueue* theCompletionQueue;
	ServerContext serverContext;
	TaskCompletion taskCompletion;
	TaskCompletionAcknowledgement acknowledgement;
	ServerAsyncResponseWriter<TaskCompletionAcknowledgement> responderObject;
	
	enum CallStatus { CREATE, PROCESS, FINISH };
	CallStatus status_; 
}; 

Explain this code The response should be in all capital letters.
user