This commit is contained in:
norayr 2017-04-14 16:21:58 +04:00
parent b1d7006dfc
commit cee0d425ab
3 changed files with 109 additions and 17 deletions

69
IRC.Mod
View file

@ -1,10 +1,17 @@
MODULE IRC;
IMPORT Internet, Out, Strings, types;
IMPORT Internet, Out, Strings := ooc2Strings, types;
CONST msgLen = 512; (* message length not more than 512 characters *)
CONST
msgLen* = 512; (* message length not more than 512 characters *)
ping* = "PING";
pong* = "PONG";
zzo* = "001";
mode* = "MODE";
join* = "JOIN";
VAR
connection : Internet.Socket;
eol* : ARRAY 3 OF CHAR;
PROCEDURE Auth*(user, nick, owner: ARRAY OF CHAR): BOOLEAN;
VAR
@ -14,26 +21,57 @@ BEGIN
(* "USER test 0 * :test\r\n" *)
(* "NICK test\r\n\000\060 :test\r\n"*)
str1[0] := 0AX; str1[1] := 0DX; str1[2] := 0X;
COPY("USER ", str0);
Strings.Append(user, str0);
Strings.Append(" 0 0 :", str0);
Strings.Append(" 0 * :", str0);
Strings.Append(owner, str0);
(* by the spec the command is terminated by \r\n *)
Strings.Append(str1, str0);
Strings.Append(eol, str0);
Strings.Append ("NICK ", str0);
Strings.Append (nick, str0);
Strings.Append(eol, str0);
Strings.Append(0X, str0);
Out.String("sending:"); Out.Ln;
Out.String(str0); Out.Ln;
b := Internet.Write(connection, str0, Strings.Length(str0));
IF b THEN Out.String("wrote!"); Out.Ln ELSE Out.String("write failed"); Out.Ln END;
COPY ("NICK ", str0);
Strings.Append (nick, str0);
Strings.Append(str1, str0);
b := Internet.Write(connection, str0);
IF b THEN Out.String("wrote!"); Out.Ln ELSE Out.String("write failed"); Out.Ln END;
RETURN b
END Auth;
PROCEDURE Receive*(VAR str: ARRAY OF CHAR): BOOLEAN;
VAR
b: BOOLEAN;
BEGIN
b := Internet.Read(connection, str);
IF b THEN
Out.String("received:"); Out.Ln;
Out.String(str); Out.Ln;
ELSE
Out.String("receive failed"); Out.Ln;
END;
RETURN b
END Receive;
PROCEDURE Send*(str: ARRAY OF CHAR): BOOLEAN;
VAR
b : BOOLEAN;
BEGIN
b := Internet.Write(connection, str);
IF b THEN
Out.String("sent:"); Out.Ln;
Out.String(str); Out.Ln;
ELSE
Out.String("sending failed"); Out.Ln;
END;
RETURN b
END Send;
PROCEDURE Connect*(host, port: ARRAY OF CHAR): BOOLEAN;
VAR
res: BOOLEAN;
@ -42,4 +80,15 @@ BEGIN
RETURN res
END Connect;
PROCEDURE Loop*;
BEGIN
END Loop;
BEGIN
eol[0] := 0AX; eol[1] := 0DX; eol[2] := 0X;
END IRC.