(2a) // giao hàng Điều kiện: đảm bảo thông điệp gửi nhân quả trước khi M được giao.
Cho tất cả om, tm ∈ OM làm
nếu j ∈ om.tm .Dests đợi cho đến khi tm ≤ SRJ [m]; (2b) Cung cấp M; SRJ [k] ← - tk;
(2c) OM ← - {(k, tk, Dests)} OM;
cho tất cả om, tm ∈ OM làm om, tm .Dests ← - om, tm .Dests {j};
// xóa phụ thuộc doanh nghiệp dôi dư của tin đại diện bởi om, tm gửi đến j
(2d) // Merge OM và LOGj bằng cách loại bỏ tất cả các mục không cần thiết.
// Mặc nhiên theo dõi "đã giao" & "được đảm bảo sẽ được giao trong CO"
/ / tin nhắn.
cho tất cả om, t ∈ OM và ls, tr ∈ LOGj như vậy mà s = m làm gì nếu t <tr ls, t • ∈ LOGj sau đó đánh dấu om, t;
// ls, t đã bị xóa hoặc không bao giờ được đưa vào, như ls, t.Dests = ∅ trong quá khứ nhân quả
nếu tr// Om, tr • ∈ OM vì ls, tr đã trở thành ∅ tại quá trình khác trong quá khứ nhân quả
Xóa tất cả các yếu tố đánh dấu OM và LOGj;
// xóa các mục về thông tin dự phòng
cho tất cả các ls, tr ∈ LOGj và om, t ∈ OM, như vậy mà s = m tr = t làm
ls, tr .Dests ← - ls, tr .Dests om, t.Dests;
// xóa những điểm đến mà Delivery
// Điều kiện là hài lòng hoặc đảm bảo để được thoả mãn khi mỗi om, t
Xóa om, t từ OM; // Thông tin đã được đưa vào ls, tr LOGj ← - LOGj OM; // Trộn thông tin không dự phòng của OM vào LOGj
(2e) PURGE_NULL_ENTRIES (LOGj). // Tẩy mục cũ hơn l mà l.Dests = ∅
PURGE_NULL_ENTRIES (Logj): // Tẩy mục cũ hơn l mà l.Dests = ∅ được
// ngầm suy ra cho tất cả các ls, t ∈ Logj làm nếu ls, t.Dests = ∅ (∃lr ∈ Logj | t <tr) sau đó Logj ← - Logj {ls, t}.
đang được dịch, vui lòng đợi..
