1 |
|
%%%------------------------------------------------------------------- |
2 |
|
%%% @author Piotr Nosek <piotr.nosek@erlang-solutions.com> |
3 |
|
%%% @doc MAM hooks for general metrics |
4 |
|
%%% |
5 |
|
%%% @end |
6 |
|
%%% Created : 13 Feb 2017 by Piotr Nosek |
7 |
|
%%%------------------------------------------------------------------- |
8 |
|
-module(mongoose_metrics_mam_hooks). |
9 |
|
|
10 |
|
-include("mongoose.hrl"). |
11 |
|
-include("jlib.hrl"). |
12 |
|
|
13 |
|
-export([get_mam_hooks/1, |
14 |
|
get_mam_muc_hooks/1]). |
15 |
|
|
16 |
|
%%------------------- |
17 |
|
%% Internal exports |
18 |
|
%%------------------- |
19 |
|
-export([mam_get_prefs/4, |
20 |
|
mam_set_prefs/7, |
21 |
|
mam_remove_archive/4, |
22 |
|
mam_lookup_messages/3, |
23 |
|
mam_archive_message/3, |
24 |
|
mam_flush_messages/3, |
25 |
|
mam_muc_get_prefs/4, |
26 |
|
mam_muc_set_prefs/7, |
27 |
|
mam_muc_remove_archive/4, |
28 |
|
mam_muc_lookup_messages/3, |
29 |
|
mam_muc_archive_message/3, |
30 |
|
mam_muc_flush_messages/3]). |
31 |
|
|
32 |
|
-ignore_xref([mam_archive_message/3, mam_get_prefs/4, mam_lookup_messages/3, mam_flush_messages/3, |
33 |
|
mam_muc_archive_message/3, mam_muc_flush_messages/3, mam_muc_get_prefs/4, |
34 |
|
mam_muc_lookup_messages/3, mam_muc_remove_archive/4, mam_muc_set_prefs/7, |
35 |
|
mam_remove_archive/4, mam_set_prefs/7]). |
36 |
|
|
37 |
|
-type metrics_notify_return() :: mongoose_metrics_hooks:metrics_notify_return(). |
38 |
|
|
39 |
|
%%------------------- |
40 |
|
%% Implementation |
41 |
|
%%------------------- |
42 |
|
|
43 |
|
%% @doc Here will be declared which hooks should be registered when mod_mam is enabled. |
44 |
|
-spec get_mam_hooks(_) -> [ejabberd_hooks:hook(), ...]. |
45 |
|
get_mam_hooks(Host) -> |
46 |
:-( |
[ |
47 |
|
{mam_set_prefs, Host, ?MODULE, mam_set_prefs, 50}, |
48 |
|
{mam_get_prefs, Host, ?MODULE, mam_get_prefs, 50}, |
49 |
|
{mam_archive_message, Host, ?MODULE, mam_archive_message, 50}, |
50 |
|
{mam_remove_archive, Host, ?MODULE, mam_remove_archive, 50}, |
51 |
|
{mam_lookup_messages, Host, ?MODULE, mam_lookup_messages, 100}, |
52 |
|
{mam_flush_messages, Host, ?MODULE, mam_flush_messages, 50} |
53 |
|
]. |
54 |
|
|
55 |
|
%% @doc Here will be declared which hooks should be registered when mod_mam_muc is enabled. |
56 |
|
-spec get_mam_muc_hooks(_) -> [ejabberd_hooks:hook(), ...]. |
57 |
|
get_mam_muc_hooks(Host) -> |
58 |
12 |
[ |
59 |
|
{mam_muc_set_prefs, Host, ?MODULE, mam_muc_set_prefs, 50}, |
60 |
|
{mam_muc_get_prefs, Host, ?MODULE, mam_muc_get_prefs, 50}, |
61 |
|
{mam_muc_archive_message, Host, ?MODULE, mam_muc_archive_message, 50}, |
62 |
|
{mam_muc_remove_archive, Host, ?MODULE, mam_muc_remove_archive, 50}, |
63 |
|
{mam_muc_lookup_messages, Host, ?MODULE, mam_muc_lookup_messages, 100}, |
64 |
|
{mam_muc_flush_messages, Host, ?MODULE, mam_muc_flush_messages, 50} |
65 |
|
]. |
66 |
|
|
67 |
|
-spec mam_get_prefs(Result :: any(), |
68 |
|
Host :: jid:server(), |
69 |
|
_ArcID :: mod_mam:archive_id(), |
70 |
|
_ArcJID :: jid:jid()) -> any(). |
71 |
|
mam_get_prefs(Result, Host, _ArcID, _ArcJID) -> |
72 |
:-( |
mongoose_metrics:update(Host, modMamPrefsGets, 1), |
73 |
:-( |
Result. |
74 |
|
|
75 |
|
-spec mam_set_prefs(Result :: any(), Host :: jid:server(), |
76 |
|
_ArcID :: mod_mam:archive_id(), _ArcJID :: jid:jid(), |
77 |
|
_DefaultMode :: any(), _AlwaysJIDs :: [jid:literal_jid()], |
78 |
|
_NeverJIDs :: [jid:literal_jid()]) -> any(). |
79 |
|
mam_set_prefs(Result, Host, _ArcID, _ArcJID, _DefaultMode, _AlwaysJIDs, _NeverJIDs) -> |
80 |
:-( |
mongoose_metrics:update(Host, modMamPrefsSets, 1), |
81 |
:-( |
Result. |
82 |
|
|
83 |
|
-spec mam_remove_archive(Acc :: map(), |
84 |
|
Host :: jid:server(), |
85 |
|
_ArcID :: mod_mam:archive_id(), |
86 |
|
_ArcJID :: jid:jid()) -> metrics_notify_return(). |
87 |
|
mam_remove_archive(Acc, Host, _ArcID, _ArcJID) -> |
88 |
:-( |
mongoose_metrics:update(Host, modMamArchiveRemoved, 1), |
89 |
:-( |
Acc. |
90 |
|
|
91 |
|
mam_lookup_messages(Result = {ok, {_TotalCount, _Offset, MessageRows}}, |
92 |
|
Host, #{is_simple := IsSimple}) -> |
93 |
:-( |
mongoose_metrics:update(Host, modMamForwarded, length(MessageRows)), |
94 |
:-( |
mongoose_metrics:update(Host, modMamLookups, 1), |
95 |
:-( |
case IsSimple of |
96 |
|
true -> |
97 |
:-( |
mongoose_metrics:update(Host, [modMamLookups, simple], 1); |
98 |
|
_ -> |
99 |
:-( |
ok |
100 |
|
end, |
101 |
:-( |
Result; |
102 |
|
mam_lookup_messages(Result = {error, _}, _Host, _Params) -> |
103 |
:-( |
Result. |
104 |
|
|
105 |
|
-spec mam_archive_message(Result :: any(), Host :: jid:server(), |
106 |
|
_Params :: mod_mam:archive_message_params()) -> any(). |
107 |
|
mam_archive_message(Result, Host, _Params) -> |
108 |
:-( |
mongoose_metrics:update(Host, modMamArchived, 1), |
109 |
:-( |
Result. |
110 |
|
|
111 |
|
mam_flush_messages(Acc, Host, MessageCount) -> |
112 |
:-( |
mongoose_metrics:update(Host, modMamFlushed, MessageCount), |
113 |
:-( |
Acc. |
114 |
|
|
115 |
|
%% ---------------------------------------------------------------------------- |
116 |
|
%% mod_mam_muc |
117 |
|
|
118 |
|
mam_muc_get_prefs(Result, Host, _ArcID, _ArcJID) -> |
119 |
:-( |
mongoose_metrics:update(Host, modMucMamPrefsGets, 1), |
120 |
:-( |
Result. |
121 |
|
|
122 |
|
mam_muc_set_prefs(Result, Host, _ArcID, _ArcJID, _DefaultMode, _AlwaysJIDs, _NeverJIDs) -> |
123 |
:-( |
mongoose_metrics:update(Host, modMucMamPrefsSets, 1), |
124 |
:-( |
Result. |
125 |
|
|
126 |
|
mam_muc_remove_archive(Acc, Host, _ArcID, _ArcJID) -> |
127 |
4 |
mongoose_metrics:update(Host, modMucMamArchiveRemoved, 1), |
128 |
4 |
Acc. |
129 |
|
|
130 |
|
mam_muc_lookup_messages(Result = {ok, {_TotalCount, _Offset, MessageRows}}, |
131 |
|
Host, _Params) -> |
132 |
:-( |
mongoose_metrics:update(Host, modMucMamForwarded, length(MessageRows)), |
133 |
:-( |
mongoose_metrics:update(Host, modMucMamLookups, 1), |
134 |
:-( |
Result; |
135 |
|
mam_muc_lookup_messages(Result = {error, _}, |
136 |
|
_Host, _Params) -> |
137 |
:-( |
Result. |
138 |
|
|
139 |
|
-spec mam_muc_archive_message(Result :: any(), Host :: jid:server(), |
140 |
|
_Params :: mod_mam:archive_message_params()) -> any(). |
141 |
|
mam_muc_archive_message(Result, Host, _Params) -> |
142 |
:-( |
mongoose_metrics:update(Host, modMucMamArchived, 1), |
143 |
:-( |
Result. |
144 |
|
|
145 |
|
%% #rh |
146 |
|
mam_muc_flush_messages(Acc, Host, MessageCount) -> |
147 |
:-( |
mongoose_metrics:update(Host, modMucMamFlushed, MessageCount), |
148 |
:-( |
Acc. |
149 |
|
|
150 |
|
%%% vim: set sts=4 ts=4 sw=4 et filetype=erlang foldmarker=%%%',%%%. foldmethod=marker: |