⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transform.java

📁 飞信的j2me源代码
💻 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 + -