async def update_read_timestamp(self, read_timestamp=None):
if read_timestamp is None:<EOL><INDENT>read_timestamp = (self.events[-<NUM_LIT:1>].timestamp if self.events else<EOL>datetime.datetime.now(datetime.timezone.utc))<EOL><DEDENT>if read_timestamp > self.latest_read_timestamp:<EOL><INDENT>logger.info(<EOL>'<STR_LIT>'<EOL>.format(self.id_, self.latest_read_timestamp, read_timestamp)<EOL>)<EOL>state = self._conversation.self_conversation_state<EOL>state.self_read_state.latest_read_timestamp = (<EOL>parsers.to_timestamp(read_timestamp)<EOL>)<EOL>try:<EOL><INDENT>await self._client.update_watermark(<EOL>hangouts_pb2.UpdateWatermarkRequest(<EOL>request_header=self._client.get_request_header(),<EOL>conversation_id=hangouts_pb2.ConversationId(<EOL>id=self.id_<EOL>),<EOL>last_read_timestamp=parsers.to_timestamp(<EOL>read_timestamp<EOL>),<EOL>)<EOL>)<EOL><DEDENT>except exceptions.NetworkError as e:<EOL><INDENT>logger.warning('<STR_LIT>'.format(e))<EOL>raise<EOL><DEDENT><DEDENT>
Update the timestamp of the latest event which has been read.

        This method will avoid making an API request if it will have no effect.

        Args:
            read_timestamp (datetime.datetime): (optional) Timestamp to set.
                Defaults to the timestamp of the newest event.

        Raises:
            .NetworkError: If the timestamp cannot be updated.