Refactor
:my
=>
'code'
Codes
Refactorings
Popular
Best
Submit
Spam
Account
Logout
Login
JavaScript doesn't seem to be activated, expect things to be ugly and sloppy!
More Jobs
Recent
Cheap ruby block templating
Bindings on caller
Initial script execution very slow and skewing results
suppress ERB newlines
Keeping the database clean
Arrays, loops, strings...
Similar virtual attributes and their getters/setter
Check type is XML Serializable
Serena Collage slideshow
Shortest regular expression for matching a subdomain.
Popular
Caching Methods
How to find max, min of three numbers?
Similar virtual attributes and their getters/setter
Shortest regular expression for matching a subdomain.
Arrays, loops, strings...
Cheap ruby block templating
Check type is XML Serializable
Bindings on caller
Apache log file sorting
Tab-Switching in jQuery
Pastable version of
Socket Loop, Need Constant Function
<div style="overflow:auto;border:solid 1px #ccc;background:#000;color:#F8F8F8"> <div class="section"> <pre style="float:left;margin:0 10px;border-right:0;color:#666;">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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81</pre> <pre class="sunburst"><?php <span style="color:#99CF50;">function</span> <span style="color:#89BDFF;">ircinit</span>() { <span style="color:#99CF50;">global</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>, <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>CONFIG</span>, <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>channels</span>, <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>last_chat</span><span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> We need this to see if we need to JOIN (the channel) during</span> <span style="color:#AEAEAE;font-style:italic;"> the first iteration of the main loop <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>firstTime</span> <span style="color:#E28964;">=</span> <span style="color:#3387CC;">true</span><span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Connect to the irc server <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>socket<span style="color:#65B042;">'</span></span>] <span style="color:#E28964;">=</span> <span style="color:#DAD085;">fsockopen</span>(<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>CONFIG</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>server<span style="color:#65B042;">'</span></span>], <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>CONFIG</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>port<span style="color:#65B042;">'</span></span>])<span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Check that we have connected <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#E28964;">if</span> (<span style="color:#E28964;">!</span><span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>socket<span style="color:#65B042;">'</span></span>]) { <span style="color:#DAD085;">print</span> (<span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#DDF2A4;">\n</span>Could not connect to: <span style="color:#65B042;">"</span></span><span style="color:#E28964;">.</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>CONFIG</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>server<span style="color:#65B042;">'</span></span>] <span style="color:#E28964;">.</span><span style="color:#65B042;"><span style="color:#65B042;">"</span> on port <span style="color:#65B042;">"</span></span><span style="color:#E28964;">.</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>CONFIG</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>port<span style="color:#65B042;">'</span></span>])<span style="color:#E28964;">;</span> } <span style="color:#E28964;">else</span> { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Send the username and nick <span style="color:#AEAEAE;font-style:italic;">*/</span></span> cmd_send(<span style="color:#65B042;"><span style="color:#65B042;">"</span>USER <span style="color:#65B042;">"</span></span><span style="color:#E28964;">.</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>CONFIG</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>nick<span style="color:#65B042;">'</span></span>] <span style="color:#E28964;">.</span><span style="color:#65B042;"><span style="color:#65B042;">"</span> roleplaygateway.com roleplaygateway.com :<span style="color:#65B042;">"</span></span><span style="color:#E28964;">.</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>CONFIG</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>name<span style="color:#65B042;">'</span></span>])<span style="color:#E28964;">;</span> cmd_send(<span style="color:#65B042;"><span style="color:#65B042;">"</span>NICK <span style="color:#65B042;">"</span></span><span style="color:#E28964;">.</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>CONFIG</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>nick<span style="color:#65B042;">'</span></span>] <span style="color:#E28964;">.</span><span style="color:#65B042;"><span style="color:#65B042;">"</span> roleplaygateway.com<span style="color:#65B042;">"</span></span>)<span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Here is the loop. Read the incoming data (from the socket connection) <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#E28964;">while</span> (<span style="color:#E28964;">!</span><span style="color:#DAD085;">feof</span>(<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>socket<span style="color:#65B042;">'</span></span>])) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Think of $con['buffer']['all'] as a line of chat messages.</span> <span style="color:#AEAEAE;font-style:italic;"> We are getting a 'line' and getting rid of whitespace around it. <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>buffer<span style="color:#65B042;">'</span></span>][<span style="color:#65B042;"><span style="color:#65B042;">'</span>all<span style="color:#65B042;">'</span></span>] <span style="color:#E28964;">=</span> <span style="color:#DAD085;">trim</span>(<span style="color:#DAD085;">fgets</span>(<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>socket<span style="color:#65B042;">'</span></span>], <span style="color:#3387CC;">4096</span>))<span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Pring the line/buffer to the console</span> <span style="color:#AEAEAE;font-style:italic;"> I used <- to identify incoming data, -> for outgoing. This is so that</span> <span style="color:#AEAEAE;font-style:italic;"> you can identify messages that appear in the console. <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#DAD085;">print</span> <span style="color:#DAD085;">date</span>(<span style="color:#65B042;"><span style="color:#65B042;">"</span>[d/m @ H:i]<span style="color:#65B042;">"</span></span>)<span style="color:#E28964;">.</span><span style="color:#65B042;"><span style="color:#65B042;">"</span><- <span style="color:#65B042;">"</span></span><span style="color:#E28964;">.</span><span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>buffer<span style="color:#65B042;">'</span></span>][<span style="color:#65B042;"><span style="color:#65B042;">'</span>all<span style="color:#65B042;">'</span></span>] <span style="color:#E28964;">.</span><span style="color:#65B042;"><span style="color:#65B042;">"</span><span style="color:#DDF2A4;">\n</span><span style="color:#65B042;">"</span></span><span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> If the server is PINGing, then PONG. This is to tell the server that</span> <span style="color:#AEAEAE;font-style:italic;"> we are still here, and have not lost the connection <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#E28964;">if</span>(<span style="color:#DAD085;">substr</span>(<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>buffer<span style="color:#65B042;">'</span></span>][<span style="color:#65B042;"><span style="color:#65B042;">'</span>all<span style="color:#65B042;">'</span></span>], <span style="color:#3387CC;">0</span>, <span style="color:#3387CC;">6</span>) <span style="color:#E28964;">=</span><span style="color:#E28964;">=</span> <span style="color:#65B042;"><span style="color:#65B042;">'</span>PING :<span style="color:#65B042;">'</span></span>) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> PONG : is followed by the line that the server</span> <span style="color:#AEAEAE;font-style:italic;"> sent us when PINGing <span style="color:#AEAEAE;font-style:italic;">*/</span></span> cmd_send(<span style="color:#65B042;"><span style="color:#65B042;">'</span>PONG :<span style="color:#65B042;">'</span></span><span style="color:#E28964;">.</span><span style="color:#DAD085;">substr</span>(<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>buffer<span style="color:#65B042;">'</span></span>][<span style="color:#65B042;"><span style="color:#65B042;">'</span>all<span style="color:#65B042;">'</span></span>], <span style="color:#3387CC;">6</span>))<span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> If this is the first time we have reached this point,</span> <span style="color:#AEAEAE;font-style:italic;"> then JOIN the channel <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#E28964;">if</span> (<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>firstTime</span> <span style="color:#E28964;">=</span><span style="color:#E28964;">=</span> <span style="color:#3387CC;">true</span>){ <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>cmd_send("JOIN ". $CONFIG['channel']);</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> for all the channels we want to join</span> <span style="color:#E28964;">foreach</span> (<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>channels</span> <span style="color:#E28964;">as</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>chan</span>) { cmd_send(<span style="color:#65B042;"><span style="color:#65B042;">"</span>JOIN <span style="color:#65B042;">"</span></span><span style="color:#E28964;">.</span><span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>chan</span>)<span style="color:#E28964;">;</span> } <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> The next time we get here, it will NOT be the firstTime <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>firstTime</span> <span style="color:#E28964;">=</span> <span style="color:#3387CC;">false</span><span style="color:#E28964;">;</span> } } <span style="color:#E28964;">elseif</span> (<span style="color:#DAD085;">preg_match</span>(<span style="color:#E9C062;"><span style="color:#E9C062;">"/</span>:NickServ!services@services.SC.net NOTICE HAL :This nickname is registered and protected.<span style="color:#E9C062;">/"</span></span>,<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>buffer<span style="color:#65B042;">'</span></span>][<span style="color:#65B042;"><span style="color:#65B042;">'</span>all<span style="color:#65B042;">'</span></span>])) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Need to register <span style="color:#AEAEAE;font-style:italic;">*/</span></span> register()<span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Make sure that we have a NEW line of chats to analyse. If we don't,</span> <span style="color:#AEAEAE;font-style:italic;"> there is no need to parse the data again <span style="color:#AEAEAE;font-style:italic;">*/</span></span> } <span style="color:#E28964;">elseif</span> (<span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>old_buffer</span> <span style="color:#E28964;">!</span><span style="color:#E28964;">=</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>buffer<span style="color:#65B042;">'</span></span>][<span style="color:#65B042;"><span style="color:#65B042;">'</span>all<span style="color:#65B042;">'</span></span>]) { <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">/*</span> Determine the patterns to be passed</span> <span style="color:#AEAEAE;font-style:italic;"> to parse_buffer(). buffer is in the form:</span> <span style="color:#AEAEAE;font-style:italic;"> :username!~identd@hostname JOIN :#php</span> <span style="color:#AEAEAE;font-style:italic;"> :username!~identd@hostname PRIVMSG #PHP :action text</span> <span style="color:#AEAEAE;font-style:italic;"> :username!~identd@hostname command channel :text <span style="color:#AEAEAE;font-style:italic;">*/</span></span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> log the buffer to "log.txt" (file must have</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> already been created).</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span>log_to_file($con['buffer']['all']);</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> make sense of the buffer</span> parse_buffer()<span style="color:#E28964;">;</span> <span style="color:#AEAEAE;font-style:italic;"><span style="color:#AEAEAE;font-style:italic;">//</span> now process any commands issued to the bot</span> process_commands()<span style="color:#E28964;">;</span> } update_http()<span style="color:#E28964;">;</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>old_buffer</span> <span style="color:#E28964;">=</span> <span style="color:#3E87E3;"><span style="color:#3E87E3;">$</span>con</span>[<span style="color:#65B042;"><span style="color:#65B042;">'</span>buffer<span style="color:#65B042;">'</span></span>][<span style="color:#65B042;"><span style="color:#65B042;">'</span>all<span style="color:#65B042;">'</span></span>]<span style="color:#E28964;">;</span> } } } ?> </pre> </div> </div> <a href="http://refactormycode.com/codes/250-socket-loop-need-constant-function" style="color:#fff" title="As seen on RefactorMyCode.com"><img alt="Small_logo" src="http://refactormycode.com/images/small_logo.gif" style="border:0" /></a>