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











<div>




<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/2447/diff/1/?file=35940#file35940line95" style="color: black; font-weight: bold; text-decoration: underline;">/team/group/bridge_construction/include/asterisk/parking.h</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">95</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="k">struct</span> <span class="n">stasis_topic</span> <span class="o">*</span><span class="nf">ast_parking_topic</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I&#39;d recommend having an aggregated caching topic to go along with this aggregated topic as well as a way to subscribe to updates to individual parking lots.  This will allow query-only manager/cli interaction to avoid direct interaction with the internals of the parking code.</pre>
</div>
<br />

<div>




<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/2447/diff/1/?file=35952#file35952line295" style="color: black; font-weight: bold; text-decoration: underline;">/team/group/bridge_construction/res/parking/parking_manager.c</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">295</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="k">static</span> <span class="kt">int</span> <span class="nf">manager_parking_status</span><span class="p">(</span><span class="k">struct</span> <span class="n">mansession</span> <span class="o">*</span><span class="n">s</span><span class="p">,</span> <span class="k">const</span> <span class="k">struct</span> <span class="n">message</span> <span class="o">*</span><span class="n">m</span><span class="p">)</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">It would probably be a good idea to have an optional argument to this manager action to specify the parking lot of interest.  Getting a list of all parked calls in all parking lots on a system could get quite unwieldly for larger/shared systems.</pre>
</div>
<br />

<div>




<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/2447/diff/1/?file=35952#file35952line322" style="color: black; font-weight: bold; text-decoration: underline;">/team/group/bridge_construction/res/parking/parking_manager.c</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">322</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">        </span><span class="k">while</span> <span class="p">((</span><span class="n">curlot</span> <span class="o">=</span> <span class="n">ao2_iterator_next</span><span class="p">(</span><span class="o">&amp;</span><span class="n">iter_lots</span><span class="p">)))</span> <span class="p">{</span></pre></td>
  </tr>

  <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">323</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="n">iter_users</span> <span class="o">=</span> <span class="n">ao2_iterator_init</span><span class="p">(</span><span class="n">curlot</span><span class="o">-&gt;</span><span class="n">parked_user_list</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span></pre></td>
  </tr>

  <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">324</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="k">while</span> <span class="p">((</span><span class="n">curuser</span> <span class="o">=</span> <span class="n">ao2_iterator_next</span><span class="p">(</span><span class="o">&amp;</span><span class="n">iter_users</span><span class="p">)))</span> <span class="p">{</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ideally, this manager action would read from the stasis cache of the parking lot state (which doesn&#39;t appear to exist yet) as would any related information-query CLI commands.</pre>
</div>
<br />

<div>




<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/2447/diff/1/?file=35952#file35952line398" style="color: black; font-weight: bold; text-decoration: underline;">/team/group/bridge_construction/res/parking/parking_manager.c</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">398</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="tb">        </span><span class="n">ao2_callback_data</span><span class="p">(</span><span class="n">lot_container</span><span class="p">,</span> <span class="n">OBJ_MULTIPLE</span> <span class="o">|</span> <span class="n">OBJ_NODATA</span><span class="p">,</span> <span class="n">manager_append_event_parking_lot_data_cb</span><span class="p">,</span> <span class="n">s</span><span class="p">,</span> <span class="n">id_text</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Idem.</pre>
</div>
<br />



<p>- opticron</p>


<br />
<p>On April 12th, 2013, 2:01 p.m. CDT, jrose 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.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

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


<p style="color: grey;"><i>Updated April 12, 2013, 2:01 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-21059">ASTERISK-21059</a>, 

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

 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-21353">ASTERISK-21353</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;">As a result of all the new bridging changes, certain applications such as parking, queues, confbridge, and a few others require significant reworking within Asterisk to make usable.
Parking was less than salvagable, so I&#39;ve rebuilt it from the ground up to use a lot of new stuff including config hooks, the new bridging architecture, stasis, and just generally to
be an independent module with its own scope that doesn&#39;t get tangled into a giant morass within features.c

Parking configuration works somewhat differently now and extensions aren&#39;t necessarily automatically generated (it&#39;s optional and hasn&#39;t been implemented), but the intention with the final result is that if you were using parking before without too much additional dialplan manipulation, that should all just work once your parking lots are migrated to the new configuration file.

Currently supported:
parking from the PBX with the Park application (all arguments are supported)
parking within a call using the one touch parking feature
parking within a call using DTMF blind transfers (attended transfers work, but it&#39;s basically just like they called the application itself).
Picking up parked calls using the PBX
Multiple parking lots
All options available to parking lots are currently configurable. Some aren&#39;t currently doing anything, namely parkext and hints.

To do list:
* Dialplan generation for parking lots with parkext (included &#39;Park&#39; and &#39;ParkedCall&#39; applications)
* Dialplan generation for comebacktoorigin (park-dial extensions)
* Hints
* Implement &#39;Park&#39; manager action
* Dynamic parking lots and the default parking lot
* Scraping the greasy remnants of parking out of features.c
* CEL events
* Unit tests and testsuite tests</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;">This is currently being tested as it&#39;s developed and breaks in minor ways frequently. Unit tests and testsuite tests are on the to do list.</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>/team/group/bridge_construction/CHANGES <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/bridges/bridge_builtin_features.c <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/configs/res_parking.conf.sample <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/include/asterisk/bridging.h <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/include/asterisk/config_options.h <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/include/asterisk/features.h <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/include/asterisk/manager.h <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/include/asterisk/parking.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/main/bridging.c <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/main/bridging_roles.c <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/main/config_options.c <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/main/features.c <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/main/manager_channels.c <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/main/parking.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/res/Makefile <span style="color: grey">(385515)</span></li>

 <li>/team/group/bridge_construction/res/parking/parking_applications.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/res/parking/parking_bridge.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/res/parking/parking_bridge_features.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/res/parking/parking_controller.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/res/parking/parking_manager.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/res/parking/parking_ui.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/res/parking/res_parking.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/team/group/bridge_construction/res/res_parking.c <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

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







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








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