Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(tu_stats_agent).
- -include("client_agents.hrl").
- -include("ejabberd_c2s.hrl").
- -include("ejabberd_session.hrl").
- -record(agent, {web = 0,
- j2me_app = 0,
- blackberry_app = 0,
- android_app = 0 ,
- iphone_app = 0,
- blackberry_msn = 0,
- android_msn = 0,
- iphone_msn = 0,
- wp7_msn = 0,
- client_apps = 0,
- other = 0
- }).
- -export([domain_agents/0,
- instance_agents/0,
- instance_agents/1]).
- domain_agents() ->
- Domain = lists:last(ejabberd_router:local_domains()),
- Sessions = ejabberd_sm_db:domain_sessions(Domain),
- result(count(Sessions, #agent{})).
- instance_agents() ->
- instance_agents(node()).
- instance_agents(Node) ->
- Sessions = ejabberd_sm_db:node_sessions(Node),
- result(count(Sessions, #agent{})).
- result(AgentRecord) ->
- [
- {j2me_app, AgentRecord#agent.j2me_app},
- {blackberry_app, AgentRecord#agent.blackberry_app},
- {android_app, AgentRecord#agent.android_app},
- {iphone_app, AgentRecord#agent.iphone_app},
- {blackberry_msn, AgentRecord#agent.blackberry_msn},
- {android_msn, AgentRecord#agent.android_msn},
- {iphone_msn, AgentRecord#agent.iphone_msn},
- {wp7_msn, AgentRecord#agent.wp7_msn},
- {client_apps, AgentRecord#agent.client_apps},
- {other, AgentRecord#agent.other},
- {total_web, AgentRecord#agent.web},
- {total_old_mobiles, (AgentRecord#agent.j2me_app +
- AgentRecord#agent.blackberry_app +
- AgentRecord#agent.android_app +
- AgentRecord#agent.iphone_app)},
- {total_messenger, (AgentRecord#agent.blackberry_msn +
- AgentRecord#agent.android_msn +
- AgentRecord#agent.iphone_msn +
- AgentRecord#agent.wp7_msn)}
- ].
- count(Sessions, AccIn) ->
- lists:foldr(fun(Session, Acc) ->
- try
- Pid = element(2, Session#session.sid),
- State = ejabberd_c2s:state(Pid),
- Agent = State#state.agent,
- add_agent(Agent, Acc)
- catch
- _:_ ->
- Acc
- end
- end, AccIn, Sessions).
- add_agent(Agent, #agent{} = AgentRecord) ->
- OldValue = element(Agent, AgentRecord),
- case Agent of
- 1 ->
- AgentRecord#agent{web = AgentRecord#agent.web + 1};
- 2 ->
- AgentRecord#agent{j2me_app = AgentRecord#agent.j2me_app + 1};
- 3 ->
- AgentRecord#agent{blackberry_app = AgentRecord#agent.blackberry_app + 1};
- 4 ->
- AgentRecord#agent{android_app = AgentRecord#agent.android_app + 1};
- 5 ->
- AgentRecord#agent{iphone_app = AgentRecord#agent.iphone_app + 1};
- 6 ->
- AgentRecord#agent{blackberry_msn = AgentRecord#agent.blackberry_msn + 1};
- 7 ->
- AgentRecord#agent{android_msn = AgentRecord#agent.android_msn + 1};
- 8 ->
- AgentRecord#agent{iphone_msn = AgentRecord#agent.iphone_msn + 1};
- 9 ->
- AgentRecord#agent{wp7_msn = AgentRecord#agent.wp7_msn + 1};
- 10 ->
- AgentRecord#agent{client_apps = AgentRecord#agent.client_apps + 1};
- _ ->
- AgentRecord#agent{other = AgentRecord#agent.other + 1}
- end.
Add Comment
Please, Sign In to add comment