in proton-j/src/main/java/org/apache/qpid/proton/codec/impl/MapElement.java [131:190]
public int encode(ByteBuffer b)
{
int encodedSize = size();
int count = 0;
int size = 0;
Element elt = _first;
while(elt != null)
{
count++;
size += elt.size();
elt = elt.next();
}
if(encodedSize > b.remaining())
{
return 0;
}
else
{
if(isElementOfArray())
{
switch(((ArrayElement)parent()).constructorType())
{
case SMALL:
b.put((byte)(size+1));
b.put((byte)count);
break;
case LARGE:
b.putInt((size+4));
b.putInt(count);
}
}
else
{
if(size <= 254 && count <=255)
{
b.put((byte)0xc1);
b.put((byte)(size+1));
b.put((byte)count);
}
else
{
b.put((byte)0xd1);
b.putInt((size+4));
b.putInt(count);
}
}
elt = _first;
while(elt != null)
{
elt.encode(b);
elt = elt.next();
}
return encodedSize;
}
}