'Process a new ServerDescription after an ismaster call completes.'

def on_change(self, server_description):

    with self._lock:
        if self._description.has_server(server_description.address):
            td_old = self._description
            if self._publish_server:
                old_server_description = td_old._server_descriptions[server_description.address]
                self._events.put((self._listeners.publish_server_description_changed, (old_server_description, server_description, server_description.address, self._topology_id)))
            self._description = updated_topology_description(self._description, server_description)
            self._update_servers()
            if self._publish_tp:
                self._events.put((self._listeners.publish_topology_description_changed, (td_old, self._description, self._topology_id)))
            self._condition.notify_all()
