code: def LockedRead(self):
          
          file_contents = None
          with self._thread_lock:
              if not self._EnsureFileExists():
                  return None
              with self._process_lock_getter() as acquired_plock:
                  if not acquired_plock:
                      return None
                  with open(self._filename, 'rb') as f:
                      file_contents = f.read().decode(encoding=self._encoding)
          return file_contents
docs: Acquire an interprocess lock and dump cache contents.
  
          This method safely acquires the locks then reads a string
          from the cache file. If the file does not exist and cannot
          be created, it will return None. If the locks cannot be
          acquired, this will also return None.
  
          Returns:
            cache data - string if present, None on failure.