Example #1
0
        public void OnMakeRootAgent(ScenePresence agent)
        {
            UUID regionUUID = GetRegionUUIDFromHandle(agent.Scene.RegionInfo.RegionHandle);

            lock (m_sessions)
            {
                if (!m_sessions.ContainsKey(agent.UUID))
                {
                    UserSessionData usd = UserSessionUtil.newUserSessionData();

                    UserSessionID uid = new UserSessionID();
                    uid.name_f       = agent.Firstname;
                    uid.name_l       = agent.Lastname;
                    uid.region_id    = regionUUID;
                    uid.session_id   = agent.ControllingClient.SessionId;
                    uid.session_data = usd;

                    m_sessions.Add(agent.UUID, uid);
                }
                else
                {
                    UserSessionID uid = m_sessions[agent.UUID];
                    uid.region_id          = regionUUID;
                    uid.session_id         = agent.ControllingClient.SessionId;
                    m_sessions[agent.UUID] = uid;
                }
            }
        }
Example #2
0
        private void OnMakeRootAgent(ScenePresence agent)
        {
            lock (m_sessions)
            {
                UserSessionID uid;

                if (!m_sessions.ContainsKey(agent.UUID))
                {
                    UserSessionData usd = UserSessionUtil.newUserSessionData();
                    uid              = new UserSessionID();
                    uid.name_f       = agent.Firstname;
                    uid.name_l       = agent.Lastname;
                    uid.session_data = usd;

                    m_sessions.Add(agent.UUID, uid);
                }
                else
                {
                    uid = m_sessions[agent.UUID];
                }

                uid.region_id  = agent.Scene.RegionInfo.RegionID;
                uid.session_id = agent.ControllingClient.SessionId;
            }
        }
Example #3
0
        private void OnMakeRootAgent(ScenePresence agent)
        {
//            m_log.DebugFormat(
//                "[WEB STATS MODULE]: Looking for session {0} for {1} in {2}",
//                agent.ControllingClient.SessionId, agent.Name, agent.Scene.Name);

            lock (m_sessions)
            {
                UserSession uid;

                if (!m_sessions.ContainsKey(agent.UUID))
                {
                    UserSessionData usd = UserSessionUtil.newUserSessionData();
                    uid              = new UserSession();
                    uid.name_f       = agent.Firstname;
                    uid.name_l       = agent.Lastname;
                    uid.session_data = usd;

                    m_sessions.Add(agent.UUID, uid);
                }
                else
                {
                    uid = m_sessions[agent.UUID];
                }

                uid.region_id  = agent.Scene.RegionInfo.RegionID;
                uid.session_id = agent.ControllingClient.SessionId;
            }
        }
Example #4
0
        private UserSessionID ParseViewerStats(string request, UUID agentID)
        {
            UserSessionID   uid = new UserSessionID();
            UserSessionData usd;
            OSD             message = OSDParser.DeserializeLLSDXml(request);
            OSDMap          mmap;

            lock (m_sessions)
            {
                if (agentID != UUID.Zero)
                {
                    if (!m_sessions.ContainsKey(agentID))
                    {
                        m_log.WarnFormat("[WEB STATS MODULE]: no session for stat disclosure for agent {0}", agentID);
                        return(new UserSessionID());
                    }
                    uid = m_sessions[agentID];
                }
                else
                {
                    // parse through the beginning to locate the session
                    if (message.Type != OSDType.Map)
                    {
                        return(new UserSessionID());
                    }

                    mmap = (OSDMap)message;
                    {
                        UUID sessionID = mmap["session_id"].AsUUID();

                        if (sessionID == UUID.Zero)
                        {
                            return(new UserSessionID());
                        }


                        // search through each session looking for the owner
                        foreach (UUID usersessionid in m_sessions.Keys)
                        {
                            // got it!
                            if (m_sessions[usersessionid].session_id == sessionID)
                            {
                                agentID = usersessionid;
                                uid     = m_sessions[usersessionid];
                                break;
                            }
                        }

                        // can't find a session
                        if (agentID == UUID.Zero)
                        {
                            return(new UserSessionID());
                        }
                    }
                }
            }

            usd = uid.session_data;

            if (message.Type != OSDType.Map)
            {
                return(new UserSessionID());
            }

            mmap = (OSDMap)message;
            {
                if (mmap["agent"].Type != OSDType.Map)
                {
                    return(new UserSessionID());
                }
                OSDMap agent_map = (OSDMap)mmap["agent"];
                usd.agent_id        = agentID;
                usd.name_f          = uid.name_f;
                usd.name_l          = uid.name_l;
                usd.region_id       = uid.region_id;
                usd.a_language      = agent_map["language"].AsString();
                usd.mem_use         = (float)agent_map["mem_use"].AsReal();
                usd.meters_traveled = (float)agent_map["meters_traveled"].AsReal();
                usd.regions_visited = agent_map["regions_visited"].AsInteger();
                usd.run_time        = (float)agent_map["run_time"].AsReal();
                usd.start_time      = (float)agent_map["start_time"].AsReal();
                usd.client_version  = agent_map["version"].AsString();

                UserSessionUtil.UpdateMultiItems(ref usd, agent_map["agents_in_view"].AsInteger(),
                                                 (float)agent_map["ping"].AsReal(),
                                                 (float)agent_map["sim_fps"].AsReal(),
                                                 (float)agent_map["fps"].AsReal());

                if (mmap["downloads"].Type != OSDType.Map)
                {
                    return(new UserSessionID());
                }
                OSDMap downloads_map = (OSDMap)mmap["downloads"];
                usd.d_object_kb  = (float)downloads_map["object_kbytes"].AsReal();
                usd.d_texture_kb = (float)downloads_map["texture_kbytes"].AsReal();
                usd.d_world_kb   = (float)downloads_map["workd_kbytes"].AsReal();


                usd.session_id = mmap["session_id"].AsUUID();

                if (mmap["system"].Type != OSDType.Map)
                {
                    return(new UserSessionID());
                }
                OSDMap system_map = (OSDMap)mmap["system"];

                usd.s_cpu = system_map["cpu"].AsString();
                usd.s_gpu = system_map["gpu"].AsString();
                usd.s_os  = system_map["os"].AsString();
                usd.s_ram = system_map["ram"].AsInteger();

                if (mmap["stats"].Type != OSDType.Map)
                {
                    return(new UserSessionID());
                }

                OSDMap stats_map = (OSDMap)mmap["stats"];
                {
                    if (stats_map["failures"].Type != OSDType.Map)
                    {
                        return(new UserSessionID());
                    }
                    OSDMap stats_failures = (OSDMap)stats_map["failures"];
                    usd.f_dropped        = stats_failures["dropped"].AsInteger();
                    usd.f_failed_resends = stats_failures["failed_resends"].AsInteger();
                    usd.f_invalid        = stats_failures["invalid"].AsInteger();
                    usd.f_resent         = stats_failures["resent"].AsInteger();
                    usd.f_send_packet    = stats_failures["send_packet"].AsInteger();

                    if (stats_map["net"].Type != OSDType.Map)
                    {
                        return(new UserSessionID());
                    }
                    OSDMap stats_net = (OSDMap)stats_map["net"];
                    {
                        if (stats_net["in"].Type != OSDType.Map)
                        {
                            return(new UserSessionID());
                        }

                        OSDMap net_in = (OSDMap)stats_net["in"];
                        usd.n_in_kb = (float)net_in["kbytes"].AsReal();
                        usd.n_in_pk = net_in["packets"].AsInteger();

                        if (stats_net["out"].Type != OSDType.Map)
                        {
                            return(new UserSessionID());
                        }
                        OSDMap net_out = (OSDMap)stats_net["out"];

                        usd.n_out_kb = (float)net_out["kbytes"].AsReal();
                        usd.n_out_pk = net_out["packets"].AsInteger();
                    }
                }
            }

            uid.session_data    = usd;
            m_sessions[agentID] = uid;
            return(uid);
        }