def server_listen(s, state): c, a = s.accept() print "Connected: " + str(a) cmd_sock = phisock.phi_socket(c) cmd = cmd_sock.recv_all() if cmd == "push_head": print "Waiting for file..." name = server_getpacket(s) project = server_getpacket(s) data = server_getpacket(s) state.push_head(project, name, data) elif cmd == "get_head": project = server_getpacket(s) if not project in state.projects: print 'WARN: request for', project, 'not found.' return #continue print "Sending head for", project, '...' server_sendpacket(state.state[project]['head_name'], s) d = open('.phisync/' + state.state[project]['head'], 'rb').read() server_sendpacket(d, s)
def client_sendpacket(data): s = phisock.phi_socket() s.connect() s.send_all(data)
def client_getpacket(): s = phisock.phi_socket() s.connect() return s.recv_all()
def server_getsocket(sock): c, a = sock.accept() return phisock.phi_socket(c)