Changeset 34358
- Timestamp:
- 07/08/09 22:07:13 (4 years ago)
- Location:
- lang/java/IRCKit/trunk/src/com/mac/tarchan/net/irc
- Files:
-
- 5 modified
-
Handler.java (modified) (1 diff)
-
IRCConnection.java (modified) (1 diff)
-
client/IRCClient.java (modified) (6 diffs)
-
client/IRCMessage.java (modified) (9 diffs)
-
client/IRCName.java (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/java/IRCKit/trunk/src/com/mac/tarchan/net/irc/Handler.java
r34247 r34358 64 64 return 6667; 65 65 } 66 67 /** 68 * {@inheritDoc} 69 */ 70 @Override 71 protected void setURL(URL u, String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref) 72 { 73 try 74 { 75 // チャンネル名を設定 76 if (ref != null) path = "#" + ref; 77 else if (path.length() > 1) path = "#" + path.substring(1); 78 79 // System.out.format("[URL] %s://%s:%s, %s, %s, %s, %s, %s\n", protocol, host, port, authority, userInfo, path, query, ref); 80 super.setURL(u, protocol, host, port, authority, userInfo, path, query, ref); 81 } 82 catch (RuntimeException x) 83 { 84 x.printStackTrace(); 85 throw x; 86 } 87 } 66 88 } -
lang/java/IRCKit/trunk/src/com/mac/tarchan/net/irc/IRCConnection.java
r34247 r34358 69 69 // 接続する 70 70 int port = url.getPort(); 71 if (port < 0) port = url.getDefaultPort();71 if (port == -1) port = url.getDefaultPort(); 72 72 socket = new Socket(url.getHost(), port); 73 73 socket.setSoTimeout(5 * 60 * 1000); -
lang/java/IRCKit/trunk/src/com/mac/tarchan/net/irc/client/IRCClient.java
r34247 r34358 101 101 public IRCClient() 102 102 { 103 new PingPong(this);104 new AutoJoin(this);103 addAllHandlers(new PingPong()); 104 addAllHandlers(new AutoJoin()); 105 105 } 106 106 … … 296 296 public void open() throws IOException 297 297 { 298 String href = getProperty("irc.url"); 298 299 String host = getProperty("irc.host"); 299 300 String port = getProperty("irc.port"); 300 URL url = new URL(String.format("irc://%s:%s", host, port)); 301 // System.out.format("[OPEN] %s\n", href); 302 // System.out.format("[OPEN] %s\n", host); 303 // System.out.format("[OPEN] %s\n", port); 304 if (isEmpty(href)) href = String.format("irc://%s:%s", host, port); 305 // System.out.format("[OPEN] %s\n", href); 306 URL url = new URL(href); 307 String channel = url.getPath(); 308 // System.out.format("[OPEN] ref=%s\n", ref); 309 if (!isEmpty(channel)) setProperty("irc.channel", channel); 301 310 // System.out.format("[OPEN] %s\n", url); 302 311 URLConnection con = url.openConnection(); … … 510 519 public static class PingPong 511 520 { 512 /** IRCクライアント */513 protected IRCClient irc;514 515 /**516 * PingPong を構築します。517 *518 * @param irc IRCクライアント519 */520 public PingPong(IRCClient irc)521 {522 this.irc = irc;523 this.irc.addAllHandlers(this);524 }525 526 521 /** 527 522 * 接続を継続するために PONG を送信します。 … … 530 525 */ 531 526 @Reply("PING") 532 public void ping(IRCMessage msg)533 { 534 // サーバー名s527 public void onPing(IRCMessage msg) 528 { 529 IRCClient irc = (IRCClient)msg.getSource(); 535 530 String server = msg.getTrail(); 536 531 irc.postMessage(String.format("PONG :%s", server)); … … 545 540 public static class AutoJoin 546 541 { 547 /** IRCクライアント */548 protected IRCClient irc;549 550 542 /** 551 * AutoJoin を構築します。 552 * 553 * @param irc IRCクライアント 554 */ 555 public AutoJoin(IRCClient irc) 556 { 557 this.irc = irc; 558 this.irc.addAllHandlers(this); 559 } 560 561 /** 562 * 指定されたチャンネルにJOINします。 543 * 指定されたチャンネルに JOIN します。 563 544 * 564 545 * @param msg IRCメッセージ 565 546 */ 566 547 @Reply("001") 567 public void welcome(IRCMessage msg) 568 { 548 public void onWelcome(IRCMessage msg) 549 { 550 IRCClient irc = (IRCClient)msg.getSource(); 569 551 String channel = irc.getProperty("irc.channel"); 570 552 if (!isEmpty(channel)) … … 573 555 } 574 556 } 557 558 /** 559 * ニックネームを変更します。 560 * 561 * @param msg IRCメッセージ 562 */ 563 @Reply("433") 564 public void onNicknameInUse(IRCMessage msg) 565 { 566 IRCClient irc = (IRCClient)msg.getSource(); 567 String oldNick = msg.getParam(1); 568 String newNick = String.format("%s_", oldNick).substring(1); 569 // System.out.format("nick=%s -> %s\n", oldNick, newNick); 570 irc.postMessage(String.format("NICK %s", newNick)); 571 } 575 572 } 576 573 } -
lang/java/IRCKit/trunk/src/com/mac/tarchan/net/irc/client/IRCMessage.java
r34247 r34358 98 98 private String _trail; 99 99 100 /** サーバ名(prefix) */101 private String _server;102 103 /** ニックネーム(prefix) */104 private String _nick;105 106 /** ユーザ名(prefix) */107 private String _user;108 109 /** ホスト名 (prefix) */110 private String _host;100 // /** サーバ名(prefix) */ 101 // private String _server; 102 // 103 // /** ニックネーム(prefix) */ 104 // private String _nick; 105 // 106 // /** ユーザ名(prefix) */ 107 // private String _user; 108 // 109 // /** ホスト名 (prefix) */ 110 // private String _host; 111 111 112 112 /** 文字エンコーディング */ … … 114 114 115 115 /** 116 * IRCメッセージを解析して IRCMessage を作成します。 117 * 118 * @param source メッセージのソース 119 * @param message メッセージ 120 * @param when メッセージを受け取った時間 121 */ 122 public IRCMessage(IRCClient source, String message, long when) 123 { 124 // オリジナルのパラメータを保存する 125 super(source); 126 setMessage(message); 127 setWhen(when); 128 129 // デバッグ出力 130 // System.out.println(this); 131 } 132 133 /** 116 134 * IRCメッセージを解析して IRCMessage を作成します。 117 135 * … … 119 137 * @param message メッセージ 120 138 */ 121 public IRCMessage( Object source, String message)139 public IRCMessage(IRCClient source, String message) 122 140 { 123 141 this(source, message, System.currentTimeMillis()); 124 }125 126 /**127 * IRCメッセージを解析して IRCMessage を作成します。128 *129 * @param source メッセージのソース130 * @param message メッセージ131 * @param when メッセージを受け取った時間132 */133 public IRCMessage(Object source, String message, long when)134 {135 // オリジナルのパラメータを保存する136 super(source);137 setMessage(message);138 setWhen(when);139 140 // デバッグ出力141 // System.out.println(this);142 142 } 143 143 … … 238 238 { 239 239 _prefix = new IRCName(prefix); 240 String[] token = prefix.split(ADDRESS_DELIMITER);241 if (token.length == 1)242 {243 _server = token[0];244 _nick = token[0];245 }246 else247 {248 _nick = token[0];249 _user = token[1];250 _host = token[2];251 }240 // String[] token = prefix.split(ADDRESS_DELIMITER); 241 // if (token.length == 1) 242 // { 243 // _server = token[0]; 244 // _nick = token[0]; 245 // } 246 // else 247 // { 248 // _nick = token[0]; 249 // _user = token[1]; 250 // _host = token[2]; 251 // } 252 252 253 253 // _prefix = prefix; … … 416 416 417 417 /** 418 * @deprecated {@link #getPrefix()} 418 419 * サーバ名を返します。 419 420 * … … 422 423 public String getServer() 423 424 { 424 return _server; 425 } 426 427 /** 425 return _prefix.toString(); 426 } 427 428 /** 429 * @deprecated {@link #getPrefix()} 428 430 * ニックネームを返します。 429 431 * … … 432 434 public String getNick() 433 435 { 434 return _nick; 435 } 436 437 /** 436 return _prefix.getNick(); 437 } 438 439 /** 440 * @deprecated {@link #getPrefix()} 438 441 * ユーザ名を返します。 439 442 * … … 442 445 public String getUser() 443 446 { 444 return _user; 445 } 446 447 /** 448 * ホストを返します。 449 * 450 * @return ホストまたは null 447 return _prefix.getUser(); 448 } 449 450 /** 451 * @deprecated {@link #getPrefix()} 452 * ホスト名を返します。 453 * 454 * @return ホスト名 451 455 */ 452 456 public String getHost() 453 457 { 454 return _ host;458 return _prefix.getHost(); 455 459 } 456 460 … … 676 680 * @return メッセージ 677 681 */ 678 public static IRCMessage valueOf(String str, Object source)682 public static IRCMessage valueOf(String str, IRCClient source) 679 683 { 680 684 return new IRCMessage(source, str); -
lang/java/IRCKit/trunk/src/com/mac/tarchan/net/irc/client/IRCName.java
r34247 r34358 81 81 82 82 /** 83 * チャンネル名かどうか判定します。 84 * 85 * @return チャンネル名の場合は true 86 */ 87 public boolean isChannel() 88 { 89 return name.matches("[&#%]\\S+"); 90 } 91 92 /** 83 93 * ロングネームを解析します。 84 94 */ … … 100 110 101 111 /** 112 * ニックネームを返します。 113 * 102 114 * @return ニックネーム 103 115 */ … … 108 120 109 121 /** 122 * ユーザー名を返します。 123 * 110 124 * @return ユーザー名 111 125 */ … … 116 130 117 131 /** 132 * ホスト名を返します。 133 * 118 134 * @return ホスト名 119 135 */
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)