/// <summary> /// Signal an IPC event to a server's IPC event queue. /// </summary> /// <param name="SourcePlayerId">Supplies the source player id for the /// event originator.</param> /// <param name="SourceServerId">Supplies the source server id for the /// event originator.</param> /// <param name="DestinationPlayerId">Supplies the destination player /// id for event routing.</param> /// <param name="DestinationServerId">Supplies the destination server /// id for event routing.</param> /// <param name="EventType">Supplies the event type code.</param> /// <param name="EventText">Supplies the event data, which must be less /// than ACR_SERVER_IPC_MAX_EVENT_LENGTH bytes.</param> private void SignalIPCEvent(int SourcePlayerId, int SourceServerId, int DestinationPlayerId, int DestinationServerId, int EventType, string EventText) { if (EventText.Length > ACR_SERVER_IPC_MAX_EVENT_LENGTH) throw new ApplicationException("IPC event text too long:" + EventText); GameWorldManager.IPC_EVENT Event = new GameWorldManager.IPC_EVENT(); Event.SourcePlayerId = SourcePlayerId; Event.SourceServerId = SourceServerId; Event.DestinationPlayerId = DestinationPlayerId; Event.DestinationServerId = DestinationServerId; Event.EventType = EventType; Event.EventText = EventText; lock (WorldManager) { WorldManager.SignalIPCEvent(Event); } WorldManager.SignalIPCEventWakeup(); }