Esempio n. 1
0
    public async Task <ImprovedInstantMessageMessage> SendInstantMessage(bool isFromGroup, Guid toAgentId, UInt32 parentEstateId, DialogType dialogType, Guid id, string message, byte[] binaryBucket)
    {
        Guid       agentId       = Session.Instance.AgentId;
        Guid       sessionId     = Session.Instance.SessionId;
        Guid       regionId      = Guid.Empty;   // TODO: Should I ever specify this?
        Vector3    position      = Vector3.zero; // TODO: Should I ever specify this?
        OnlineMode onlineMode    = OnlineMode.Online;
        UInt32     timestamp     = 0;            // TODO: Tests show this as 0
        string     fromAgentName = Agent.CurrentPlayer.DisplayName;

        ImprovedInstantMessageMessage msg = new ImprovedInstantMessageMessage(agentId,
                                                                              sessionId,
                                                                              isFromGroup,
                                                                              toAgentId,
                                                                              parentEstateId,
                                                                              regionId,
                                                                              position,
                                                                              onlineMode,
                                                                              dialogType,
                                                                              id,
                                                                              timestamp,
                                                                              fromAgentName,
                                                                              message,
                                                                              binaryBucket);

        await SendReliable(msg);

        return(msg);
    }
Esempio n. 2
0
        public InstantMessage(ImprovedInstantMessageMessage message)
        {
            AgentId        = message.AgentId;
            SessionId      = message.SessionId;
            IsFromGroup    = message.IsFromGroup;
            ToAgentId      = message.ToAgentId;
            ParentEstateId = message.ParentEstateId;
            RegionId       = message.RegionId;
            Position       = message.Position;
            OnlineMode     = message.OnlineMode;
            DialogType     = message.DialogType;
            Id             = message.Id;
            MessageText    = message.MessageText;
            SenderName     = message.FromAgentName;
            BinaryBucket   = message.BinaryBucket;

            Timestamp = DateTimeOffset.Now;
        }
Esempio n. 3
0
        protected void OnImprovedInstantMessageMessage(ImprovedInstantMessageMessage message)
        {
            Guid dialogId = message.Id;

            if (InstantMessageLogs.ContainsKey(dialogId) == false)
            {
                Logger.LogInfo("LogManager.OnImprovedInstantMessageMessage", $"Adding message log for {message.FromAgentName}. Dialog Id={dialogId}");
                InstantMessageLogs.Add(dialogId,
                                       new MessageLog(
                                           message.FromAgentName,
                                           async s =>
                {
                    if (Agent.CurrentPlayer?.Region?.Circuit == null)
                    {
                        return;
                    }

                    ImprovedInstantMessageMessage msg = await Agent.CurrentPlayer.Region.Circuit.SendInstantMessage(
                        false,
                        message.AgentId,
                        message.ParentEstateId,     // TODO: Do I ever need to specify this?
                        DialogType.NothingSpecial,
                        message.Id,
                        s,
                        null);

                    // Pretend that we received this message to get it into the log:
                    OnImprovedInstantMessageMessage(msg);
                })
                                       );
                OnNewInstantMessageSession?.Invoke(dialogId, message.FromAgentName, InstantMessageLogs[dialogId]);
            }

            MessageLog log = InstantMessageLogs[dialogId];

            Logger.LogDebug("LogManager.OnImprovedInstantMessageMessage", $"{message.DialogType}: \"{message.MessageText}\"");
            log.AddMessage(new InstantMessage(message));
        }