<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/3494/">https://reviewboard.asterisk.org/r/3494/</a>
     </td>
    </tr>
   </table>
   <br />










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On May 1st, 2014, 4:59 p.m. CDT, <b>Samuel Galarneau</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://reviewboard.asterisk.org/r/3494/diff/1/?file=58118#file58118line51" style="color: black; font-weight: bold; text-decoration: underline;">/branches/12/rest-api/api-docs/applications.json</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

    </span>
   </th>
  </tr>
 </thead>



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">51</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">   </span><span class="tb">  </span><span class="tb">  </span><span class="nt">"path"</span><span class="p">:</span> <span class="s2">"/applications/{applicationName}/user/{eventName}"</span><span class="p">,</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">What was the thought process behind adding this API endpoint to the applications resource? Would it not make more sense to generate custom user events from the events resource?</pre>
 </blockquote>



 <p>On May 1st, 2014, 5:13 p.m. CDT, <b>Scott Griepentrog</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">The idea is that a user event has to be signaled against/for an application, rather than a specific object, as there may be nothing more than the event name itself.  It could be relocated to the events resource, which is initially where I was planning on putting it, except that it would still have a requirement of specifying an application name.  Only that application (or another application that is listening to another application's messages) will receive the event. </pre>
 </blockquote>





 <p>On May 1st, 2014, 5:30 p.m. CDT, <b>Samuel Galarneau</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">There are other calls in ARI where an application name can be passed (originate on channel for example). That shouldn't force the method to be put under the applications resource however.

Since the end goal of calling this method is to raise a user event, it seems having the method under the events resource would make more sense.</pre>
 </blockquote>







</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I've changed the URI to /events/user/{name}.</pre>
<br />




<p>- Scott</p>


<br />
<p>On May 9th, 2014, 5:29 p.m. CDT, Scott Griepentrog wrote:</p>








<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/static/rb/images/review_request_box_top_bg.ab6f3b1072c9.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By Scott Griepentrog.</div>


<p style="color: grey;"><i>Updated May 9, 2014, 5:29 p.m.</i></p>







<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-22697">ASTERISK-22697</a>


</div>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
Asterisk
</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This changes the implementation of UserEvent stasis messaging and adds additional features:

1) Existing channel_user_event stasis messaging replaced with new multi_object_blob in stasis_user.c
2) Multi object blob provides ability to signal blob + any number of channel, bridge, or endpoint snapshots
3) Changed existing Userevent() app to use new multi object blob - but still publishes to channel
4) Added ARI implementation of userevent as /ari/applications/{applicationName}/user/{eventName}
5) ARI generated userevent messages are published to application, and also to AMI if channel present</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Tested with valgrind to insure no invalid references.  Some leaks found which have been attributed to other code to be fixed separately.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/branches/12/rest-api/api-docs/events.json <span style="color: grey">(413115)</span></li>

 <li>/branches/12/res/stasis/app.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/res/res_stasis.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/res/res_ari_events.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/res/ari/resource_events.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/res/ari/resource_events.h <span style="color: grey">(413115)</span></li>

 <li>/branches/12/res/ari/ari_model_validators.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/res/ari/ari_model_validators.h <span style="color: grey">(413115)</span></li>

 <li>/branches/12/main/stasis_endpoints.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/main/stasis_channels.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/main/stasis.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/main/manager_channels.c <span style="color: grey">(413115)</span></li>

 <li>/branches/12/include/asterisk/stasis_channels.h <span style="color: grey">(413115)</span></li>

 <li>/branches/12/include/asterisk/stasis_app.h <span style="color: grey">(413115)</span></li>

 <li>/branches/12/include/asterisk/stasis.h <span style="color: grey">(413115)</span></li>

 <li>/branches/12/apps/app_userevent.c <span style="color: grey">(413115)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/3494/diff/" style="margin-left: 3em;">View Diff</a></p>







  </td>
 </tr>
</table>








  </div>
 </body>
</html>