Position Independent Source Code

Artifact Content
Login

Artifact 40ff8ca3998d3add735a426d14e54caede5e1876:


     1  
     2  : handle-ping ( conn message -- was-ping ) 
     3  	:msg :conn
     4  	$msg "PING" str-contains :was-ping
     5  	$was-ping [
     6  		$msg " " str-split 1 vec-at :resp-key
     7  		${ "PONG :" $resp-key } :resp 
     8  		$resp $conn .send-message
     9  	] when
    10  	$was-ping
    11  ;
    12  
    13  : irc-pong-server! ( addr -- )
    14  	:addr
    15  	"Before trying to connect" println
    16  	$addr irc-dial :conn
    17  
    18  	/* Get the server MOTD and the like */
    19  	"PASS 0" $conn .send-message
    20  	"NICK piscbot" $conn .send-message
    21  	$conn dup .recieve-message handle-ping
    22  	"USER piscbot piscbot i :piscbot" $conn .send-message
    23  	$conn dup .recieve-message handle-ping
    24  
    25  	t :reading-motd
    26  	[ $reading-motd ] [
    27  		$conn .recieve-message :msg
    28  		$msg println
    29  		/* Waiting for a MODE command so we know that MOTD has been finished */
    30  		$msg "MODE" str-contains not :reading-motd
    31  	] while
    32  
    33  	"JOIN #botwars" $conn .send-message
    34  
    35  	[ t ] [
    36  		"Awaiting a message" println
    37  			$conn .recieve-message :msg
    38  			$msg println
    39  		[
    40  
    41  			$conn $msg handle-ping not [
    42  				$msg println
    43  				$msg "!ping" str-contains [
    44  					"PRIVMSG #botwars :pong!" $conn .send-message
    45  				] when
    46  			] when
    47  		] time println
    48  	] while
    49  	$conn .close
    50  ;
    51  
    52  : freenode-pong-server ( -- ) "irc.freenode.com:6667" irc-pong-server! ;
    53  : afternet-pong-server ( -- ) "irc.afternet.org:6667" irc-pong-server! ;