static internal unsafe int SendMessageEx(NativeQueue <IPCQueuedMessage> .Concurrent queue, NetworkEndPoint local, network_iovec *iov, int iov_len, ref NetworkEndPoint address) { #if ENABLE_UNITY_COLLECTIONS_CHECKS if (address.Family != NetworkFamily.IPC || local.Family != NetworkFamily.IPC || address.nbo_port == 0 || local.nbo_port == 0) { throw new InvalidOperationException("Sending data over IPC requires both local and remote EndPoint to be valid IPC EndPoints"); } #endif var data = new IPCData(); data.from = local.ipc_handle; data.length = 0; for (int i = 0; i < iov_len; i++) { #if ENABLE_UNITY_COLLECTIONS_CHECKS if (data.length + iov[i].len >= NetworkParameterConstants.MTU) { throw new ArgumentOutOfRangeException("Cannot send more data than an MTU"); } #endif UnsafeUtility.MemCpy(data.data + data.length, iov[i].buf, iov[i].len); data.length += iov[i].len; } queue.Enqueue(new IPCQueuedMessage { dest = address.ipc_handle, data = data }); return(data.length); }
public IPCData GetLayout() { var ipcdata = new IPCData(IPCIdentifier) { { "layout", layout } }; return(ipcdata); }
public Action <T> DataReporter <T>(String name) { var ipcData = new IPCData("Menu"); return(data => { ipcData[name] = data; Manager.SendIPC(Source, ipcData); }); }
public IPCData GetData() { var menuData = ReadSettings(); var ipcdata = new IPCData(IPCIdentifier) { { "data", menuData } }; return(ipcdata); }
public void HandleIPCData(IPCData data) { if (data.ContainsKey("Message")) { Console.WriteLine($"Message received. Contents: {data.Get<string>("Message")}"); var ipcData = new IPCData("Menu"); ipcData["Message"] = "Message Recieved"; _manager.SendIPC(data.SourceIdentifier, ipcData); } }
public IPCData InitialMessage() { var menuData = ReadSettings(); var ipcdata = new IPCData(IPCIdentifier) { { "title", MenuTitle }, { "button", MenuButton }, { "layout", layout }, { "data", menuData } }; return(ipcdata); }
internal unsafe void Update(NetworkInterfaceEndPoint local, NativeQueue <QueuedSendMessage> queue) { QueuedSendMessage val; while (queue.TryDequeue(out val)) { var ipcData = new IPCData(); UnsafeUtility.MemCpy(ipcData.data, val.Data, val.DataLength); ipcData.length = val.DataLength; ipcData.from = *(int *)local.data; m_IPCQueue.Enqueue(*(int *)val.Dest.data, ipcData); } }
public void HandleIPCData(IPCData data) { if (data.TryGetValue("content/header", out object header)) { if ((string)header == "register/request") { Plugin.IPCPluginList.Add(data.SourceIdentifier); Plugin.Manager.SendIPC((string)header, new IPCData(Plugin.IPCIdentifier) { { "content/header", "register/success" } }); } } }
public void SendIPC(string ipcIdentifierTo, IPCData data) { var pluginHost = PluginRegistry.GetByIPCIdentifier(ipcIdentifierTo); if (pluginHost != null) { if (!pluginHost.IsIPCEnabled) { Log.Error($"Plugin with IPC ID '{data.SourceIdentifier}' tried to send IPCData to '{ipcIdentifierTo}', but the target is not IPC enabled."); return; } (pluginHost.Instance as IIPCEnabled).HandleIPCData(data); } }
public unsafe int SendTo(NetworkEndPoint local, void *slice, int length, NetworkEndPoint remote) { Assert.IsTrue(remote.family == NetworkFamily.IPC); Assert.IsTrue(local.family == NetworkFamily.IPC); Assert.IsTrue(remote.port != 0); Assert.IsTrue(local.port != 0); var data = new IPCData(); data.from = *(int *)local.address; data.length = length; UnsafeUtility.MemCpy(data.data, slice, length); m_IPCQueue.Enqueue(*(int *)remote.address, data); return(length); }
public static void OnMessageReceived(ChatMessage m) { MessageQueue.Queue.Enqueue(m); if (MessageQueue.Queue.Count > 100) { MessageQueue.Queue.Dequeue(); } string message = $"{m.DisplayName}: {m.Message}"; Plugin.Log.Info(message); foreach (string plugin in Plugin.IPCPluginList) { IPCData data = new IPCData(Plugin.IPCIdentifier) { { "content/header", "data/message" }, { "Bits", m.Bits }, { "BitsInDollars", m.BitsInDollars }, { "Badges", m.Badges }, { "BotUsername", m.BotUsername }, { "Channel", m.Channel }, { "CheerBadge", m.CheerBadge }, { "Color", m.Color }, { "ColorHex", m.ColorHex }, { "DisplayName", m.DisplayName }, { "EmoteReplacedMessage", m.EmoteReplacedMessage }, { "EmoteSet", m.EmoteSet }, { "Id", m.Id }, { "IsBroadcaster", m.IsBroadcaster }, { "IsMe", m.IsMe }, { "IsModerator", m.IsModerator }, { "IsSubscriber", m.IsSubscriber }, { "IsTurbo", m.IsTurbo }, { "Message", m.Message }, { "Noisy", m.Noisy }, { "RawIrcMessage", m.RawIrcMessage }, { "SubscribedMonthCount", m.SubscribedMonthCount }, { "UserId", m.UserId }, { "Username", m.Username }, { "UserType", m.UserType } }; Plugin.Manager.SendIPC(plugin, data); } }