Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

 

 

 

 

Components issue events in order to inform The events API provides components with a way to signal other components that something a certain event has happened. occurred. For instance a WWW proxy might issue an event when the user makes a request or a response is received. A virus scanner might signal an event when some malware has been detected. Other components can register themselves as event sinks and be notified when a specific event has occurred. Some typical events that can occur in WinGate include

  • When a web browser connects to a WinGate proxy service
  • When the Kaspersky AV scanner detects a virus
  • When a WinGate SMTP service receives an email
  • When client software connects via NAT
  • When WinGate starts up or shuts down

 

Column
width400px
Panel
titleTable of Contents

Table of Contents

 

The general object structure for event sources those events have occurred. 

Setting up an event source

Event generators are called event sources and their general object structure is as follows:

Gliffy Diagram
nameEventOverview

 

Setting up an event source

Adding event source support to your component requires:

  1. Registering a class (template) for your event source with EventRegisterSourceClass. This class describes the events and parameters to those events that instantiations of the event source will contain. You can then instantiate an event source based on this template without having to respecify all of the events and parameters again. For example: The WWW Proxy Service in WinGate registers a source class that describes the events a WWW proxy service can create. Because you can have multiple proxy services, each with the exact same events and event parameter types, all that is needed is to register the event source class once, and then instantiate a new event source from this class when the user creates a new WWW Proxy Service.
  2. Add events to the class with EventRegisterEvent
  3. Add datum (parameters) to the events of the class with EventRegisterEventDatum
  4. Optionally place the event into a realm with EventAssociateRealm
  5. Instantiate the source with EventRegisterEventSource

...

...

A full sink requires you to register the sink and then manage it via the events API. You can attach it to event, detach, receive notifications of new events in the system and much more. The WinGate Policy module Engine component is one such sink component. It dynamically attaches and detaches event sinks when users drop event sources into the various policies.

A minisink on the other hand is registered by the component and then the events system manages displaying and hooking the minisink to compatible events. You just need to supply a few functions via the EventMiniSinkEngineInterface and EventMiniSinkGUIInterface and the framework does the rest. There are of course limitations to minisinks and they are described more in the Minisinks section.

...