<p>Jaco Kroon has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/20025">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">res_calendar: Enable setting a default busy state on calendars for<br>events without an explicit busy state.<br><br>Change-Id: I60b9b8d5637ef1f509996d21acfe148aff1c0009<br>Signed-off-by: Jaco Kroon <jaco@uls.co.za><br>---<br>M configs/samples/calendar.conf.sample<br>M include/asterisk/calendar.h<br>M res/res_calendar.c<br>3 files changed, 33 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/25/20025/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/configs/samples/calendar.conf.sample b/configs/samples/calendar.conf.sample</span><br><span>index 08cbd3a..2b313c7 100644</span><br><span>--- a/configs/samples/calendar.conf.sample</span><br><span>+++ b/configs/samples/calendar.conf.sample</span><br><span>@@ -7,6 +7,7 @@</span><br><span> ;timeframe = 60 ; number of minutes of calendar data to pull for each refresh period</span><br><span> ; ; should always be >= refresh</span><br><span> ;fetch_again_at_reload = no ; to reload the calendar content when the module is reloaded</span><br><span style="color: hsl(120, 100%, 40%);">+;default_busy_state = free|busy|tentative ; default free, any other value will be treated as a boolean resulting in true => busy and everything else defaults to free.</span><br><span> ;</span><br><span> ;</span><br><span> ; You can set up res_calendar to execute a call upon an upcoming busy status</span><br><span>diff --git a/include/asterisk/calendar.h b/include/asterisk/calendar.h</span><br><span>index d22ae15..3e2be0b 100644</span><br><span>--- a/include/asterisk/calendar.h</span><br><span>+++ b/include/asterisk/calendar.h</span><br><span>@@ -137,6 +137,7 @@</span><br><span> ast_cond_t unload;</span><br><span> unsigned int unloading:1;</span><br><span> unsigned int pending_deletion:1;</span><br><span style="color: hsl(120, 100%, 40%);">+ enum ast_calendar_busy_state default_busy_state; /*!< The default busy state of events without an explicit value */</span><br><span> struct ao2_container *events; /*!< The events that are known at this time */</span><br><span> };</span><br><span> </span><br><span>@@ -205,4 +206,9 @@</span><br><span> /*! \brief Convert a free-busy state integer value to a string.</span><br><span> */</span><br><span> const char* ast_calendar_busy_state_to_str(enum ast_calendar_busy_state busy_state);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! \brief Convert a string to a free-busy state.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+enum ast_calendar_busy_state ast_calendar_busy_state_from_str(const char* busy_state);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #endif /* _ASTERISK_CALENDAR_H */</span><br><span>diff --git a/res/res_calendar.c b/res/res_calendar.c</span><br><span>index 428f10a..3e61e3f 100644</span><br><span>--- a/res/res_calendar.c</span><br><span>+++ b/res/res_calendar.c</span><br><span>@@ -371,6 +371,17 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+enum ast_calendar_busy_state ast_calendar_busy_state_from_str(const char* busy_state)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ if (strcasecmp(busy_state, "free"))</span><br><span style="color: hsl(120, 100%, 40%);">+ return AST_CALENDAR_BS_FREE;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (strcasecmp(busy_state, "busy"))</span><br><span style="color: hsl(120, 100%, 40%);">+ return AST_CALENDAR_BS_BUSY;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (strcasecmp(busy_state, "tentative"))</span><br><span style="color: hsl(120, 100%, 40%);">+ return AST_CALENDAR_BS_BUSY_TENTATIVE;</span><br><span style="color: hsl(120, 100%, 40%);">+ return ast_true(busy_state) ? AST_CALENDAR_BS_BUSY : AST_CALENDAR_BS_FREE;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static int calendar_busy_callback(void *obj, void *arg, int flags)</span><br><span> {</span><br><span> struct ast_calendar_event *event = obj;</span><br><span>@@ -455,6 +466,7 @@</span><br><span> cal->timeframe = 60;</span><br><span> cal->notify_waittime = 30000;</span><br><span> cal->fetch_again_at_reload = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+ cal->default_busy_state = AST_CALENDAR_BS_FREE;</span><br><span> </span><br><span> for (v = ast_variable_browse(cfg, cat); v; v = v->next) {</span><br><span> if (!strcasecmp(v->name, "autoreminder")) {</span><br><span>@@ -500,6 +512,8 @@</span><br><span> }</span><br><span> ast_free(name);</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (!strcasecmp(v->name, "default_busy_state")) {</span><br><span style="color: hsl(120, 100%, 40%);">+ cal->default_busy_state = ast_calendar_busy_state_from_str(v->value);</span><br><span> }</span><br><span> }</span><br><span> </span><br><span>@@ -696,6 +710,7 @@</span><br><span> event->notify_sched = -1;</span><br><span> event->bs_start_sched = -1;</span><br><span> event->bs_end_sched = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+ event->busy_state = cal->default_busy_state;</span><br><span> </span><br><span> AST_LIST_HEAD_INIT_NOLOCK(&event->attendees);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/20025">change 20025</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/20025"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I60b9b8d5637ef1f509996d21acfe148aff1c0009 </div>
<div style="display:none"> Gerrit-Change-Number: 20025 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Jaco Kroon <jaco@uls.co.za> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>