Эликсир - прием и отправка сообщений одновременно с тайм-аутом - PullRequest
0 голосов
/ 31 января 2019

Я новичок в Elixir и пытаюсь создать пиров, которые отправляют определенное количество сообщений всем другим пирам.Кроме того, есть определенное время, после которого узел должен прекратить вещание и прием сообщений.У меня вопрос, как сделать так, чтобы он отправлял и получал сообщения одновременно?И вторая проблема - как включить тайм-аут для этого.Это мой текущий код:

messages_sent = Map.new()
messages_received = Map.new()

receive do
  #Distribute messages
  for dest <- peers, do:
    for i <- 0..max_broadcasts, do: #Max broadcast specifies how many messages send to each peer
        send dest, { :peer_broadcast, self()}
        #Adds peer to map or update if it is already present
        Map.update(messages_sent, dest, 0, &(&1 + 1))
    end
  end

 #Receiving messages
  { :peer_broadcast, peer} -> 
       Map.update(messages_received, peer, 0, &(&1 + 1)) 

end #receive
...