start of new file
[IRC.git] / Robust / src / Benchmarks / ChatTag / ChatServer.java
1 task Startup(StartupObject s{initialstate}) {
2     System.printString("Chat Server Benchmark");
3     RoomObject ro=new RoomObject() {Initialized};
4     ServerSocket ss=new ServerSocket(8000);
5     taskexit(s{!initialstate});
6 }
7
8 task AcceptConnection(ServerSocket ss{SocketPending}) {
9     tag t=new tag(link);
10     ChatSocket cs=new ChatSocket() {Initialized}{t};
11     cs.sock=ss.accept(t);
12     cs.sock.write("Please choose a chatroom".getBytes());
13 }
14
15 task ReadRequest(ChatSocket cs{Initialized}{link l}, Socket s{IOPending}{link l}) {
16     if (cs.processRead(s)) {
17         taskexit(cs{!Initialized, ProcessRoom});
18     }
19 }
20
21 task ProcessRoom(ChatSocket cs{ProcessRoom}, RoomObject ro{Initialized}) {
22     cs.processRoom(ro);
23     taskexit(cs{!ProcessRoom, InRoom});
24 }
25
26 task Message(ChatSocket cs{InRoom}{link l}, Socket s{IOPending}{link l}) {
27     byte buffer[]=new byte[1024];
28     int length=s.read(buffer);
29     Message m=new Message(buffer, length, cs){};
30 }
31
32 task SendMessage(Message m{!Sent}) {
33     String st=(new String(m.buffer)).subString(0, m.length);
34     m.cs.room.sendToRoom(m.cs,st.getBytes());
35     taskexit(m {Sent});
36 }