internal static Task <ServerMessage> SendDeviceMessage(ButtplugFFIMessageSorter aSorter, ButtplugFFIDeviceHandle aHandle, uint aDeviceIndex, FlatBufferBuilder aBuilder, DeviceMessageType aType, int aOffset) { DeviceMessage.StartDeviceMessage(aBuilder); DeviceMessage.AddMessageType(aBuilder, aType); DeviceMessage.AddMessage(aBuilder, aOffset); DeviceMessage.AddDeviceIndex(aBuilder, aDeviceIndex); var task = aSorter.PrepareClientMessage(aBuilder); var device_msg = DeviceMessage.EndDeviceMessage(aBuilder); aBuilder.Finish(device_msg.Value); var buf = aBuilder.SizedByteArray(); ButtplugFFICalls.buttplug_parse_device_message(aHandle, buf, buf.Length); return(task); }