mozilla

Compare Revisions

nsISupports proxies

Change Revisions

Revision 58606:

Revision 58606 by pospec4444 on

Revision 58607:

Revision 58607 by pospec4444 on

Title:
nsISupports proxies
nsISupports proxies
Slug:
nsISupports_proxies
nsISupports_proxies
Tags:
NeedsHelp, XPCOM, NeedsUpdate, Obsolete
NeedsHelp, XPCOM, NeedsUpdate, Obsolete
Content:

Revision 58606
Revision 58607
n8      A <b>proxy</b>, in this context, is a stub object which enan8      A <strong>proxy</strong>, in this context, is a stub object
>bles a method of any class which is derived from <code><a href="e> which enables a method of any class which is derived from <code>
>n/NsISupports">nsISupports</a></code> and has a typelib to be cal><a href="/en/nsISupports" title="en/nsISupports">nsISupports</a><
>led on any in-process thread.>/code> and has a typelib to be called on any in-process thread.
n21        The API has changed in Mozilla 1.9, but the prose below hn21        The API has changed in Mozilla 1.9, but the prose below h
>asn't been updated yet. See {{ Source("xpcom/proxy/public/nsIProx>asn't been updated yet. See {{ Source("xpcom/proxy/public/nsIProx
>yObjectManager.idl") }} for the updated interface and its documen>yObjectManager.idl") }} for the updated interface and its documen
>tation. See also <a class="external" href="http://groups.google.c>tation. See also <a class="external" href="http://groups.google.c
>om/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2d>om/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2d
>e4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8">.</a>>e4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8"></a>.
22      </p><a class="external" href="http://groups.google.com/grou22      </p>
>p/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/9392 
>40fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8"></a> 
23    </div><a class="external" href="http://groups.google.com/grou23    </div>
>p/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/9392 
>40fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8"></a> 
n25      <a class="external" href="http://groups.google.com/group/mon25      From a users point of view, you need only to look at the <c
>zilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc>ode><a href="/en/NsIProxyObjectManager" title="en/NsIProxyObjectM
>3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8">From a users point o>anager">nsIProxyObjectManager</a></code>. It has two entry points
>f view, you need only to look at the </a><code><a href="en/NsIPro>:
>xyObjectManager">nsIProxyObjectManager</a></code>. It has two ent 
>ry points: 
n45      The IID that you are requesting <i>must</i> be in the typeln45      The IID that you are requesting <em>must</em> be in the typ
>ib. These means that you should have had to create and IDL for it>elib. These means that you should have had to create and IDL for 
> and have generated a typelib. If you haven't, or you've never he>it and have generated a typelib. If you haven't, or you've never 
>ard of these things, see <a class=" external" href="http://www.mo>heard of these things, see <a class=" external" href="http://www.
>zilla.org/scriptable/" rel="freelink">http://www.mozilla.org/scri>mozilla.org/scriptable/" rel="freelink">http://www.mozilla.org/sc
>ptable/</a> .>riptable/</a> .
n51      <code>PROXY_ALWAYS</code> will ensure that a proxy object in51      <code>PROXY_ALWAYS</code> will ensure that a proxy object i
>s always created no matter what thread you currently are on. If t>s always created no matter what thread you currently are on. If t
>his flag is not specified, the Proxy Object Manager will compare >his flag is not specified, the Proxy Object Manager will compare 
>the eventQ which you pass to the eventQ which is on the current t>the eventQ which you pass to the eventQ which is on the current t
>hread. If they match, it will return the real <i>non-proxied</i>hread. If they match, it will return the real <em>non-proxied</em
>object. Most of the time you will want to set this flag.>> object. Most of the time you will want to set this flag.
n60      <b>Warning</b> about <code>PROXY_ASYNC</code>:n60      <strong>Warning</strong> about <code>PROXY_ASYNC</code>:
n77      So, given an event queue to execute methods on, and either n77      So, given an event queue to execute methods on, and either 
>an <code>nsISupports</code> object that has been created or CID, >an <code>nsISupports</code> object that has been created or CID, 
>and a flag, a new <code>nsISupports</code> proxy object will be r>and a flag, a new <code>nsISupports</code> proxy object will be r
>eturned to you. Once you have a proxy object, you may use it as i>eturned to you. Once you have a proxy object, you may use it as i
>f it is the "real" object. All the methods that are in the "real">f it is the "real" object. All the methods that are in the "real"
> object are stubbed into the proxy object. When you are finished > object are stubbed into the proxy object. When you are finished 
>with a proxy object, you should call <code><a href="en/NS_RELEASE>with a proxy object, you should call <code><a href="/en/NS_RELEAS
>">NS_RELEASE</a></code> on it. It will take care of freeing the ">E" title="en/NS_RELEASE">NS_RELEASE</a></code> on it. It will tak
>real" object as well as itself. If you have created the object yo>e care of freeing the "real" object as well as itself. If you hav
>urself and then created the proxy, please note that you will have>e created the object yourself and then created the proxy, please 
> at least a refcount of 2 (one for the proxy and one for the crea>note that you will have at least a refcount of 2 (one for the pro
>ted object which you passed into <code>GetProxyObject</code>, plu>xy and one for the created object which you passed into <code>Get
>s any other refcounts which you may have).>ProxyObject</code>, plus any other refcounts which you may have).
n99                                                  IFoo::GetIID(),n99                IFoo::GetIID(),
100                                                  pTestObj,100                pTestObj,
101                                                  NS_PROXY_SYNC |101                NS_PROXY_SYNC | NS_PROXY_ALWAYS,
> NS_PROXY_ALWAYS, 
102                                                  getter_AddRefs(102                getter_AddRefs(pProxy));
>pProxy)); 
t111&lt;/iformfiller&gt;&lt;/ifoo&gt;&lt;/nsiproxyobjectmanager&gt;t

Back to History