<p>Joshua Colp <strong>uploaded patch set #4</strong> to this change.</p><p><a href="https://gerrit.asterisk.org/10622">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">stasis: Segment channel snapshot to reduce creation cost.<br><br>When a channel snapshot was created it used to be done<br>from scratch, copying all data (many strings). This incurs<br>a cost when doing so.<br><br>This change segments the channel snapshot into different<br>components which can be reused if unchanged from the<br>previous snapshot creation, reducing the cost. In normal<br>cases this results in some pointers being copied with<br>reference count being bumped, some integers being set,<br>and a string or two copied. The other benefit is that it<br>is now possible to determine if a channel snapshot update<br>is redundant and thus stop it before a message is published<br>to stasis.<br><br>The specific segments in the channel snapshot were split up<br>based on whether they are changed together, how often they<br>are changed, and their general grouping. In practice only<br>1 (or 0) of the segments actually get changed in normal<br>operation.<br><br>Invalidation is done by setting a flag on the channel when<br>the segment source is changed, forcing creation of a new<br>segment when the channel snapshot is created.<br><br>ASTERISK-28119<br><br>Change-Id: I5d7ef3df963a88ac47bc187d73c5225c315f8423<br>---<br>M apps/app_queue.c<br>M channels/chan_pjsip.c<br>M channels/pjsip/cli_commands.c<br>M configs/samples/ari.conf.sample<br>M configs/samples/manager.conf.sample<br>M include/asterisk/channel.h<br>M include/asterisk/stasis_channels.h<br>M main/bridge.c<br>M main/cdr.c<br>M main/cel.c<br>M main/channel.c<br>M main/channel_internal_api.c<br>M main/cli.c<br>M main/core_local.c<br>M main/endpoints.c<br>M main/manager.c<br>M main/manager_bridges.c<br>M main/manager_channels.c<br>M main/stasis_bridges.c<br>M main/stasis_channels.c<br>M pbx/pbx_realtime.c<br>M res/ari/resource_bridges.c<br>M res/ari/resource_channels.c<br>M res/parking/parking_applications.c<br>M res/parking/parking_bridge_features.c<br>M res/res_chan_stats.c<br>M res/res_pjsip/pjsip_configuration.c<br>M res/res_pjsip_refer.c<br>M res/res_stasis.c<br>M res/stasis/app.c<br>M tests/test_cel.c<br>M tests/test_stasis_channels.c<br>32 files changed, 879 insertions(+), 470 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/22/10622/4</pre><p>To view, visit <a href="https://gerrit.asterisk.org/10622">change 10622</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/10622"/><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-MessageType: newpatchset </div>
<div style="display:none"> Gerrit-Change-Id: I5d7ef3df963a88ac47bc187d73c5225c315f8423 </div>
<div style="display:none"> Gerrit-Change-Number: 10622 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: Joshua Colp <jcolp@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Corey Farrell <git@cfware.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins2 (1000185) </div>
<div style="display:none"> Gerrit-Reviewer: Joshua Colp <jcolp@digium.com> </div>