Ejemplo n.º 1
0
        public void OnMakeRootAgent(ScenePresence agent)
        {
            UUID regionUUID = GetRegionUUIDFromHandle(agent.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;
                }
            }
        }
Ejemplo n.º 2
0
        public 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.Warn("[VS]: no session for stat disclosure");
                        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;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Add/Update a user's stats in the database
        /// </summary>
        /// <param name="uid"></param>
        public void UpdateUserStats(UserSessionID uid)
        {
            if (uid.session_id == UUID.Zero)
            {
                return;
            }

            List <string> Keys   = new List <string>();
            List <object> Values = new List <object>();

            Keys.Add("session_id");
            Keys.Add("agent_id");
            Keys.Add("region_id");
            Keys.Add("last_updated");
            Keys.Add("remote_ip");
            Keys.Add("name_f");
            Keys.Add("name_l");
            Keys.Add("avg_agents_in_view");
            Keys.Add("min_agents_in_view");
            Keys.Add("max_agents_in_view");
            Keys.Add("mode_agents_in_view");
            Keys.Add("avg_fps");
            Keys.Add("min_fps");
            Keys.Add("max_fps");
            Keys.Add("mode_fps");
            Keys.Add("a_language");
            Keys.Add("mem_use");
            Keys.Add("meters_traveled");
            Keys.Add("avg_ping");
            Keys.Add("min_ping");
            Keys.Add("max_ping");
            Keys.Add("mode_ping");
            Keys.Add("regions_visited");
            Keys.Add("run_time");
            Keys.Add("avg_sim_fps");
            Keys.Add("min_sim_fps");
            Keys.Add("max_sim_fps");
            Keys.Add("mode_sim_fps");
            Keys.Add("start_time");
            Keys.Add("client_version");
            Keys.Add("s_cpu");
            Keys.Add("s_gpu");
            Keys.Add("s_os");
            Keys.Add("s_ram");
            Keys.Add("d_object_kb");
            Keys.Add("d_texture_kb");
            Keys.Add("n_in_kb");
            Keys.Add("n_in_pk");
            Keys.Add("n_out_kb");
            Keys.Add("n_out_pk");
            Keys.Add("f_dropped");
            Keys.Add("f_failed_resends");
            Keys.Add("f_invalid");
            Keys.Add("f_off_circuit");
            Keys.Add("f_resent");
            Keys.Add("f_send_packet");

            Values.Add(uid.session_data.session_id);
            Values.Add(uid.session_data.agent_id);
            Values.Add(uid.session_data.region_id);
            Values.Add(uid.session_data.last_updated);
            Values.Add(uid.session_data.remote_ip);
            Values.Add(uid.session_data.name_f);
            Values.Add(uid.session_data.name_l);
            Values.Add(uid.session_data.avg_agents_in_view);
            Values.Add(uid.session_data.min_agents_in_view);
            Values.Add(uid.session_data.max_agents_in_view);
            Values.Add(uid.session_data.mode_agents_in_view);
            Values.Add(uid.session_data.avg_fps);
            Values.Add(uid.session_data.min_fps);
            Values.Add(uid.session_data.max_fps);
            Values.Add(uid.session_data.mode_fps);
            Values.Add(uid.session_data.a_language);
            Values.Add(uid.session_data.mem_use);
            Values.Add(uid.session_data.meters_traveled);
            Values.Add(uid.session_data.avg_ping);
            Values.Add(uid.session_data.min_ping);
            Values.Add(uid.session_data.max_ping);
            Values.Add(uid.session_data.mode_ping);
            Values.Add(uid.session_data.regions_visited);
            Values.Add(uid.session_data.run_time);
            Values.Add(uid.session_data.avg_sim_fps);
            Values.Add(uid.session_data.min_sim_fps);
            Values.Add(uid.session_data.max_sim_fps);
            Values.Add(uid.session_data.mode_sim_fps);
            Values.Add(uid.session_data.start_time);
            Values.Add(uid.session_data.client_version);
            Values.Add(uid.session_data.s_cpu);
            Values.Add(uid.session_data.s_gpu);
            Values.Add(uid.session_data.s_os);
            Values.Add(uid.session_data.s_ram);
            Values.Add(uid.session_data.d_object_kb);
            Values.Add(uid.session_data.d_texture_kb);
            Values.Add(uid.session_data.n_in_kb);
            Values.Add(uid.session_data.n_in_pk);
            Values.Add(uid.session_data.n_out_kb);
            Values.Add(uid.session_data.n_out_pk);
            Values.Add(uid.session_data.f_dropped);
            Values.Add(uid.session_data.f_failed_resends);
            Values.Add(uid.session_data.f_invalid);
            Values.Add(uid.session_data.f_off_circuit);
            Values.Add(uid.session_data.f_resent);
            Values.Add(uid.session_data.f_send_packet);
            GD.Replace("stats_session_data", Keys.ToArray(), Values.ToArray());
        }