private Func<MessageBookmark[]> OnSuccess(IEnumerable<PersistentMessage> messages)
{
return () =>
{
try
{
var newBookmarks = new List<MessageBookmark>();
queueStorage.Send(actions =>
{
foreach (var message in messages)
{
var bookmark = actions.MarkOutgoingMessageAsSuccessfullySent(message.Bookmark);
newBookmarks.Add(bookmark);
}
actions.Commit();
});
return newBookmarks.ToArray();
}
finally
{
Interlocked.Decrement(ref currentlySendingCount);
}
};
}