-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
88 lines (69 loc) · 3.52 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import argparse
import time
import sys
import sip
sip.setapi('QString', 2)
from PyQt4 import QtGui
import zalgo.Constants as Constants
from zalgo.Network import Network
from zalgo.Packet import Packet, LookupPacket
from zalgo.Debug import debug
from zalgo.FileLoader import FileLoader
from zalgo.PacketHandlers import *
from zalgo.MainWindow import MainWindow
from zalgo.Peer import Peer
from zalgo.ReceiveController import ReceiveController
from zalgo.StreamAdapter import StreamAdapter
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Distributed audio player.')
parser.add_argument('--client', nargs='?', const='client', default='server',
help='Indicates that script should be launched in client mode (server mode is default).')
parser.add_argument('--host', nargs='?', const='host', default='localhost')
parser.add_argument('--port', nargs='?', const='port', default='13333')
args = parser.parse_args()
server_mode = True if args.client == 'server' else False
app = QtGui.QApplication(sys.argv)
if server_mode:
server = Network('localhost', 13333)
file_loader = FileLoader(['D:/music/'])
handshake_handler = HandshakeHandler(server)
server.subscribe(Constants.HANDSHAKE, handshake_handler)
server.subscribe(Constants.HANDSHAKE_ACCEPT, handshake_handler)
stream_handler = StreamHandler(server)
server.subscribe(Constants.REQUEST_STREAM, stream_handler)
server.subscribe(Constants.REQUEST_PART, stream_handler)
server.subscribe(Constants.READY_TO_STREAM, stream_handler)
server.subscribe(Constants.CONTENT, stream_handler)
server.subscribe(Constants.LOOKUP, LookupHandler(server))
server.subscribe(Constants.FOUND, FoundHandler(server))
server.create_socket()
else:
file_loader = FileLoader(['D:/music/'])
stream_adapter = StreamAdapter()
recv_contr = ReceiveController()
recv_contr.streamCreated.connect(stream_adapter.new_stream)
recv_contr.contentReceived.connect(stream_adapter.receive_data)
client = Network('localhost', 13334)
main_window = MainWindow(Peer(client), stream_adapter)
recv_contr.streamCreated.connect(main_window.streamCreated)
handshake_handler = HandshakeHandler(client)
client.subscribe(Constants.HANDSHAKE, handshake_handler)
client.subscribe(Constants.HANDSHAKE_ACCEPT, handshake_handler)
stream_handler = StreamHandler(client)
client.subscribe(Constants.REQUEST_STREAM, stream_handler)
client.subscribe(Constants.REQUEST_PART, stream_handler)
client.subscribe(Constants.READY_TO_STREAM, stream_handler)
client.subscribe(Constants.CONTENT, stream_handler)
recv_contr.nextPacketRequests.connect(stream_handler.send_packet_requests)
stream_handler.streamCreated.connect(recv_contr.recreate)
stream_handler.packetReceived.connect(recv_contr.receive_packet)
stream_handler.newPeerConnected.connect(recv_contr.add_peer)
found_handler = FoundHandler(client)
client.subscribe(Constants.FOUND, found_handler)
found_handler.musicFound.connect(main_window.musicFound)
client.subscribe(Constants.LOOKUP, LookupHandler(client))
client.create_socket()
client.handshake_with(args.host, int(args.port))
main_window.show()
sys.exit(app.exec_())
client.stop()