'This deletes the notification when all messages have been processed.'

def DeleteNotifications(self, session_ids, start=None, end=None):

    if (not session_ids):
        return
    for session_id in session_ids:
        if (not isinstance(session_id, rdfvalue.SessionID)):
            raise RuntimeError('Can    only    delete    notifications    for    rdfvalue.SessionIDs.')
    if (start is None):
        start = 0
    else:
        start = int(start)
    if (end is None):
        end = (self.frozen_timestamp or rdfvalue.RDFDatetime.Now())
    for (queue, ids) in utils.GroupBy(session_ids, (lambda session_id: session_id.Queue())).iteritems():
        queue_shards = self.GetAllNotificationShards(queue)
        self.data_store.DeleteNotifications(queue_shards, ids, start, end, token=self.token)
