The Reusable echnique

The manual technique for using distributed components is pretty cool, as it allows you to write code to dynamically connect to remote components. Let’s combine our knowledge from the three techniques discussed earlier to see if we can do any better. If you look at the code in the OnManual handler (in the previous section), you would realize that the code can be generalized. With this observation, let’s wrap it up into a template class so that it will be easier to use in the future. With this mentality, we will write a smart pointer template class that allows us to use a specified interface pointer on a specific remote machine. This smart pointer class will be similar to the ones we’ve seen earlier in this chapter. It differs from all the smart pointers discussed thus far, because it allows us to specify the target server destination programmatically.

The RemotePtr Class

Let’s call this smart pointer class RemotePtr, which will allow a client to simply do the following:

  • Instantiate the class, setting an interface type, its class identifier, and its interface identifiers as template parameters. During instantiation, a remote server name can be passed along.

  • Call interface methods directly using the overloaded arrow operator (i.e., operator->).

The RemotePtr class is a template class that takes an actual interface type and references to its class and interface identifiers. Below is the implementation of the RemotePtr class separated in digestible chunks.

//------------------------------------------------------------------------ ...

Get Learning DCOM now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.