-
Notifications
You must be signed in to change notification settings - Fork 0
/
chat.lua
49 lines (40 loc) · 1.48 KB
/
chat.lua
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
require "ev"
-- inicia servico
local ip = ev.init(arg[3])
local nickName = arg[2]
if ( arg[1] == "S" )then
print("## Programa de Chat - Trabalho 3 de INF2545 - Sistemas Distribuidos 2011.1 / PUC-RIO ##")
print("## Por Felippe Rodrigues e Rafael Brandao ##")
--se for servidor entao escute as mensagens
ev.loop()
end
-- anuncia a chegada de um novo usuario à sala
ev.send("all","print(\"*["..ip..":"..arg[3]+1 .."]"..nickName.." has joined the room \")")
while (1) do
--lê mensagem do usuario
local msg = io.read()
--ve se a mensagem é um comando
local i,j = string.find(msg,"#")
--se for um comando
if ( i==j and i == 1 ) then
local cmd = string.sub(msg,2,-1)
--se for o comando exit, então saia
local k,l = string.find(cmd,"exit")
if ( k == 1 and l==4 ) then
-- anuncia a saída
ev.removeAgent()
ev.send("all","print(\"*["..ip..":"..arg[3]+1 .."]"..nickName.." has left the room \")")
ev.send(ip..":"..arg[3]+1,"ev.removeAgent()")
ev.send(ip..":"..arg[3]+1,"os.exit(1)")
ev.removeAgent()
os.exit(1)
end
-- se for um comando de mensagem direcionada então recebe o destinatário e a mensagem FORMATO--> #ID "mensagem entre aspas"
local dest,x_msg = string.match(cmd,"(.+)\"(.+)\"")
--envia a msg exclusiva
ev.send(dest,"print(\"*["..ip..":"..arg[3]+1 .."]"..nickName.." says only to you : ".. x_msg.. "\")")
else
-- envia a mensagem em broadcast
ev.send("all","print(\"*["..ip..":"..arg[3]+1 .."]"..nickName.." says: ".. msg.. "\")")
end
end