Source code: plugins/IcqEngine/protocol/IcqMessageFactory.java
1 /*
2 * IcqMessageFactory.java
3 *
4 * Created on October 31, 2002, 5:13 PM
5 */
6
7 package plugins.IcqEngine.protocol;
8
9 import java.util.HashMap;
10
11 /**
12 *
13 * @author Tobias Riemer
14 */
15 public class IcqMessageFactory {
16
17 public int uin, sid, seq1, seq2;
18 /** Creates a new instance of IcqMessageFactory */
19 public IcqMessageFactory(int uin) {
20 this.uin = uin;
21 createNewSequence1();
22 createNewSequence2();
23 createNewSessionId();
24 }
25
26 public IncomingMessage createIncomingMessage(ByteMessage bmsg) {
27 int cmd = ByteDecoder.decodeInt(bmsg.getBytes(), 2, 4);
28 System.out.println("cmd: " + cmd);
29 switch(cmd) {
30 case 0x00E6:
31 return new UserStatusMessage(bmsg);
32 case 0x000A:
33 return new SvrAckMessage(bmsg);
34 }
35 return null;
36 }
37
38
39
40 public LoginMessage createLoginMessage(String password) {
41 return new LoginMessage(password);
42 }
43
44 public UserStatusMessage createUserStatusMessage(ByteMessage msg) {
45 return new UserStatusMessage(msg);
46 }
47
48 public AckMessage createAckMessage(int serverTid) {
49 return new AckMessage(serverTid);
50 }
51
52 public ContactListMessage createContactListMessage(HashMap contactList) {
53 return new ContactListMessage(contactList);
54 }
55
56
57 public static void main(String[] args) throws Exception {
58 /*IcqMessageFactory imf = new IcqMessageFactory();
59 LoginMessage lm = imf.createLoginMessage();
60
61 HashMap contactMap = new HashMap();
62 // contactMap.put("",new plugins.Messenger.DefaultContact("","",null));
63 int serverTid = 22;
64 AckMessage am = imf.createAckMessage(serverTid);
65 imf.increaseSequenceNumbers();
66 ContactListMessage cm = imf.createContactListMessage(contactMap);
67 System.out.println(lm.getMessage(imf.uin, imf.sid, imf.seq1, imf.seq2));
68 System.out.println(am.getMessage(imf.uin, imf.sid, imf.seq1, imf.seq2));
69 System.out.println(cm.getMessage(imf.uin, imf.sid, imf.seq1, imf.seq2));
70
71 ByteMessage bmsg = new ByteMessage();
72
73 UserStatusMessage usm = imf.createUserStatusMessage(bmsg);
74 System.out.println(bmsg);
75 System.out.println(usm.getUin());*/
76
77 for(int i=0;i<255;i++) {
78 System.out.println(i + " " + (i ^ 0xFF) + " " + (int) ((char) (i ^ 0xFF)));
79 }
80 }
81
82 public void increaseSequenceNumbers() {
83 seq1++;
84 seq2++;
85 }
86
87 protected void createNewSessionId() {
88 sid = (int) ( Math.random() * 65536 * 65536 );
89 }
90 protected void createNewSequence1() {
91 seq1 = (int) ( Math.random() * 65536 );
92 }
93
94 protected void createNewSequence2() {
95 seq2 = 1;
96 }
97 }