Skip to content

Instantly share code, notes, and snippets.

@lomin
Created August 31, 2011 06:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lomin/1182944 to your computer and use it in GitHub Desktop.
Save lomin/1182944 to your computer and use it in GitHub Desktop.
example for ccc-kata in python
import sys
import socket
SERVER = 1
CLIENT = 2
FUNCTION_IDX = 0
ID_IDX = 1
FIRST_PARAMETER_IDX = 2
PACKET_SIZE = 4096
LOCALHOST = 'localhost'
SHUTDOWN = '__SHUTDOWN__'
SEPARATOR = ':'
FUNCTIONS = {
'ADD': lambda a, b: a + b,
'SUBTRACT': lambda a, b: a - b,
'MULTIPLY': lambda a, b: a * b,
}
def get_port(target):
return int(sys.argv[target])
def create_address(target):
return (LOCALHOST, get_port(target))
def create_udp_socket():
return socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
def get_paramter_list(args):
return [int(x) for x in args[FIRST_PARAMETER_IDX:]]
def create_message(id, result):
return ':'.join([id, str(result)])
if __name__ == '__main__':
server_socket = create_udp_socket()
server_addr = create_address(SERVER)
own_socket = create_udp_socket()
own_socket.bind(create_address(CLIENT))
shutdown = False
while not shutdown:
message = own_socket.recv(PACKET_SIZE)
if message == SHUTDOWN:
shutdown = True
else:
args = message.split(SEPARATOR)
function = FUNCTIONS[args[FUNCTION_IDX]]
result = reduce(function, get_paramter_list(args))
server_socket.sendto(create_message(args[ID_IDX], result),\
server_addr)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment