OpenMetaverse.AgentManager.InstantMessageHandler C# (CSharp) Method

InstantMessageHandler() private method

Take an incoming ImprovedInstantMessage packet, auto-parse, and if OnInstantMessage is defined call that with the appropriate arguments
private InstantMessageHandler ( Packet packet, Simulator simulator ) : void
packet OpenMetaverse.Packets.Packet Incoming ImprovedInstantMessagePacket
simulator Simulator Unused
return void
        private void InstantMessageHandler(Packet packet, Simulator simulator)
        {
            if (packet.Type == PacketType.ImprovedInstantMessage)
            {
                ImprovedInstantMessagePacket im = (ImprovedInstantMessagePacket)packet;

                if (OnInstantMessage != null)
                {
                    InstantMessage message;
                    message.FromAgentID = im.AgentData.AgentID;
                    message.FromAgentName = Utils.BytesToString(im.MessageBlock.FromAgentName);
                    message.ToAgentID = im.MessageBlock.ToAgentID;
                    message.ParentEstateID = im.MessageBlock.ParentEstateID;
                    message.RegionID = im.MessageBlock.RegionID;
                    message.Position = im.MessageBlock.Position;
                    message.Dialog = (InstantMessageDialog)im.MessageBlock.Dialog;
                    message.GroupIM = im.MessageBlock.FromGroup;
                    message.IMSessionID = im.MessageBlock.ID;
                    message.Timestamp = new DateTime(im.MessageBlock.Timestamp);
                    message.Message = Utils.BytesToString(im.MessageBlock.Message);
                    message.Offline = (InstantMessageOnline)im.MessageBlock.Offline;
                    message.BinaryBucket = im.MessageBlock.BinaryBucket;

                    try { OnInstantMessage(message, simulator); }
                    catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); }
                }
            }
        }