<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/2339/">https://reviewboard.asterisk.org/r/2339/</a>
     </td>
    </tr>
   </table>
   <br />



 <p>Ship it!</p>



 <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Other than the race condition I found while working on the stasis/MWI conversion, this looks good to go. Go ahead and incorporate that when you commit.</pre>
 <br />







<p>- opticron</p>


<br />
<p>On March 1st, 2013, 3:39 p.m., David Lee wrote:</p>






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

<div>Review request for Asterisk Developers, Matt Jordan and kmoore.</div>
<div>By David Lee.</div>


<p style="color: grey;"><i>Updated March 1, 2013, 3:39 p.m.</i></p>




<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 patch adds a new message bus API to Asterisk.

For the initial use of this bus, I took some work kmoore did creating
channel snapshots. So rather than create AMI events directly in the
channel code, this patch generates Stasis events, which manager.c uses
to then publish the AMI event.

This message bus provides a generic publish/subscribe mechanism within
Asterisk. This message bus is:

 - Loosely coupled; new message types can be added in seperate modules.
 - Easy to use; publishing and subscribing are straightforward
   operations.
 - Consistent memory management; all message bus objects are AO2
   managed objects, using ao2_ref() and ao2_cleanup() to manage the
   reference counting.

In addition to basic publish/subscribe, the patch also provides a
mechanisms for message forwarding, and for message caching.</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;">Unit tests; manually verified AMI events for a few calls.</pre>
  </td>
 </tr>
</table>



<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-20959">ASTERISK-20959</a>


</div>


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

 <li>/trunk/include/asterisk/channel.h <span style="color: grey">(382299)</span></li>

 <li>/trunk/include/asterisk/channel_internal.h <span style="color: grey">(382299)</span></li>

 <li>/trunk/main/asterisk.c <span style="color: grey">(382299)</span></li>

 <li>/trunk/main/asterisk.exports.in <span style="color: grey">(382299)</span></li>

 <li>/trunk/main/channel.c <span style="color: grey">(382299)</span></li>

 <li>/trunk/main/channel_internal_api.c <span style="color: grey">(382299)</span></li>

 <li>/trunk/main/manager.c <span style="color: grey">(382299)</span></li>

 <li>/trunk/main/pbx.c <span style="color: grey">(382299)</span></li>

</ul>

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




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








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