private void enqueuePluginInteropMessage(KLFCommon.PluginInteropMessageID id, byte[] data)
{
int msg_data_length = 0;
if (data != null)
msg_data_length = data.Length;
byte[] message_bytes = new byte[KLFCommon.INTEROP_MSG_HEADER_LENGTH + msg_data_length];
KLFCommon.intToBytes((int)id).CopyTo(message_bytes, 0);
KLFCommon.intToBytes(msg_data_length).CopyTo(message_bytes, 4);
if (data != null)
data.CopyTo(message_bytes, KLFCommon.INTEROP_MSG_HEADER_LENGTH);
interopOutQueue.Enqueue(message_bytes);
//Enforce max queue size
while (interopOutQueue.Count > INTEROP_MAX_QUEUE_SIZE)
interopOutQueue.Dequeue();
}