Skip to content

Instantly share code, notes, and snippets.

@jsam
Created January 15, 2014 18:16
Show Gist options
  • Save jsam/8441392 to your computer and use it in GitHub Desktop.
Save jsam/8441392 to your computer and use it in GitHub Desktop.
cjeo
import argparse, time, os, uuid
from pwd import getpwnam
from multiprocessing import Process, Queue
def sender(q, message):
_id = uuid.uuid4()
print("[S] sending {}".format(message))
for i, part in enumerate(message):
q.put({ 'data': part, 'sequence_number': i, 'sender_id': str(_id) })
q.put({ 'data': '\n', 'sequence_number': i + 1, 'sender_id': str(_id) })
print("[S] Sender ends!")
def receiver(q):
recv_buffer = dict()
exit_counter = 0
print("Receiver event loop started!")
while True: # event loop
if not q.empty():
packet = q.get()
if packet['data'] != '\n':
try:
recv_buffer[packet['sender_id']] += packet['data']
except KeyError:
recv_buffer[packet['sender_id']] = packet['data']
print("[R] Received: {} from {}".format(packet['data'], packet['sender_id']))
else:
print("[R] Message completed: {}".format( recv_buffer[packet['sender_id']] ))
print ("Dosla je poruka " +recv_buffer[packet['sender_id']])
else:
print("[R] Receiver idle ({})".format(exit_counter))
time.sleep(1)
exit_counter += 1
if exit_counter == 5:
break
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="")
parser.add_argument('-p', '--poruka', help='messages to send')
args = parser.parse_args()
messages = args.messages.split(' ')
try:
msg_key = os.environ['MSG_KEY']
print("Enviromental variable MSG_KEY found: ".format(msg_key))
except KeyError:
print("Enviromental variable MSG_KEY not found.")
msg_key = os.environ['MSG_KEY'] = str(getpwnam('dev').pw_uid)
print("Enviromental variable MSG_KEY generated: {}".format(msg_key))
q = Queue(maxsize=1500)
r = Process(target=receiver, args=(q,)).start()
for message in messages:
print("Start sending: {}".format(message))
p = Process(target=sender, args=(q,message))
p.start()
p.join()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment