internal static Task <ButtplugFFIServerMessage> SendConnectLocal( ButtplugFFIMessageSorter aSorter, ButtplugFFIClientHandle aHandle, string aServerName, uint aMaxPingTime, bool aAllowRawMessages, string aDeviceConfigJSON, string aUserDeviceConfigJSON, ushort aDeviceCommManagerTypes, ButtplugCallback aCallback, IntPtr aCallbackCtx) { var msg = new ClientMessage(); msg.Message = new ClientMessage.Types.FFIMessage(); msg.Message.ConnectLocal = new ClientMessage.Types.ConnectLocal { ServerName = aServerName, MaxPingTime = aMaxPingTime, AllowRawMessages = aAllowRawMessages, DeviceConfigurationJson = aDeviceConfigJSON ?? "", UserDeviceConfigurationJson = aUserDeviceConfigJSON ?? "", CommManagerTypes = aDeviceCommManagerTypes }; return(SendClientMessage(aSorter, aHandle, msg, aCallback, aCallbackCtx)); }
internal static ButtplugFFIClientHandle SendCreateClient(string aClientName, ButtplugCallback aCallback) { var builder = new FlatBufferBuilder(1024); var client_name = builder.CreateString(aClientName); var create_client_msg = CreateClient.CreateCreateClient(builder, client_name); builder.Finish(create_client_msg.Value); var buf = builder.SizedByteArray(); return(ButtplugFFICalls.buttplug_create_client(aCallback, buf, buf.Length)); }
protected ButtplugClient(string aClientName, ButtplugCallback aCallback) { Name = aClientName; SorterCallbackDelegate = aCallback; var context = new WeakReference(this); var clientIndex = _clientCounter; // Since we can pass the handle, I don't *think* this needs to be pinned? _indexHandle = GCHandle.Alloc(clientIndex); _clientStorage.Add(_clientCounter, context); _clientHandle = ButtplugFFI.SendCreateClient(aClientName, SorterCallbackDelegate, GCHandle.ToIntPtr(_indexHandle)); }
/// <summary> /// Initializes a new instance of the <see cref="ButtplugClientDevice"/> class, using /// discrete parameters. /// </summary> /// <param name="aIndex">The device index.</param> /// <param name="aName">The device name.</param> /// <param name="aMessages">The device allowed message list, with corresponding attributes.</param> internal ButtplugClientDevice(ButtplugFFIMessageSorter aSorter, ButtplugFFIDeviceHandle aHandle, uint aIndex, string aName, Dictionary <ServerMessage.Types.MessageAttributeType, ButtplugMessageAttributes> aAllowedMessages, ButtplugCallback aCallback, IntPtr aCallbackCtx) { Sorter = aSorter; Handle = aHandle; Index = aIndex; Name = aName; AllowedMessages = aAllowedMessages; SorterCallback = aCallback; SorterCallbackCtx = aCallbackCtx; }
/// <summary> /// Initializes a new instance of the <see cref="ButtplugClientDevice"/> class, using /// discrete parameters. /// </summary> /// <param name="aIndex">The device index.</param> /// <param name="aName">The device name.</param> /// <param name="aAllowedMessages">The device allowed message list, with corresponding attributes.</param> internal ButtplugClientDevice(ButtplugFFIMessageSorter aSorter, ButtplugFFIDeviceHandle aHandle, uint aIndex, string aName, Dictionary <ServerMessage.Types.MessageAttributeType, ButtplugMessageAttributes> aAllowedMessages, ButtplugCallback aCallback, IntPtr aCallbackCtx) { _disposeLock = new object(); _disposed = false; _sorter = aSorter; _handle = aHandle; Index = aIndex; Name = aName; AllowedMessages = aAllowedMessages; _sorterCallback = aCallback; _sorterCallbackCtx = aCallbackCtx; }
protected ButtplugClient(string aClientName, ButtplugCallback aCallback) { Name = aClientName; _sorterCallbackDelegate = aCallback; _disposeLock = new object(); _messageSorter = new ButtplugFFIMessageSorter(); _devices = new Dictionary <uint, ButtplugClientDevice>(); var context = new WeakReference(this); var clientIndex = _clientCounter; _clientCounter += 1; // Since we can pass the handle, I don't *think* this needs to be pinned? _indexHandle = GCHandle.Alloc(clientIndex); _clientStorage.Add(clientIndex, context); _clientHandle = ButtplugFFI.SendCreateClient(aClientName, _sorterCallbackDelegate, GCHandle.ToIntPtr(_indexHandle)); }
internal static extern void buttplug_device_protobuf_message(ButtplugFFIDeviceHandle client_handle, byte[] buf, int buf_length, ButtplugCallback callback, IntPtr ctx);
internal static extern ButtplugFFIClientHandle buttplug_create_protobuf_client(string client_name, ButtplugCallback callback, IntPtr ctx);
internal static Task <ButtplugFFIServerMessage> SendVibrateCmd(ButtplugFFIMessageSorter aSorter, ButtplugFFIDeviceHandle aHandle, uint aDeviceIndex, Dictionary <uint, double> aSpeeds, ButtplugCallback aCallback, IntPtr aCallbackCtx) { var msg = new DeviceMessage(); msg.Message = new DeviceMessage.Types.FFIMessage(); var command_list = new List <DeviceMessage.Types.VibrateComponent>(); foreach (var pair in aSpeeds) { command_list.Add(new DeviceMessage.Types.VibrateComponent { Index = pair.Key, Speed = pair.Value, }); } msg.Index = aDeviceIndex; var vibrate_cmd = new DeviceMessage.Types.VibrateCmd(); vibrate_cmd.Speeds.Add(command_list); msg.Message.VibrateCmd = vibrate_cmd; return(SendDeviceMessage(aSorter, aHandle, msg, aCallback, aCallbackCtx)); }
internal static Task <ButtplugFFIServerMessage> SendPing(ButtplugFFIMessageSorter aSorter, ButtplugFFIClientHandle aHandle, ButtplugCallback aCallback, IntPtr aCallbackCtx) { var msg = new ClientMessage(); msg.Message = new ClientMessage.Types.FFIMessage(); msg.Message.Ping = new ClientMessage.Types.Ping { }; return(SendClientMessage(aSorter, aHandle, msg, aCallback, aCallbackCtx)); }
internal static Task <ButtplugFFIServerMessage> SendConnectWebsocket(ButtplugFFIMessageSorter aSorter, ButtplugFFIClientHandle aHandle, string aAddress, bool aIgnoreCert, ButtplugCallback aCallback, IntPtr aCallbackCtx) { var msg = new ClientMessage(); msg.Message = new ClientMessage.Types.FFIMessage(); msg.Message.ConnectWebsocket = new ClientMessage.Types.ConnectWebsocket { Address = aAddress, BypassCertVerification = aIgnoreCert, }; return(SendClientMessage(aSorter, aHandle, msg, aCallback, aCallbackCtx)); }
internal static ButtplugFFIClientHandle SendCreateClient(string aClientName, ButtplugCallback aCallback) { return(ButtplugFFICalls.buttplug_create_client(aCallback, aClientName)); }
internal static Task <ButtplugFFIServerMessage> SendStopAllDevices(ButtplugFFIMessageSorter aSorter, ButtplugFFIClientHandle aHandle, ButtplugCallback aCallback, IntPtr aCallbackCtx) { var msg = new ClientMessage { Message = new ClientMessage.Types.FFIMessage { StopAllDevices = new ClientMessage.Types.StopAllDevices() } }; return(SendClientMessage(aSorter, aHandle, msg, aCallback, aCallbackCtx)); }
internal static Task <ButtplugFFIServerMessage> SendDeviceMessage(ButtplugFFIMessageSorter aSorter, ButtplugFFIDeviceHandle aHandle, DeviceMessage aMsg, ButtplugCallback aCallback, IntPtr aCallbackCtx) { var task = aSorter.PrepareDeviceMessage(aMsg); var buf = aMsg.ToByteArray(); ButtplugFFICalls.ButtplugDeviceProtobufMessage(aHandle, buf, buf.Length, aCallback, aCallbackCtx); return(task); }
internal static ButtplugFFIClientHandle SendCreateClient(string aClientName, ButtplugCallback aCallback, IntPtr aCallbackCtx) { return(ButtplugFFICalls.buttplug_create_protobuf_client(aClientName, aCallback, aCallbackCtx)); }
internal static extern ButtplugFFIClientHandle ButtplugCreateProtobufClient(string client_name, ButtplugCallback callback, IntPtr ctx);
internal static extern void ButtplugClientProtobufMessage(ButtplugFFIClientHandle client_handle, byte[] buf, int buf_length, ButtplugCallback callback, IntPtr ctx);
internal static extern ButtplugFFIClientHandle buttplug_create_client(ButtplugCallback callback, byte[] buf, int buf_length);
internal static Task <ButtplugFFIServerMessage> SendClientMessage(ButtplugFFIMessageSorter aSorter, ButtplugFFIClientHandle aHandle, ClientMessage aMsg, ButtplugCallback aCallback, IntPtr aCallbackCtx) { var task = aSorter.PrepareClientMessage(aMsg); var buf = aMsg.ToByteArray(); ButtplugFFICalls.buttplug_client_protobuf_message(aHandle, buf, buf.Length, aCallback, aCallbackCtx); return(task); }
internal static extern ButtplugFFIClientHandle buttplug_create_client(ButtplugCallback callback, string client_name);
public ButtplugClient(string aClientName) { Name = aClientName; SorterCallbackDelegate = SorterCallback; _clientHandle = ButtplugFFI.SendCreateClient(aClientName, SorterCallbackDelegate); }
internal static Task <ButtplugFFIServerMessage> SendDisconnect(ButtplugFFIMessageSorter aSorter, ButtplugFFIClientHandle aHandle, ButtplugCallback aCallback, IntPtr aCallbackCtx) { var msg = new ClientMessage { Message = new ClientMessage.Types.FFIMessage { Disconnect = new ClientMessage.Types.Disconnect() } }; return(SendClientMessage(aSorter, aHandle, msg, aCallback, aCallbackCtx)); }