Package org.xtreemfs.foundation.buffer

Examples of org.xtreemfs.foundation.buffer.ReusableBuffer


        return rBuf;
    }
   
    public String toString() {
        // return buf.toString() + " [" + startOffset + ", " + endOffset + ")";
        ReusableBuffer buffer = new ReusableBuffer(buf);
        ReusableBuffer newBuf = buffer.createViewBuffer();
        newBuf.range(startOffset, endOffset - startOffset);
        return OutputUtils.byteArrayToHexString(newBuf.array());
    }
View Full Code Here


       
        // FIXME: implement w/o redundant memory copies
       
        List<byte[]> compressedKeys = compress(keys);
       
        ReusableBuffer keyBuf = varLenKeys ? serializeVarLenPageBuf(compressedKeys)
            : serializeFixedLenPage(keys);
        ReusableBuffer valBuf = varLenVals ? serializeVarLenPage(values) : serializeFixedLenPage(values);
       
        int entries = keys.size();
        int keysOffset = CompressedBlockReader.PREFIX_OFFSET + this.prefix.length;
        int valsOffset = keysOffset + keyBuf.limit();
       
        ByteBuffer returnBuf = ByteBuffer.wrap(new byte[valsOffset + valBuf.limit()]);
        /*
         * the header consist of 4 : ptr to vals 4 : ptr to keys 4 : number of
         * entries 4 : -1 => variable keys, or n => length of fixed size keys 4
         * : -1 => variable values, or n => length of fixed size values k :
         * prefix ... start of keys
         */

        returnBuf.putInt(valsOffset);
        returnBuf.putInt(keysOffset);
        returnBuf.putInt(entries);
        returnBuf.putInt(varLenKeys ? -1 : entries == 0 ? 0 : (keyBuf.limit() / entries));
        returnBuf.putInt(varLenVals ? -1 : entries == 0 ? 0 : (valBuf.limit() / entries));
       
        if (this.prefix.length > 0)
            returnBuf.put(this.prefix);
       
        returnBuf.put(keyBuf.getBuffer());
        returnBuf.put(valBuf.getBuffer());
       
        BufferPool.free(keyBuf);
        BufferPool.free(valBuf);
       
        returnBuf.position(0);
View Full Code Here

            offsetPos++;
        }
       
        size += list.size() * Integer.SIZE / 8;
       
        ReusableBuffer newBuf = BufferPool.allocate(size);
        for (byte[] buf : list)
            newBuf.put(buf);
       
        for (int offs : offsets)
            newBuf.putInt(offs);
       
        newBuf.position(0);
       
        return newBuf;
    }
View Full Code Here

            offsetPos++;
        }
       
        size += list.size() * Integer.SIZE / 8;
       
        ReusableBuffer newBuf = BufferPool.allocate(size);
        for (Object buf : list)
            newBuf.put(InternalBufferUtil.toBuffer(buf));
       
        for (int offs : offsets)
            newBuf.putInt(offs);
       
        newBuf.position(0);
       
        return newBuf;
    }
View Full Code Here

   
    private static ReusableBuffer serializeFixedLenPage(List<Object> list) {
       
        final int size = list.size() == 0 ? 0 : InternalBufferUtil.size(list.get(0)) * list.size();
       
        ReusableBuffer newBuf = BufferPool.allocate(size);
        for (Object buf : list)
            newBuf.put(InternalBufferUtil.toBuffer(buf));
       
        newBuf.position(0);
       
        return newBuf;
    }
View Full Code Here

                    "unexpected LSN: " + le.getLSN() + "\n" + viewID +
                    ":" + seqNo + " was expected instead.";
               
                le.assignId(viewID, seqNo);
               
                ReusableBuffer buffer = null;
                try {
                    buffer = le.serialize(csumAlgo);
                       
                    Logging.logMessage(Logging.LEVEL_DEBUG, this,
                            "Writing entry LSN(%d:%d) with %d bytes payload [%s] to log. " +
                            "[serialized %d bytes]", viewID, seqNo,
                            le.getPayload().remaining(), new String(le.getPayload().array()),
                            buffer.remaining());
                   
                    // write the LogEntry to the local disk
                    channel.write(buffer.getBuffer());
                   
                } finally {
                    csumAlgo.reset();
                    if (buffer != null) BufferPool.free(buffer);
                }
View Full Code Here

    }
   
    protected LogEntry getNext() throws LogEntryException {
       
        long offset = -1;
        ReusableBuffer item = null;
        try {
           
            if (channel.position() == channel.size())
                return null;
           
            int numRead = channel.read(myInt);
            if (numRead < Integer.SIZE / 8)
                return null;
           
            myInt.flip();
            int entrySize = myInt.getInt();
            myInt.flip();
            offset = channel.position() - Integer.SIZE / 8;
            channel.position(offset);
           
            if (entrySize < 0)
                throw new LogEntryException("log entry with negative size detected: " + entrySize);
           
            item = BufferPool.allocate(entrySize);
            channel.read(item.getBuffer());
            item.flip();
            LogEntry e = LogEntry.deserialize(item, csumAlgo);
            csumAlgo.reset();
            return e;
           
        } catch (LogEntryException ex) {
View Full Code Here

            } else if (obj instanceof InsertRecordGroup) {
               
                InsertRecordGroup irg = (InsertRecordGroup) obj;
               
                int size = irg.getSize();
                ReusableBuffer buf = BufferPool.allocate(size);
                irg.serialize(buf);
                buf.flip();
               
                buffer.put(FIELD_TYPE_GROUP);
                buffer.putInt(size);
                buffer.put(buf);
                BufferPool.free(buf);
View Full Code Here

                return obj;
            }
            case FIELD_TYPE_GROUP: {
               
                int length = buffer.getInt();
                ReusableBuffer view = null;
                try {
                    int bufferPos = buffer.position();
                    int pos = bufferPos + length;
                   
                    // prepare view buffer
                    view = buffer.createViewBuffer();
                    view.position(bufferPos);
                    view.limit(pos);
                   
                    // reset buffer position
                    buffer.position(pos);
                   
                    return InsertRecordGroup.deserialize(view);
View Full Code Here

            }
        };
       
        for (int i = 0; i < 100; i++) {
            String pl = "Entry " + (i + 1);
            ReusableBuffer plb = ReusableBuffer.wrap(pl.getBytes());
            l.append(new LogEntry(plb, sl, LogEntry.PAYLOAD_TYPE_INSERT));
        }
        synchronized (count) {
            if (count.get() < 100)
                count.wait(1000);
        }
       
        try {
            l.lock();
            l.switchLogFile(false);
        } finally {
            l.unlock();
        }
       
        for (int i = 0; i < 100; i++) {
            String pl = "Entry " + (i + 100 + 1);
            ReusableBuffer plb = ReusableBuffer.wrap(pl.getBytes());
            l.append(new LogEntry(plb, sl, LogEntry.PAYLOAD_TYPE_INSERT));
        }
       
        synchronized (count) {
            if (count.get() < 200)
View Full Code Here

TOP

Related Classes of org.xtreemfs.foundation.buffer.ReusableBuffer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.