Guest User

Untitled

a guest
Sep 12th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 3.64 KB | None | 0 0
  1. -module(tu_stats_agent).
  2.  
  3. -include("client_agents.hrl").
  4. -include("ejabberd_c2s.hrl").
  5. -include("ejabberd_session.hrl").
  6.  
  7. -record(agent, {web = 0,
  8.                 j2me_app = 0,
  9.                 blackberry_app = 0,
  10.                 android_app = 0 ,
  11.                 iphone_app = 0,
  12.                 blackberry_msn = 0,
  13.                 android_msn = 0,
  14.                 iphone_msn = 0,
  15.                 wp7_msn = 0,
  16.                 client_apps = 0,
  17.                 other = 0
  18.                }).
  19.  
  20. -export([domain_agents/0,
  21.          instance_agents/0,
  22.          instance_agents/1]).
  23.  
  24. domain_agents() ->
  25.     Domain = lists:last(ejabberd_router:local_domains()),
  26.     Sessions = ejabberd_sm_db:domain_sessions(Domain),
  27.     result(count(Sessions, #agent{})).
  28.  
  29.  
  30. instance_agents() ->
  31.     instance_agents(node()).
  32.  
  33.  
  34. instance_agents(Node) ->
  35.     Sessions = ejabberd_sm_db:node_sessions(Node),
  36.     result(count(Sessions, #agent{})).
  37.  
  38.  
  39. result(AgentRecord) ->
  40.     [
  41.      {j2me_app, AgentRecord#agent.j2me_app},
  42.      {blackberry_app, AgentRecord#agent.blackberry_app},
  43.      {android_app, AgentRecord#agent.android_app},
  44.      {iphone_app,  AgentRecord#agent.iphone_app},
  45.      {blackberry_msn, AgentRecord#agent.blackberry_msn},
  46.      {android_msn, AgentRecord#agent.android_msn},
  47.      {iphone_msn, AgentRecord#agent.iphone_msn},
  48.      {wp7_msn, AgentRecord#agent.wp7_msn},
  49.      {client_apps, AgentRecord#agent.client_apps},    
  50.      {other, AgentRecord#agent.other},
  51.      {total_web, AgentRecord#agent.web},
  52.      {total_old_mobiles, (AgentRecord#agent.j2me_app +
  53.                               AgentRecord#agent.blackberry_app +
  54.                               AgentRecord#agent.android_app +
  55.                               AgentRecord#agent.iphone_app)},
  56.      {total_messenger, (AgentRecord#agent.blackberry_msn +
  57.                             AgentRecord#agent.android_msn +
  58.                             AgentRecord#agent.iphone_msn +
  59.                             AgentRecord#agent.wp7_msn)}
  60.     ].
  61.  
  62.  
  63. count(Sessions, AccIn) ->
  64.     lists:foldr(fun(Session, Acc) ->
  65.                               try
  66.                                   Pid = element(2, Session#session.sid),
  67.                                   State = ejabberd_c2s:state(Pid),
  68.                                   Agent = State#state.agent,
  69.                                   add_agent(Agent, Acc)
  70.                               catch
  71.                                   _:_ ->
  72.                                       Acc
  73.                               end
  74.                       end, AccIn, Sessions).
  75.  
  76.  
  77.  
  78. add_agent(Agent, #agent{} = AgentRecord) ->
  79.     OldValue = element(Agent, AgentRecord),
  80.     case Agent of
  81.         1 ->
  82.             AgentRecord#agent{web = AgentRecord#agent.web + 1};
  83.         2 ->
  84.             AgentRecord#agent{j2me_app = AgentRecord#agent.j2me_app + 1};
  85.         3 ->
  86.             AgentRecord#agent{blackberry_app = AgentRecord#agent.blackberry_app + 1};
  87.         4 ->
  88.             AgentRecord#agent{android_app = AgentRecord#agent.android_app + 1};
  89.         5 ->
  90.            AgentRecord#agent{iphone_app = AgentRecord#agent.iphone_app + 1};
  91.         6 ->
  92.             AgentRecord#agent{blackberry_msn = AgentRecord#agent.blackberry_msn + 1};
  93.         7 ->
  94.             AgentRecord#agent{android_msn = AgentRecord#agent.android_msn + 1};
  95.         8 ->
  96.             AgentRecord#agent{iphone_msn = AgentRecord#agent.iphone_msn + 1};
  97.         9 ->
  98.             AgentRecord#agent{wp7_msn = AgentRecord#agent.wp7_msn + 1};
  99.         10 ->
  100.             AgentRecord#agent{client_apps = AgentRecord#agent.client_apps + 1};
  101.         _ ->
  102.             AgentRecord#agent{other = AgentRecord#agent.other + 1}
  103.     end.
Add Comment
Please, Sign In to add comment