Created
January 15, 2014 18:16
-
-
Save jsam/8441392 to your computer and use it in GitHub Desktop.
cjeo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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