Content Supported by Sourcelens Consulting

VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Connector"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Option Explicit
' > For an overview of this sample application, search
'   online Help for Coffee.
' > AboutCof.Txt, in the Related Documents folder of
'   CoffWat2.vbp, also contains information about the sample.

' Connector class
' ---------------
' The Connector allows multiple clients to share a single
'   CoffeeMonitor object.  The Connector class has its
'   Instancing property set to MultiUse, so each client
'   can create its own Connector.  Each of the Connector
'   objects returns a reference to the single shared
'   CoffeeMonitor object, so all the clients share the
'   same CoffeeMonitor.  (See the CoffeeMonitor property,
'   below.)
'
' If you read "Creating an ActiveX Exe Component," in
'   Books Online, you'll notice a difference:  This
'   version of Connector doesn't have a 'use count' that
'   determines when gCoffeeMonitor should be set to
'   Nothing.  There's no need for Initialize event code
'   to increment the use count, or Terminate event code to
'   decrement and test the use count.
'
' This solves a bug described in the topic "Using the
'   Shared CoffeeMonitor" in the chapter mentioned
'   above.  For an explanation of why the use count
'   isn't needed, and how this fixes the bug, see the
'   CoffeeMonitor class module.


' CoffeeMonitor property always returns the single global
' -------------   reference to the shared instance of
'   CoffeeMonitor (which is created the first time a client
'   requests a CoffeeMonitor).
'
Public Property Get CoffeeMonitor() As CoffeeMonitor
    ' If the shared CoffeeMonitor object hasn't been
    '   created, create it and store a global reference
    '   to it.
    If gCoffeeMonitor Is Nothing Then
        Set gCoffeeMonitor = New CoffeeMonitor
    End If
    
    Set CoffeeMonitor = gCoffeeMonitor
End Property