Public feed #598246

Miscellany

public text v1 · immutable
Raw Edit
·published 2007-07-01 05:32 UTC
rendered paste body
    private void readData()
    {
        try
        {
            int j = inputStream.available();
            if(expectedSize == 0 && j >= 6)
            {
                waiting = true;
                for(int k = 0; k < 6; k += inputStream.read(ioBuffer, k, 6 - k));
                int l = ioBuffer[0] & 0xff; //idx type
                int j1 = ((ioBuffer[1] & 0xff) << 8) + (ioBuffer[2] & 0xff); //id
                int l1 = ((ioBuffer[3] & 0xff) << 8) + (ioBuffer[4] & 0xff); // bytearray length
                int i2 = ioBuffer[5] & 0xff; //status?
                current = null;
                for(OnDemandData onDemandData = (OnDemandData) requested.reverseGetFirst(); onDemandData != null; onDemandData = (OnDemandData) requested.reverseGetNext())
                {
                    if(onDemandData.dataType == l && onDemandData.ID == j1)
                        current = onDemandData;
                    if(current != null)
                        onDemandData.loopCycle = 0;
                }

                if(current != null)
                {
                    loopCycle = 0;
                    if(l1 == 0)
                    {
                        signlink.reporterror("Rej: " + l + "," + j1);
                        current.buffer = null;
                        if(current.incomplete)
                            synchronized(aClass19_1358)
                            {
                                aClass19_1358.insertHead(current);
                            }
                        else
                            current.unlink();
                        current = null;
                    } else
                    {
                        if(current.buffer == null && i2 == 0)
                            current.buffer = new byte[l1];
                        if(current.buffer == null && i2 != 0)
                            throw new IOException("missing start of file");
                    }
                }
                completedSize = i2 * 500;
                expectedSize = 500;
                if(expectedSize > l1 - i2 * 500)
                    expectedSize = l1 - i2 * 500;
            }
            if(expectedSize > 0 && j >= expectedSize)
            {
                waiting = true;
                byte abyte0[] = ioBuffer;
                int i1 = 0;
                if(current != null)
                {
                    abyte0 = current.buffer;
                    i1 = completedSize;
                }
                for(int k1 = 0; k1 < expectedSize; k1 += inputStream.read(abyte0, k1 + i1, expectedSize - k1));
                if(expectedSize + completedSize >= abyte0.length && current != null)
                {
                    if(clientInstance.decompressors[0] != null)
                        clientInstance.decompressors[current.dataType + 1].method234(abyte0.length, abyte0, current.ID);
                    if(!current.incomplete && current.dataType == 3)
                    {
                        current.incomplete = true;
                        current.dataType = 93;
                    }
                    if(current.incomplete)
                        synchronized(aClass19_1358)
                        {
                            aClass19_1358.insertHead(current);
                        }
                    else
                        current.unlink();
                }
                expectedSize = 0;
            }
        }
        catch(IOException ioexception)
        {
            try
            {
                socket.close();
            }
            catch(Exception _ex) { }
            socket = null;
            inputStream = null;
            outputStream = null;
            expectedSize = 0;
        }
    }