Package org.cipango.diameter.io

Source Code of org.cipango.diameter.io.AbstractCodec

package org.cipango.diameter.io;

import org.eclipse.jetty.io.Buffer;
import org.eclipse.jetty.io.ByteArrayBuffer;

public abstract class AbstractCodec<T> implements DiameterCodec<T>
{
  public Buffer ensureSpace(Buffer buffer, int space)
  {
    if (buffer.space() < space)
    {
      while (space < (buffer.capacity() / 2) && space < 128)
        space *= 2;
      ByteArrayBuffer larger = new ByteArrayBuffer(buffer.capacity() + space);
      larger.put(buffer);
      //larger.setMarkIndex(buffer.markIndex());
      larger.setGetIndex(buffer.getIndex());
      return larger;
    }
    return buffer;
  }
 
  public int getInt(Buffer buffer)
  {
    return (buffer.get() & 0xff) << 24
      | (buffer.get() & 0xff) << 16
      | (buffer.get() & 0xff) << 8
      | (buffer.get() & 0xff);
  }
 
  public Buffer putInt(Buffer buffer, int value)
  {
    buffer.put((byte)  (value >> 24 & 0xff));
    buffer.put((byte)  (value >> 16 & 0xff));
    buffer.put((byte)  (value >> 8 & 0xff));
    buffer.put((byte)  (value & 0xff));
    return buffer;
 
 
  public Buffer pokeInt(Buffer buffer, int index, int value)
  {
    buffer.poke(index, (byte)  (value >> 24 & 0xff));
    buffer.poke(index+1, (byte)  (value >> 16 & 0xff));
    buffer.poke(index+2, (byte)  (value >> 8 & 0xff));
    buffer.poke(index+3, (byte)  (value & 0xff));
    return buffer;
  }
}
TOP

Related Classes of org.cipango.diameter.io.AbstractCodec

TOP
Copyright © 2018 www.massapi.com. 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.