code: def _refresh(self):
          
          if len(self.__data) or self.__killed:
              return len(self.__data)
  
          if self.__id:  # Get More
              dbname, collname = self.__ns.split('.', 1)
              read_pref = self.__collection._read_preference_for(self.session)
              self.__send_message(
                  self._getmore_class(dbname,
                                      collname,
                                      self.__batch_size,
                                      self.__id,
                                      self.__collection.codec_options,
                                      read_pref,
                                      self.__session,
                                      self.__collection.database.client,
                                      self.__max_await_time_ms,
                                      False))
          else:  # Cursor id is zero nothing else to return
              self.__killed = True
              self.__end_session(True)
  
          return len(self.__data)
docs: Refreshes the cursor with more data from the server.
  
          Returns the length of self.__data after refresh. Will exit early if
          self.__data is already non-empty. Raises OperationFailure when the
          cursor cannot be refreshed due to an error on the query.