private int FailedToSend(LightningTransaction tx, OutgoingMessage message) { var db = OpenDatabase(tx, OutgoingQueue); var value = tx.Get(db, message.Id.MessageIdentifier.ToByteArray()); if (value.resultCode == MDBResultCode.NotFound) { return(int.MaxValue); } var msg = value.value.CopyToNewArray().ToOutgoingMessage(); int attempts = message.SentAttempts; if (attempts >= message.MaxAttempts) { RemoveMessageFromStorage(tx, OutgoingQueue, msg); } else if (msg.DeliverBy.HasValue) { var expire = msg.DeliverBy.Value; if (expire != DateTime.MinValue && DateTime.Now >= expire) { RemoveMessageFromStorage(tx, OutgoingQueue, msg); } } else { tx.Put(db, message.Id.MessageIdentifier.ToByteArray(), message.Serialize()); } return(attempts); }
private void StoreOutgoing(LightningTransaction tx, OutgoingMessage message) { var db = OpenDatabase(tx, OutgoingQueue); tx.Put(db, message.Id.MessageIdentifier.ToByteArray(), message.Serialize()); }