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});
8 task AcceptConnection(ServerSocket ss{SocketPending}) {
10 ChatSocket cs=new ChatSocket() {Initialized}{t};
12 cs.sock.write("Please choose a chatroom".getBytes());
15 task ReadRequest(ChatSocket cs{Initialized}{link l}, Socket s{IOPending}{link l}) {
16 if (cs.processRead(s)) {
17 taskexit(cs{!Initialized, ProcessRoom});
21 task ProcessRoom(ChatSocket cs{ProcessRoom}, RoomObject ro{Initialized}) {
23 taskexit(cs{!ProcessRoom, InRoom});
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){};
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());