Skip to content

Instantly share code, notes, and snippets.

def handle_call(:get_history, _from, worker) do
sortedLog = Enum.sort_by(worker.eventLog, fn event -> {event.time, event.origin} end)
{:reply, sortedLog, worker}
end
def handle_info({:replication_log, logEntry}, worker) do
newWorkerState =
if logEntry.origin == worker.name do
worker
else
%{ worker |
clock: max(worker.clock, logEntry.time) + 1,
eventLog: [logEntry | worker.eventLog] }
end
{:noreply, newWorkerState }
def handle_call({:add, event}, _from, worker) do
logEntry = %LogEntry{
origin: worker.name,
time: worker.clock,
event: event
}
newWorkerState = %{ worker |
clock: worker.clock + 1,
eventLog: [logEntry | worker.eventLog]
}
private void pollSweeperTable(Session session) {
List<Message> unsentMessages = messageRepository.fetchUnsentMessages();
for (Message message : unsentMessages)
sendMessage(session, message);
messageRepository.markSent(unsentMessages); // One DB transaction
}
@Modifying
@Query(
value = "update SweeperTable set sent = 1 where messageId in (:messageIds)",
nativeQuery = true)
void markSent(@Param("messageIds") List<Long> messageIds);
try {
pollSweeperTable(Session session);
// ...
} catch (Exception e) {
// Log the exception
}
private void pollSweeperTable(Session session) {
List<Message> unsentMessages = messageRepository.fetchUnsentMessages();
for (Message message : unsentMessages)
sendMessage(session, message);
messageRepository.markSent(unsentMessages);
}
testCombination = do -- a new computation in our DSL in which we:
p1 <- suggestedPostsFor 1 -- * compute the suggested posts for user 1
p1' <- suggestedPostsFor 1 -- * compute the suggested posts for user 1 (again)
p2 <- suggestedPostsFor 2 -- * compute the suggested posts for user 2
return (p1, p1', p2) -- * return a tuple with the result of these computations
template<typename Iterator>
struct IteratorTraits {};
template<>
struct IteratorTraits<LinkedListIterator>
{
using iterator_category = std::bidirectional_iterator_tag;
};
template<>
AdditionalTag<RandomAccessIterator<Iterator>>
RandomAccessIterator<AdditionalTag<Iterator>>