code: async def handle_client_get_queue(self, client_addr, _: ClientGetQueue):
          
          #jobs_running: a list of tuples in the form
          #(job_id, is_current_client_job, agent_name, info, launcher, started_at, max_end)
          jobs_running = list()
  
          for backend_job_id, content in self._job_running.items():
              jobs_running.append((content[1].job_id, backend_job_id[0] == client_addr, self._registered_agents[content[0]],
                                   content[1].course_id+"/"+content[1].task_id,
                                   content[1].launcher, int(content[2]), int(content[2])+content[1].time_limit))
  
          #jobs_waiting: a list of tuples in the form
          #(job_id, is_current_client_job, info, launcher, max_time)
          jobs_waiting = list()
  
          for job_client_addr, msg in self._waiting_jobs.items():
              if isinstance(msg, ClientNewJob):
                  jobs_waiting.append((msg.job_id, job_client_addr[0] == client_addr, msg.course_id+"/"+msg.task_id, msg.launcher,
                                       msg.time_limit))
  
          await ZMQUtils.send_with_addr(self._client_socket, client_addr, BackendGetQueue(jobs_running, jobs_waiting))
docs: Handles a ClientGetQueue message. Send back info about the job queue