add encodedpayloadsize

This commit is contained in:
stubbfel
2013-10-24 10:44:27 +02:00
parent 7e6a25af8e
commit 6244a9f0cb
2 changed files with 29 additions and 3 deletions

View File

@@ -20,6 +20,10 @@ namespace ndefpclib.records
/// <summary> Type of the message. </summary>
private MsgType msgType;
/// <summary> Size of the encoded payload. </summary>
private int encodedPayloadSize = -1;
#endregion
#region Constructors
@@ -35,7 +39,7 @@ namespace ndefpclib.records
/// <param name="array"> The array. </param>
/// <param name="headerSize"> The size of the header. </param>
/// <param name="index"> (Optional) zero-based index of the. </param>
public NDEFRecord(byte[] array, int headerSize,int index = 0)
public NDEFRecord(byte[] array, int headerSize, int index = 0)
{
this.msgType = MsgType.GetType(array, index);
this.HeaderSize = headerSize;
@@ -145,7 +149,29 @@ namespace ndefpclib.records
{
get
{
return this.HeaderSize + this.Payload.Length + this.PayloadPraefix.Length;
return this.HeaderSize + this.EncodedPayloadSize + this.PayloadPraefix.Length;
}
}
/// <summary> Gets the size of the encoded payload. </summary>
/// <value> The size of the encoded payload. </value>
public int EncodedPayloadSize
{
get
{
if (this.encodedPayloadSize >= 0)
{
return this.encodedPayloadSize;
}
else if (this.msgType != null && this.encodedPayloadSize < 0)
{
this.encodedPayloadSize = this.msgType.Encoder.GetByteCount(this.Payload);
return this.encodedPayloadSize;
}
else
{
return this.Payload.Length;
}
}
}

View File

@@ -56,7 +56,7 @@ namespace ndefpclib.records
array[0] = this.FormatFlags;
array[1] = NDEFRecord.TypeSize;
array[2] = (byte)(Payload.Length + this.PayloadPraefix.Length);
array[2] = (byte)(this.EncodedPayloadSize + this.PayloadPraefix.Length);
array[3] = (byte)this.Type;
int i = this.HeaderSize;