This structure contains the raw data for an IPC event queue entry.
        /// <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();
        }