<br><br><div class="gmail_quote">On Thu, Sep 10, 2009 at 12:32 PM, Maciej Stachowiak <span dir="ltr"><<a href="mailto:mjs@apple.com">mjs@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div class="im"><br><div><div>On Sep 10, 2009, at 11:22 AM, Michael Nordman wrote:</div><br><blockquote type="cite"><br><br><div class="gmail_quote">On Wed, Sep 9, 2009 at 7:55 PM, Robert O'Callahan <span dir="ltr"><<a href="mailto:robert@ocallahan.org" target="_blank">robert@ocallahan.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div>On Thu, Sep 10, 2009 at 2:38 PM, Michael Nordman <span dir="ltr"><<a href="mailto:michaeln@google.com" target="_blank">michaeln@google.com</a>></span> wrote:<br>
</div><div class="gmail_quote"><div> <blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"> If this feature existed, we likely would have used it for offline Gmail to coordinate which instance of the app (page with gmail in it) should be responsible for sync'ing the local database with the mail service. In the absence of a feature like this, instead we used the local database itself to register which page was the 'syncagent'. This involved periodically updating the db by the syncagent, and periodic polling by the would be syncagents waiting to possibly take over. Much ugliness.<div>
 <br></div><div>var isSyncAgent = false;</div><div><span style="font-family:arial,sans-serif;font-size:13px;border-collapse:collapse">window.acquireFlag("syncAgency", function() { isSyncAgent = true; });</span><br>
 <div><br></div><div>Much nicer.</div></div></blockquote><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex"><div><div><div></div></div></div></blockquote>
 </div><div><br>How do you deal with the user closing the syncagent while other app instances remain open?<br></div></div></blockquote><div><br></div><div>In our db polling world... that was why the syncagent periodically updated the db... to say "still alive"... on close it would say "i'm gone" and on ugly exit, the others would notice the lack of "still alives" and fight about who was it next. A silly bunch of complexity for something so simple.</div>
 <div><br></div><div>In the acquireFlag world... wouldn't the page going away simply relinquish the flag?</div></div></blockquote></div><br></div><div>How would the pages that failed to acquire it before know that they should try to acquire it again? Presumably they would still have to poll (assuming the "tryLock" model).</div>
</div></blockquote><div><br></div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><div>@<span style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Maciej, per darin's comment, t<span style="border-collapse: separate; font-family: arial; font-size: small; ">hat was the proposed interface my snippet was using. So no polling invovled. Probably hundreds of lines of js/sql code reduced to one.</span></span></div>
<div><font face="arial, sans-serif"><br></font></div></span><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">This would be a nice generally applicable primitive to have.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "></span> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div><br></div><div>Regards,</div><div>Maciej</div><font color="#888888"><div><br></div></font></div></blockquote></div><br>