aboutsummaryrefslogtreecommitdiff
path: root/include/mod_muc_room.hrl
diff options
context:
space:
mode:
Diffstat (limited to 'include/mod_muc_room.hrl')
-rw-r--r--include/mod_muc_room.hrl117
1 files changed, 117 insertions, 0 deletions
diff --git a/include/mod_muc_room.hrl b/include/mod_muc_room.hrl
new file mode 100644
index 000000000..0835132a7
--- /dev/null
+++ b/include/mod_muc_room.hrl
@@ -0,0 +1,117 @@
+%%%----------------------------------------------------------------------
+%%%
+%%% ejabberd, Copyright (C) 2002-2013 ProcessOne
+%%%
+%%% This program is free software; you can redistribute it and/or
+%%% modify it under the terms of the GNU General Public License as
+%%% published by the Free Software Foundation; either version 2 of the
+%%% License, or (at your option) any later version.
+%%%
+%%% This program is distributed in the hope that it will be useful,
+%%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+%%% General Public License for more details.
+%%%
+%%% You should have received a copy of the GNU General Public License
+%%% along with this program; if not, write to the Free Software
+%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+%%% 02111-1307 USA
+%%%
+%%%----------------------------------------------------------------------
+
+-define(MAX_USERS_DEFAULT, 200).
+
+-define(SETS, gb_sets).
+
+-define(DICT, dict).
+
+-record(lqueue,
+{
+ queue :: queue(),
+ len :: integer(),
+ max :: integer()
+}).
+
+-type lqueue() :: #lqueue{}.
+
+-record(config,
+{
+ title = <<"">> :: binary(),
+ description = <<"">> :: binary(),
+ allow_change_subj = true :: boolean(),
+ allow_query_users = true :: boolean(),
+ allow_private_messages = true :: boolean(),
+ allow_private_messages_from_visitors = anyone :: anyone | moderators | nobody ,
+ allow_visitor_status = true :: boolean(),
+ allow_visitor_nickchange = true :: boolean(),
+ public = true :: boolean(),
+ public_list = true :: boolean(),
+ persistent = false :: boolean(),
+ moderated = true :: boolean(),
+ captcha_protected = false :: boolean(),
+ members_by_default = true :: boolean(),
+ members_only = false :: boolean(),
+ allow_user_invites = false :: boolean(),
+ password_protected = false :: boolean(),
+ password = <<"">> :: binary(),
+ anonymous = true :: boolean(),
+ allow_voice_requests = true :: boolean(),
+ voice_request_min_interval = 1800 :: non_neg_integer(),
+ max_users = ?MAX_USERS_DEFAULT :: non_neg_integer() | none,
+ logging = false :: boolean(),
+ captcha_whitelist = (?SETS):empty() :: gb_set()
+}).
+
+-type config() :: #config{}.
+
+-type role() :: moderator | participant | visitor | none.
+
+-record(user,
+{
+ jid :: jid(),
+ nick :: binary(),
+ role :: role(),
+ last_presence :: xmlel()
+}).
+
+-record(activity,
+{
+ message_time = 0 :: integer(),
+ presence_time = 0 :: integer(),
+ message_shaper :: shaper:shaper(),
+ presence_shaper :: shaper:shaper(),
+ message :: xmlel(),
+ presence :: {binary(), xmlel()}
+}).
+
+-record(state,
+{
+ room = <<"">> :: binary(),
+ host = <<"">> :: binary(),
+ server_host = <<"">> :: binary(),
+ access = {none,none,none,none} :: {atom(), atom(), atom(), atom()},
+ jid = #jid{} :: jid(),
+ config = #config{} :: config(),
+ users = (?DICT):new() :: dict(),
+ last_voice_request_time = treap:empty() :: treap:treap(),
+ robots = (?DICT):new() :: dict(),
+ nicks = (?DICT):new() :: dict(),
+ affiliations = (?DICT):new() :: dict(),
+ history :: lqueue(),
+ persist_history = false :: boolean(),
+ subject = <<"">> :: binary(),
+ subject_author = <<"">> :: binary(),
+ just_created = false :: boolean(),
+ activity = treap:empty() :: treap:treap(),
+ room_shaper = none :: shaper:shaper(),
+ room_queue = queue:new() :: queue()
+}).
+
+-record(muc_online_users, {us = {<<>>, <<>>} :: {binary(), binary()},
+ resource = <<>> :: binary() | '_',
+ room = <<>> :: binary() | '_',
+ host = <<>> :: binary() | '_'}).
+
+-type muc_online_users() :: #muc_online_users{}.
+
+-type muc_room_state() :: #state{}.