Native Client

pp::InstanceHandle Class Reference

An instance handle identifies an instance in a constructor for a resource. More...

List of all members.

Public Functions

 InstanceHandle (Instance *instance)
 InstanceHandle (PP_Instance pp_instance)
PP_Instance pp_instance () const

Detailed Description

An instance handle identifies an instance in a constructor for a resource.

This class solves two different problems:

1. A pp::Instance object's lifetime is managed by the system on the main pepper thread of the module. This means that it may get destroyed at any time based on something that happens on the web page. Therefore, it's not safe to refer to a pp::Instance object on a background thread. Instead, we need to pass some kind of identifier to resource constructors so that they may safely be used on background threads. If the instance becomes invalid, the resource creation will fail on the background thread, but it won't crash.

2. PP_Instance would be a good identifier to use for this case. However, using PP_Instance in the constructor to resources is problematic because it is just a typedef for an integer, as is a PP_Resource. Many resources have alternate constructors that just take an existing PP_Resource, so the constructors would be ambiguous. Having this wrapper around a PP_Instance prevents this ambiguity, and also provides a nice place to consolidate an implicit conversion from pp::Instance* for prettier code on the main thread (you can just pass "this" to resource constructors in your instance objects).

You should always pass an InstanceHandle to background threads instead of a pp::Instance, and use them in resource constructors and code that may be used from background threads.


Constructor and Destructor Details

pp::InstanceHandle::InstanceHandle ( Instance instance)

Implicit constructor for converting a pp::Instance to an instance handle.

Parameters:
[in]instanceThe instance with which this InstanceHandle will be associated.
pp::InstanceHandle::InstanceHandle ( PP_Instance  pp_instance) [inline, explicit]

This constructor explicitly converts a PP_Instance to an instance handle.

This should not be implicit because it can make some resource constructors ambiguous. PP_Instance is just a typedef for an integer, as is PP_Resource, so the compiler can get confused between the two.

Parameters:
[in]pp_instanceThe instance with which this InstanceHandle will be associated.

Function Details

PP_Instance pp::InstanceHandle::pp_instance ( ) const [inline]

The pp_instance() function returns the PP_Instance.

Returns:
A PP_Instance internal instance handle.

The documentation for this class was generated from the following file:

Authentication required

You need to be signed in with Google+ to do that.

Signing you in...

Google Developers needs your permission to do that.