📄 transform.java
字号:
import java.io.UnsupportedEncodingException;
import java.util.Vector;
public class Transform
{
public static final int RETRY_TIME = 4;
public static Transform instance = new Transform();
public Sender sender;
public static final byte DEFAULT_POLL_INTERVAL = 5;
private byte poll_Interval;
private boolean isFirstLoginPoll;
private static String buddyListVersion = "0";
static int loginErrorCounter = 0;
public void setPollInterVal(byte byte0)
{
poll_Interval = byte0;
autoPolling(true);
}
private Transform()
{
poll_Interval = 5;
isFirstLoginPoll = true;
sender = new Sender(this);
}
void on_NetworkError(DataPackage datapackage)
{
MMIDlet.instance.on_NetworkError(datapackage);
}
public void receive(DataPackage datapackage)
{
byte byte0 = datapackage.type;
switch(byte0)
{
case -1:
case 0: // '\0'
case 18: // '\022'
case 19: // '\023'
default:
break;
case 6: // '\006'
if(isFirstLoginPoll)
{
datapackage.delayTime = 3;
isFirstLoginPoll = false;
} else
{
datapackage.delayTime = 0;
}
sender.sendDataPackage(datapackage);
break;
case 3: // '\003'
on_OpenService(datapackage.getData());
break;
case -2:
on_Error(datapackage.getData());
break;
case 2: // '\002'
on_Navigation(datapackage.getData());
break;
case 4: // '\004'
MMIDlet.instance.on_SetUserInf();
break;
case 5: // '\005'
isFirstLoginPoll = true;
on_Login(datapackage.getData());
break;
case 8: // '\b'
case 10: // '\n'
on_NewMessage(datapackage.getData());
break;
case 9: // '\t'
on_NewMessages(datapackage.getData());
break;
case 11: // '\013'
on_ByeChatSession(datapackage.getData());
break;
case 7: // '\007'
MMIDlet.instance.on_Logout();
break;
case 12: // '\f'
on_BuddyListUpdate(datapackage.getData());
break;
case 13: // '\r'
MMIDlet.instance.on_CancelService();
break;
case 14: // '\016'
on_SetUserPresence(datapackage.getData());
break;
case 15: // '\017'
on_GetUserInf(datapackage.getData());
break;
case 16: // '\020'
on_ServiceInit(datapackage.getData());
break;
case 17: // '\021'
on_ServiceFinish(datapackage.getData());
break;
case 20: // '\024'
on_SetClientConfig(datapackage.getData());
break;
case 1: // '\001'
on_InitRequest(datapackage.getData());
break;
}
}
private void on_InitRequest(byte abyte0[])
{
MMIDlet.instance.on_InitRequest(abyte0);
}
private void on_SetClientConfig(byte abyte0[])
{
MMIDlet.instance.on_SetClientConfig(byte2String(abyte0));
}
private void on_ServiceFinish(byte abyte0[])
{
String s = byte2String(abyte0);
Vector vector = StringParser.split(s, '\002');
MMIDlet.instance.on_ServiceFinish(vector);
}
private void on_ServiceInit(byte abyte0[])
{
MMIDlet.instance.on_ServiceInit(Integer.parseInt(byte2String(abyte0)));
}
private void on_GetUserInf(byte abyte0[])
{
String s = byte2String(abyte0);
Vector vector = StringParser.split(s, '\002');
MMIDlet.instance.on_GetUserInf(vector);
}
private void on_SetUserPresence(byte abyte0[])
{
String s = byte2String(abyte0);
int i = s.indexOf('\002');
MMIDlet.instance.on_SetUserPresence(s.substring(0, i), s.substring(i + 1));
}
public DataPackage getPollPackage()
{
StringBuffer stringbuffer = new StringBuffer();
stringbuffer.append(buddyListVersion);
stringbuffer.append(MMIDlet.instance.getCurrentServiceID());
DataPackage datapackage = makeDataPackage((byte)0, stringbuffer.toString());
datapackage.delayTime = poll_Interval;
return datapackage;
}
private void on_BuddyListUpdate(byte abyte0[])
{
Vector vector = StringParser.split(byte2String(abyte0), '\001');
Vector vector1 = StringParser.split(String.valueOf(vector.elementAt(0)), '\002');
Vector vector2 = StringParser.split(String.valueOf(vector.elementAt(1)), '\002');
buddyListVersion = vector.lastElement().toString();
MMIDlet.instance.on_BuddyListUpdate(vector1, vector2);
}
private void on_ByeChatSession(byte abyte0[])
{
Vector vector = StringParser.split(byte2String(abyte0), '\002');
MMIDlet.instance.on_ByeChatSession(vector);
}
private void on_NewMessages(byte abyte0[])
{
Vector vector = StringParser.split(byte2String(abyte0), '\001');
int i = vector.size();
try
{
for(int j = i - 1; j >= 0; j--)
on_NewMessage(vector.elementAt(j).toString());
}
catch(Exception exception) { }
}
private void on_NewMessage(String s)
{
Vector vector = StringParser.split(s, '\002');
int i = vector.size() - 2;
String s1 = String.valueOf(vector.elementAt(0));
Vector vector1 = StringParser.split(vector.elementAt(1).toString(), '\003');
Vector vector2 = new Vector(i);
if(i == 1)
{
Vector vector3 = StringParser.split(vector.elementAt(2).toString(), '\003');
if(vector3 != null)
{
ChatMessage chatmessage = newChatMessage(vector3);
if(chatmessage != null)
vector2.addElement(chatmessage);
}
} else
{
for(int j = 0; j < i; j++)
{
ChatMessage chatmessage1 = newChatMessage(StringParser.split(vector.elementAt(2 + j).toString(), '\003'));
if(chatmessage1 != null)
vector2.addElement(chatmessage1);
}
}
if(s1 == null || s1.trim().length() == 0)
s1 = null;
if(vector1 == null)
{
vector1 = new Vector(1);
if(vector2.size() != 0)
vector1.addElement(((ChatMessage)vector2.elementAt(0)).from);
}
MMIDlet.instance.on_NewMessage(s1, vector1, vector2.size() == 0 ? null : vector2);
}
private void on_NewMessage(byte abyte0[])
{
on_NewMessage(byte2String(abyte0));
}
ChatMessage newChatMessage(Vector vector)
{
byte byte0 = Byte.parseByte(vector.elementAt(3).toString().trim());
ChatMessage chatmessage;
switch(byte0)
{
case 1: // '\001'
case 7: // '\007'
case 9: // '\t'
case 10: // '\n'
return null;
case 2: // '\002'
case 3: // '\003'
case 4: // '\004'
case 5: // '\005'
case 6: // '\006'
case 8: // '\b'
default:
chatmessage = new ChatMessage(vector.elementAt(0).toString(), vector.elementAt(2).toString(), byte0, vector.elementAt(4).toString());
break;
}
return chatmessage;
}
private void on_Login(byte abyte0[])
{
Vector vector = StringParser.split(byte2String(abyte0), '\001');
buddyListVersion = "0";
try
{
MMIDlet.instance.on_Login(vector);
loginErrorCounter = 0;
}
catch(Exception exception)
{
loginErrorCounter++;
if(loginErrorCounter == 6)
{
MMIDlet.instance.on_Error("1000");
return;
}
sender.sendLastDataPackage();
}
}
private void on_Navigation(byte abyte0[])
{
Vector vector = StringParser.split(byte2String(abyte0), '\001');
MMIDlet.instance.on_Navigation(vector);
}
String byte2String(byte abyte0[])
{
try{
return new String(abyte0, "UTF-8");
}
catch(UnsupportedEncodingException e){
return "";
}
}
public static DataPackage makeDataPackage(byte byte0, String s)
{
byte abyte1[];
try{
byte abyte0[] = s.getBytes("UTF-8");
int i = abyte0.length + 4;
abyte1 = new byte[i];
abyte1[0] = (byte)(i >> 16);
abyte1[1] = (byte)(i >> 8);
abyte1[2] = (byte)i;
abyte1[3] = byte0;
System.arraycopy(abyte0, 0, abyte1, 4, abyte0.length);
return new DataPackage(abyte1);
}
catch(UnsupportedEncodingException unsupportedencodingexception){
return null;
}
}
private void on_Error(byte abyte0[])
{
MMIDlet.instance.on_Error(byte2String(abyte0));
}
private void on_OpenService(byte abyte0[])
{
MMIDlet.instance.on_OpenService(byte2String(abyte0));
}
public void openService()
{
DataPackage datapackage = new DataPackage(new byte[] {
0, 0, 4, 3
});
sender.sendDataPackage(datapackage);
}
public void setUserInf(User user)
{
StringBuffer stringbuffer = new StringBuffer(20);
stringbuffer.append(user.nickName).append('\002').append(user.getGender(true)).append('\002').append(user.birthDate);
sender.sendDataPackage(makeDataPackage((byte)4, stringbuffer.toString()));
}
public void navigationRequest()
{
StringBuffer stringbuffer = new StringBuffer(MMIDlet.str_ClientVersion.length() + 10);
stringbuffer.append(MMIDlet.str_ClientVersion);
stringbuffer.append('\002');
stringbuffer.append(MMIDlet.user.sid);
sender.sendDataPackage(makeDataPackage((byte)2, stringbuffer.toString()));
}
public void login(User user)
{
StringBuffer stringbuffer = new StringBuffer(20);
stringbuffer.append(user.availability).append('\003').append(user.activity).append('\003').append(user.uri);
sender.sendDataPackage(makeDataPackage((byte)5, stringbuffer.toString()));
}
public void sendChatMessage(String s, ChatSession chatsession)
{
if(chatsession == null)
return;
String s1 = chatsession.getSessionName();
String s2 = chatsession.uris.elementAt(0).toString();
StringBuffer stringbuffer = new StringBuffer(30);
if(s1 == null || s1.length() == 0)
stringbuffer.append(s).append('\002').append('\002').append(s2);
else
if(chatsession.uris.size() == 1)
stringbuffer.append(s).append('\002').append(s1).append('\002').append(s2);
else
stringbuffer.append(s).append('\002').append(s1).append('\002');
sender.sendDataPackage(makeDataPackage((byte)8, stringbuffer.toString()));
}
public void byeChatSession(String as[])
{
StringBuffer stringbuffer = new StringBuffer();
for(int i = as.length - 1; i >= 0; i--)
{
stringbuffer.append(as[i]);
stringbuffer.append('\002');
}
stringbuffer.deleteCharAt(stringbuffer.length() - 1);
sender.sendDataPackage(makeDataPackage((byte)11, stringbuffer.toString()));
}
public void logout()
{
sender.sendDataPackage(new DataPackage(new byte[] {
0, 0, 4, 7
}));
}
public void autoPolling(boolean flag)
{
sender.autoPolling(flag);
}
public boolean isAutoPolling()
{
return sender.isAutoPolling();
}
public void manualPolling()
{
if(sender.isQueueEmpty())
sender.sendDataPackage(getPollPackage());
}
public void cancelService()
{
sender.sendDataPackage(new DataPackage(new byte[] {
0, 0, 4, 13
}));
}
public void inviteMorePerson(ChatSession chatsession, String as[])
{
StringBuffer stringbuffer = new StringBuffer(chatsession.getSessionName());
stringbuffer.append('\002');
for(int i = as.length - 1; i >= 0; i--)
{
stringbuffer.append(as[i]);
stringbuffer.append('\002');
}
stringbuffer.deleteCharAt(stringbuffer.length() - 1);
sender.sendDataPackage(makeDataPackage((byte)10, stringbuffer.toString()));
}
public void setUserPresence(String s, String s1)
{
sender.sendDataPackage(makeDataPackage((byte)14, s + '\002' + s1));
}
public void getUserInfByUri(String s)
{
sender.sendDataPackage(makeDataPackage((byte)15, "U\002" + s));
}
public void initServiceAction(String s)
{
sender.sendDataPackage(makeDataPackage((byte)16, s));
}
public void getUserInfByCellphone(String s)
{
sender.sendDataPackage(makeDataPackage((byte)15, "M\002" + s));
}
public void getUserInfBySid(String s)
{
sender.sendDataPackage(makeDataPackage((byte)15, "S\002" + s));
}
public void setClientConfig(String s)
{
sender.sendDataPackage(makeDataPackage((byte)20, s));
}
public void initRequest()
{
sender.sendDataPackage(makeDataPackage((byte)1, MMIDlet.str_ClientVersion.toString()));
}
public void killNetWorkThread()
{
sender.abort();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -