`U8005566337A
`
`United States Patent
`
`[191
`
`1111 Patent Number:
`
`5,566,337
`
`Szymanski et a1.
`
`[45} Date of Patent:
`
`Oct. 15, 1996
`
`[54] METHOD AND APPARATUS FOR
`Eggnfigurmc EVEN“ IN AN OPERATING
`
`FOREIGN PATENT DOCUMENTS
`0528222
`2/1993 European 12111017.
`.
`W09ll03017
`3/1991 W0.
`
`[75]
`
`Inventors: Steven J. Szymanski, Cupertino;
`Thomas E. Saulpaugh, San Jose;
`William .1- Keenan, Redwood City, all
`of Calif.
`
`[73] Assignec: Apple Computer, Inc, Cupenino,
`Calif.
`
`[2]] Appl. No.: 242,204
`
`[22]
`
`Filed:
`
`May 13, 1994
`
`‘
`
`OTHER PUBLICATIONS
`.
`,
`08/2 2.0 Presentation Manager ProgramImng
`IBM:
`Guide‘, Mar. 1992, QUE, USA, p. 31—5, last paragrph, p.
`31—6, paragraph 3.
`
`Primary Examiner—Jack B. Harvey
`Assistant EmndnerAumali Lefkowitz
`Attorney, Agent, or Finn—Bums, Doane, Swecker & Mathis
`
`157]
`
`ABSTRACT
`
`6
`
`........................................................ G06F 9/00
`Int. Cl.
`[51]
`[52] US. CL ........................... 395/733, 395/650, 395/700
`[58] Field of Search ..................................... 395/650, 725,
`395/700. 775
`
`[551
`
`In a computer including an operating system, an event
`producer for generating an event and detecting that an event
`has occumed in the compmer and an event c0n3umer which
`need to be informed when events occur in the computer, a
`system for distributing events including a store for storing a
`specific set of events of which the at least one event
`consumer is to be informed, an event manager control unit
`References Cited
`for receiving the event from the event producer, comparing
`U S PATENT DOCUMENTS
`the received event to the stored set of events, and distrib-
`'
`'
`4
`uting an appropriate event to an appropriate event consumer,
`5,155.842 10ll992 Rubin ........................... 395/1822
`and a distributor for receiving the event from the control unit
`5.237.684
`8/1993 Record at al-
`395/650
`and directing the control 1.11111 to distribute an appropriate
`5,291,608
`3/1994 Flurry ..........
`395/725
`.
`5,305,454
`4/1994 Recordetal.
`395/650
`5,321,837
`6/1994 Daniel and
`395/650 mm 1° an ”mm” mm “mm"
`5,355,484 10/1994 Recordet al.
`395/650
`5,430,875
`7/1995 Ma .......................................... 395/650
`
`
`
`24 Claims, 10 Drawing Sheets
`
`SEQUWAL
`
`EVENY
`PRODUCER
`#1
`
`EVEN 1
`PROUJCER
`#2
`
`EVENT
`PRODUCER
`#3
`
`EVEN
`PRCMER
`:4
`
`0°
`
`Petitioner Valve - Ex. 1024, Page 1
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. l
`
`Petitioner Valve - Ex. 1024, Page 1
`
`
`
`US. Patent
`
`0ct.15, 1996
`
`Sheet 1 of 10
`
`5,566,337
`
`FIG. 1
`
`IO
`
`INPUT
`DEVICE ZO
`
`1 2
`
`
` PROCESSOR
`
`
`
`
` MEMORY 24
`
`
`
`OUTPUT
`DEVICE 22
`
`OPERATING SYSTEM
`28
`
`EVENT
`
`MANAGER 3O
`
`Petitioner Valve - Ex. 1024, Page 2
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 2
`
`Petitioner Valve - Ex. 1024, Page 2
`
`
`
`
`US. Patent
`
`
`
`
`
`Oct. 15, 1996
`
`
`
`
`
`
`Sheet 2 of 10
`
`
`
`5,566,337
`
`
`
`30
`
`\®\‘L
`
`_. ._ __ __
`
`
`
`__ ..
`
`
`330
`
`__ __ __
`
`320
`
`
`_$
`
`305
`
`
`__ __ __ __
`
`__ __|
`
`SUBSCWFHON
`
`
`
`
`MATMX
`
`EVENT
`
`QUEUE
`
`#1
`
`
`EVENT
`
`QUEUE
`
`
`#2
`
`EVENT
`
`QUEUE
`
`#3
`
`
`
`EVENT
`QUEUE
`
`#4
`
`
`
`
`
`
`
`
`
`EVENT
`
`
`MANAGER
`
`
`CONTROL
`
`
`
`331
`UNIT
`
`
`
`
`
`
`
`
`
`
`
`
`310
`
`
`BROADCAST
`
`CONSUMER
`
`#1
`
`
`BROADCAST
`
`CONSUMER
`
`
`#2
`
`BROADCAST
`
`CONSUMER
`
`#3
`
`
`
`BROADCAST
`CONSUMER
`
`#4
`
`
`350
`
`
`
`SEQUENTIAL
`CONSUMER
`
`#1
`
`
`
`SEQUENTIAL
`
`CONSUMER
`#2
`
`
`SEQUENTIAL
`
`
`CONSUMER
`#3
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`l
`
`l
`
`l
`
`|
`
`l
`
`|
`
`I
`I
`1
`
`‘ I
`
`|
`I
`l
`
`| I
`
`l
`
`I I | l
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`SEQUENTIAL
`
`
`CONSUMER
`
`
`DATABASE
`
`
`_ __ _. _ _
`
`EVENT
`EVENT
`
`
`
`
`
`
`DBTREUTOR
`DBTRBUTOR
`
`
`
`
`#2
`
`
`
`
`
`
`
`#4
`
`
`
`
`
`
`EVENT
`
`PRODUCER
`
`#1
`
`
`
`
`EVENT
`
`PRODUCER
`
`#2
`
`
`EVENT
`
`PRODUCER
`
`#3
`
`
`EVENT
`
`PRODUCER
`
`
`
`30°
`
`
`
`
`
`
`
`Petitioner Valve - Ex. 1024, Page 3
`
`Petitioner Riot Games, Inc. - EX. 1024, p. 3
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 3
`
`Petitioner Valve - Ex. 1024, Page 3
`
`
`
`
`US. Patent
`
`
`
`Oct. 15, 1996
`
`
`
`
`
`Sheet 3 of 10
`
`
`
`
`
`
`5,566,337
`
`
`
`
`FIG. 3
`
`
`
`
`FIG. 6
`
`
`
`320
`
`
`
`
`FIRST SUBSCRIPTION
`
`
`
`LAST SUBSCRIPTION
`
`
`
`
`MAXIMUM EVENTS
`
`
`
`NEXT EVENT
`
`
`
`EVENT ARRAY
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG. Sa
`/1/
`
`3300
`
`
`
`3310
`
`
`NEXT HEADER
`
`
`
`
`DISTRIBUTOR OBJECT ID
`
`
`
`
`EVENT IDENTIFIER
`
`
`
`FIRST SUBSCRIPTION
`
`
`
`LAST SUBSCRIPTION
`
`
`
`
`
`FIG. 7
`
`
`
`45
`
`
`EVENT SERVICE
`
`
`
`/
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`'
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`EVENT SUBJECT
`
`
`
`
`EVENT KIND
`
`
`
`
`
`
`
`FIG. 5b
`
`EVENT IDENTIFIER
`
`
`
`
`EVENT SUBJECT
`
`
`
`
`
`3500
`
`
`
`
`
`
`
`
`
`
`SEQUENTIAL CONSUMER OBJECT ID
`
`
`
`
`
`FIG. 8
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`40
`
`
`
`
`
`Petitioner Valve - Ex. 1024, Page 4
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 4
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 4
`
`Petitioner Valve - Ex. 1024, Page 4
`
`
`
`US. Patent
`
`Oct. 15, 1996
`
`Sheet 4 of 10
`
`5,566,337
`
`SUBSCRIPTION
`MATRIX
`330
`
`I ““““““““
`I
`SUBSCRIPTION
`STRUCTURES
`I
`
`l
`
`EVENT
`QUEUES
`320
`
`I l E
`
`FIG. 4
`
`VENT KIND
`HEADERS
`331
`
`Petitioner Valve - Ex. 1024, Page 5
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 5
`
`Petitioner Valve - Ex. 1024, Page 5
`
`
`
`US. Patent
`
`Oct. 15, 1996
`
`Sheet 5 of 10
`
`5,566,337
`
`FIG. 9A
`
`PROUJCER
`
`DEFECTS OH
`
`
`
`
`
`
`
`PRODUCER
`GENERATES
`
`
`
`
`
`GENERATES EVENT
`
`
`
`6 O 0
`
`DESCRIPTION OF
`
`EVENT
`
`6 O 2
`
`
` CALL EVENT MANAGER
`
`6 O 4
`
`Petitioner Valve - Ex. 1024, Page 6
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 6
`
`Petitioner Valve - Ex. 1024, Page 6
`
`
`
`US. Patent
`
`Oct. 15, 1996
`
`Sheet 6 of 10
`
`5,566,337
`
`FIG. QB
`
`PR0- i E as
`
`RETURNTO
`
`
`
`PROCESS
`
`ASYNCHRONOUSLY
`61 0
`
`EVENT MANAGER SENDS EVENT TO EACH
`SEQUENTIAL CONSUMER WITH
`MATCHING DATABASE ENTRIES
`61 4
`
`SEQUENTIAL CONSUMER INDICATES
`IF PROCESSING OF EVENT SHOULD
`CONTINUE OR STOP
`616
`
`
`
`
`
`
`
`
`
`
`RETURN TO
`CALLING
`
`
`PRODUCERS
`6 2 0
`
`
`EVENT HANDLED?
`61 8
`
`
`
`Petitioner Valve - Ex. 1024, Page 7
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 7
`
`Petitioner Valve - Ex. 1024, Page 7
`
`
`
`US. Patent
`
`Oct. 15, 1996
`
`Sheet 7 of 10
`
`5,566,337
`
`FIG. QC
`
`C9
`
`
`
`
`EVENT MANAGER SENDS
`EVENT TO DISTRIBUTOR T0
`
`DISTRIBUTE TO BROADCAST
`
`CONSJMERS
`
`6 2 4
`
`
`
`
`
`
`
`
`ENQUEUE EVENTS
`ACCORDING TO CALLS
`
`625
`
`YES
`
`RETURN TO
`memos:
`61 a
`
`REPLY TO
`
`6 3 O
`
`PROUJCEFi
`
`Petitioner Valve - Ex. 1024, Page 8
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 8
`
`Petitioner Valve - Ex. 1024, Page 8
`
`
`
`US. Patent
`
`Oct. 15, 1996
`
`Sheet 8 of 10
`
`5,566,337
`
`FIG. SD
`
`
`USE
`G‘ T AlifE
`ALL
`
`
`CEHOIDER
`we 0
`onsumers
`CONSUMERS
`
`
`
`PM
`CALL
`
`
`RECEIVE
`
`FOR DATA?
`
`
`6244
`6 2 4 0
`NOTICE?
`
`
`
`
`6 2 4 2
`
`
`ND
`
`
` USE
`
`
`
`GiveToSelectConsumers
`CALL
`6246
`
`
`
`
`
` USE
`GivePlaceholderToAllConsumers
`
`CALL
`6250
`
`
`
`
`
`
` USE
`GivePIaceholderToSelectConsumers
`
`CALL
`
`6252
`
`
`Petitioner Valve - Ex. 1024, Page 9
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 9
`
`Petitioner Valve - Ex. 1024, Page 9
`
`
`
`US. Patent
`
`Oct. 15, 1996
`
`Sheet 9 of 10
`
`5,566,337
`
`FIG.
`
`1 0
`
`SEQUENTIAL
`
`CALL EVENT MANAGER
`TO GET INSTALLED
`7 0 0
`
`
`
`WAIT FOR EVENT
`7 0 2
`
`
`EVENT
`
`RECEIVED?
`70 4
`
`
`
`ACT ON EVENT
`7 0 4
`
`
`
`SHOULD OTHER
`
`CONSUMERS SEE
`
`
`7 0 9
`
`EVENT HANDLED
`MESSAGE
`71 1
`
`EVENT TO BE PASSED
`TO NEXT SEQUENTIAL
`CONSJME?
`
`Petitioner Valve - Ex. 1024, Page 10
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 10
`
`Petitioner Valve - Ex. 1024, Page 10
`
`
`
`
`US. Patent
`
`
`
`Oct. 15, 1996
`
`
`
`
`
`Sheet 10 of 10
`
`
`
`
`
`5,566,337
`
`
`
`
`FIG.
`
`1 1
`
`
`
`BROADCAST
`
`
`CONSUMERS
`
`
`
`
`
`REGISTER WITH
`
`
`
`
`
`EVENT MANAGER
`
`
`8 O O
`
`
`
`BROADCAST CONSUMER
`
`
`
`CALLS EVENT MANAGER TO
`
`
`
`
`SUBSCRIBE TO KINDS OF
`
`
`
`
`EVENTS
`
`804
`
`
`
`EVENT CREATES
`
`
`
`
`EVENT QUEUE AND
`
`
`
`
`
`RETURNS
`
`8 0 2
`
`
`
`
`
`
`EVENT MANAGER ADDS
`
`
`
`
`
`ENTRIES TO SUBSCRIPTION
`
`
`
`
`
`MATRIX
`
`8 O 6
`
`
`
`BROADCAST CONSUMER
`
`
`
`
`CALLS EVENT MANAGER TO
`
`
`
`
`
`
`GET NEXT EVENT
`
`
`
`8 O 8
`
`
`
`
`ACT ON EVENT
`
`
`81 0
`
`
`
`
`Petitioner Valve - Ex. 1024, Page 11
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 11
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 11
`
`Petitioner Valve - Ex. 1024, Page 11
`
`
`
`5,566,337
`
`
`
`1
`
`METHOD AND APPARATUS FOR
`
`
`
`
`DISTRIBUTING EVENTS IN AN OPERATING
`
`
`
`
`
`SYSTEM
`
`CROSS—REFERENCE TO RELATED
`
`
`APPLICATIONS
`
`
`
`
`
`The present application is related to a patent application
`
`
`
`
`
`
`
`
`No. 08/245,141 entitled “Method and Apparatus for Han—
`
`
`
`
`
`
`
`dling Requests Regarding Information Stored in A File
`
`
`
`
`
`
`
`System”, in the name of Steven James Szymanski and Bill
`
`
`
`
`
`
`
`
`
`Monroe Brutfey, filed on May 13, 1994, herein incorporated
`
`
`
`
`
`
`
`
`by reference.
`
`
`
`
`
`
`
`
`
`BACKGROUND
`
`
`
`
`
`
`The present invention is directed to a method and appa—
`
`
`
`
`
`
`
`
`
`ratus for distributing information about events occurring in
`
`
`
`
`
`
`
`a computer, and in particular an event manager which
`
`
`
`
`
`
`
`
`manages the distribution of those events to the appropriate
`
`
`
`
`
`
`
`
`entities Within the computer.
`
`
`
`
`For purposes of this description, an event is any occur-
`
`
`
`
`
`
`
`
`
`rence in a computer of which software programs running on
`
`
`
`
`
`
`
`
`
`that computer or on a connected computer might need to be
`
`
`
`
`
`
`
`
`
`
`informed. Events may include occurrences such as, for
`
`
`
`
`
`
`
`
`example, a keystroke, a mouse click, disk insertion and
`
`
`
`
`
`
`
`
`
`ejection, network connection and disconnection, the com-
`
`
`
`
`
`
`puter entering a “sleep mode” shutdown, a window uncov-
`
`
`
`
`
`
`
`
`ered (i.c., the contents of the window need to be redis-
`
`
`
`
`
`
`
`
`
`
`played), a new file created, a directory renamed, the contents
`
`
`
`
`
`
`
`
`of file changed, and the tree space on a volume changed, etc.
`
`
`
`
`
`
`
`
`
`
`
`Interrupts and error conditions may also be counted as
`
`
`
`
`
`
`
`
`
`atypical examples of events. In particular, interrupts need to
`
`
`
`
`
`
`
`
`
`be handled by a program so an event manager is an inap-
`
`
`
`
`
`
`
`
`
`
`
`propriate solution. However, the code which does handle the
`
`
`
`
`
`
`
`
`
`interrupt might generate an event based on the interpretation
`
`
`
`
`
`
`
`
`
`of the interrupt. For example, the computer might generate
`
`
`
`
`
`
`
`
`
`an interrupt when the user inserts a floppy disk. The interrupt
`
`
`
`
`
`
`
`
`
`
`itself is unlikely to be propagated by the event manager, but
`
`
`
`
`
`
`
`
`
`
`
`it would be reasonable for the interrupt handler to produce
`
`
`
`
`
`
`
`
`
`
`a “disk inserted” event. Error conditions are similar. Most of
`
`
`
`
`
`
`
`
`
`
`the time it is necessary for one of the computer programs on
`
`
`
`
`
`
`
`
`
`
`
`
`the system to handle the error, therefore more direct point to
`
`
`
`
`
`
`
`
`
`
`
`point mechanisms are appropriate. However, there are kinds
`
`
`
`
`
`
`
`
`of errors which are more advisory in nature which would be
`
`
`
`
`
`
`
`
`
`
`
`appropriate to be sent via events. For example, some por-
`
`
`
`
`
`
`
`
`
`table computers take various actions to reduce power con—
`
`
`
`
`
`
`
`
`sumption when the battery gets low. It would be appropriate
`
`
`
`
`
`
`
`
`
`
`to produce an event called “battery low” to inform all
`
`
`
`
`
`
`
`
`
`
`software programs of the condition, and have all of the
`
`
`
`
`
`
`
`
`
`
`software which can reduce power consumption consume
`
`
`
`
`
`
`
`these events.
`
`
`Currently, known operating systems all have some type of
`
`
`
`
`
`
`
`
`
`mechanism for managing the events that occur within the
`
`
`
`
`
`
`
`
`
`computer. However, these mechanisms use a point-to-point
`
`
`
`
`
`
`
`method of managing the events. That is, the entities pro—
`
`
`
`
`
`
`
`
`
`ducing or detecting events distribute the events to the
`
`
`
`
`
`
`
`
`
`entities using the events. To accomplish this, all of the
`
`
`
`
`
`
`
`
`
`
`entities producing or detecting events must know which
`
`
`
`
`
`
`
`
`entities they must notify when a particular event is generated
`
`
`
`
`
`
`
`
`
`within the computer. This configuration is very cumbersome
`
`
`
`
`
`
`
`
`and ineflicient. Further, it is resource intensive since all
`
`
`
`
`
`
`
`
`
`entities producing or detecting events must have information
`
`
`
`
`
`
`
`
`on all the events they produce or detect and also on all the
`
`
`
`
`
`
`
`
`
`
`
`
`
`entities interested in those events. This information is both
`
`
`
`
`
`
`
`
`
`extensive and constantly changing, causing modifications to
`
`
`
`
`
`
`
`be diflicult.
`
`
`
`2
`
`Further, point-to-point mechanisms lack flexibility. Under
`
`
`
`
`
`
`point-to-point schemes, if there is a new consumer of an
`
`
`
`
`
`
`
`
`
`
`event, a new version of the producer must be released which
`
`
`
`
`
`
`
`
`
`
`knows about the new consumer. Or if a new kind of event
`
`
`
`
`
`
`
`
`
`
`
`becomes necessary, a new version of the event manager
`
`
`
`
`
`
`
`
`
`must be released which knows how to distribute the new
`
`
`
`
`
`
`
`
`
`
`kind of event.
`
`
`
`It is desirable to provide an apparatus for efficiently
`
`
`
`
`
`
`
`
`
`dealing with all kinds of events in an operating system and
`
`
`
`
`
`
`
`
`
`
`
`for distributing information regarding specific kinds of
`
`
`
`
`
`
`
`events to programs which require such information. To this
`
`
`
`
`
`
`
`
`
`end, it is also desirable to improve the system performance
`
`
`
`
`
`
`
`
`
`
`and reduce the resources required to distribute such infor-
`
`
`
`
`
`
`
`
`mation. To meet these goals, it is desirable to provide an
`
`
`
`
`
`
`
`
`
`
`
`apparatus for managing events in which communication
`
`
`
`
`
`
`
`between the event producers and consumers is facilitated
`
`
`
`
`
`
`
`
`without requiring each event producer to be aware of all of
`
`
`
`
`
`
`
`
`
`
`
`the event consumers.
`
`
`
`
`
`
`
`
`
`BRIEF STATEMENT OF THE INVENTION
`
`
`
`
`
`In accordance with the present invention, the foregoing
`
`
`
`
`
`
`
`
`objectives, as well as others, are achieved through central—
`
`
`
`
`
`
`
`
`ization of event management, and in particular, by providing
`
`
`
`
`
`
`
`
`an event manager for handling the distribution of events
`
`
`
`
`
`
`
`
`within the computer.
`
`
`
`According to one embodiment, in a computer including at
`
`
`
`
`
`
`
`
`least one event producer for detecting that an event has
`
`
`
`
`
`
`
`
`
`
`occurred in the computer and generating an event and at
`
`
`
`
`
`
`
`
`
`
`least one event consumer which need to be informed when
`
`
`
`
`
`
`
`
`
`
`events occur in the computer, a system is provided for
`
`
`
`
`
`
`
`
`
`
`distributing information about events. The system includes
`
`
`
`
`
`
`
`storing means for storing a specific set of events of which the
`
`
`
`
`
`
`
`
`
`
`
`event consumers are to be informed, an event manager
`
`
`
`
`
`
`
`
`
`control means for receiving the event from the event pro»
`
`
`
`
`
`
`
`
`
`ducer, comparing the received event to the stored set of
`
`
`
`
`
`
`
`
`
`events, and distributing an appropriate event to an appro—
`
`
`
`
`
`
`
`
`priate event consumer, and a distributor for receiving the
`
`
`
`
`
`
`
`
`
`event from the control means and directing the control
`
`
`
`
`
`
`
`
`
`means to distribute an appropriate event to an appropriate
`
`
`
`
`
`
`
`
`
`event consumer.
`
`
`According to another embodiment, a system is provided
`
`
`
`
`
`
`
`
`for distributing events occurring in a computer. The system
`
`
`
`
`
`
`
`
`comprises event producers for detecting that an event has
`
`
`
`
`
`
`
`
`
`occurred in the computer, generating an event, and gener-
`
`
`
`
`
`
`
`
`ating a description of the event and event consumers which
`
`
`
`
`
`
`
`
`
`need to be informed when events occur in the computer, the
`
`
`
`
`
`
`
`
`
`
`
`event consumers comprising a first and a second class of
`
`
`
`
`
`
`
`
`
`
`consumers. The system further comprises storing means for
`
`
`
`
`
`
`
`
`storing a specific set of events of which the event consumers
`
`
`
`
`
`
`
`
`
`
`am to be informed, event manager control means for receiv-
`
`
`
`
`
`
`
`
`
`ing the event from the event producers and comparing the
`
`
`
`
`
`
`
`
`
`
`received event to the stored set of events, distributor means,
`
`
`
`
`
`
`
`
`
`
`responsive to the event control means, for deciding if an
`
`
`
`
`
`
`
`
`
`
`event should be passed to an event consumer. The event
`
`
`
`
`
`
`
`
`
`
`manager control means comprises first means for sending an
`
`
`
`
`
`
`
`
`
`event to appropriate event consumers of a first type in
`
`
`
`
`
`
`
`
`
`
`accordance with the stored set of events, and second means
`
`
`
`
`
`
`
`
`
`
`for sending the event to appropriate event consumers of a
`
`
`
`
`
`
`
`
`
`second type responsive to the distributor means.
`
`
`
`
`
`
`
`According to another embodiment, a method is provided
`
`
`
`
`
`
`
`
`for distributing events occurring in a computer. The method
`
`
`
`
`
`
`
`
`comprises the steps of determining that an event has been
`
`
`
`
`
`
`
`
`
`
`detected by an event producer in the computer, storing, in a
`
`
`
`
`
`
`
`
`
`
`
`storing means, a specific set of events of which an event
`
`
`
`
`
`
`
`
`
`
`
`consumer is to be informed, receiving the event in an event
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`10
`
`
`
`15
`
`
`
`20
`
`
`
`25
`
`
`30
`
`
`35
`
`
`
`40
`
`
`45
`
`
`
`50
`
`
`
`55
`
`
`
`60
`
`
`65
`
`
`Petitioner Valve - Ex. 1024, Page 12
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 12
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 12
`
`Petitioner Valve - Ex. 1024, Page 12
`
`
`
`3
`
`control means from the event producer and comparing the
`
`
`
`
`
`
`
`
`
`received event to the stored set of events. The method further
`
`
`
`
`
`
`
`
`
`
`
`comprises receiving the event in a distributor means from
`
`
`
`
`
`
`
`
`
`the control means, directing the control means to distribute
`
`
`
`
`
`
`
`
`
`an appropriate event to an appropriate event consumer, and
`
`
`
`
`
`
`
`
`
`distributing, via the control means, an appropriate event to
`
`
`
`
`
`
`
`
`
`an appropriate event consumer.
`
`
`
`
`Still other objects, features and attendant advantages of
`
`
`
`
`
`
`
`
`the present invention will become apparent to those skilled
`
`
`
`
`
`
`
`
`
`in the art from a reading of the following detailed description
`
`
`
`
`
`
`
`
`
`
`of the embodiments constructed in accordance therewith,
`
`
`
`
`
`
`
`taken in conjunction with the accompanying drawings.
`
`
`
`
`
`
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`
`
`
`
`The present invention will now be described in more
`
`
`
`
`
`
`
`
`
`detail with reference to preferred embodiments of the
`
`
`
`
`
`
`
`
`method and apparatus, given only by way of example, and
`
`
`
`
`
`
`
`
`
`
`with reference to the accompanying drawings, in which:
`
`
`
`
`
`
`
`
`FIG. 1 is a block diagram of an exemplary computer on
`
`
`
`
`
`
`
`
`
`
`
`which the present invention can be implemented;
`
`
`
`
`
`
`
`FIG. 2 is a block diagram of the architecture for the event
`
`
`
`
`
`
`
`
`
`
`
`manager according to one embodiment of the present inven-
`
`
`
`
`
`
`
`
`tion;
`
`FIG. 3 is an exemplary embodiment of the event queue
`
`
`
`
`
`
`
`
`
`
`data structure according to the present invention;
`
`
`
`
`
`
`
`FIG. 4 is an exemplary embodiment of the subscription
`
`
`
`
`
`
`
`
`matrix according to the present invention;
`
`
`
`
`
`
`FIG. 5a is an exemplary embodiment of the subscription
`
`
`
`
`
`
`
`
`data structure according to the present invention;
`
`
`
`
`
`
`
`FIG. 5b is an exemplary embodiment of the sequential
`
`
`
`
`
`
`
`
`consumer entry structure according to the present invention;
`
`
`
`
`
`
`
`FIG. 6 is an exemplary embodiment of the event kind
`
`
`
`
`
`
`
`
`
`header data structure according to the present invention;
`
`
`
`
`
`
`
`
`FIG. 7 is an exemplary embodiment of the event name
`
`
`
`
`
`
`
`
`
`data structure according to the present invention;
`
`
`
`
`
`
`
`FIG. 8 is an exemplary embodiment of the event data
`
`
`
`
`
`
`
`
`
`structure according to the present invention;
`
`
`
`
`
`
`FIGS. 9A, 9B, 9C and 9D are flowchart illustrating the
`
`
`
`
`
`
`
`
`
`event handling process from the event producers’ and the
`
`
`
`
`
`
`
`
`event distributors’ point of view according to one embodi—
`
`
`
`
`
`
`
`
`ment of the present invention;
`
`
`
`
`
`FIG. 10 is a flowchart illustrating the event handling
`
`
`
`
`
`
`
`
`
`process from the sequential consumers’ point of view
`
`
`
`
`
`
`
`
`according to one embodiment of the present invention; and
`
`
`
`
`
`
`
`
`
`FIG. 11 is a flowchart illustrating the event handling
`
`
`
`
`
`
`
`
`
`process from the broadcast eonsumers’ point of view
`
`
`
`
`
`
`
`
`according to one embodiment of the present invention.
`
`
`
`
`
`
`
`
`DETAILED DESCRIPTION
`
`
`In general, the invention recognizes the need for efficient
`
`
`
`
`
`
`
`
`communications between different entities within the com-
`
`
`
`
`
`
`puter concerning events occurring within the computer. In
`
`
`
`
`
`
`
`particular, communications are required to inform entities
`
`
`
`
`
`
`within the computer about the events produced by other
`
`
`
`
`
`
`
`
`entities. The method required to handle these communica-
`
`
`
`
`
`
`
`tions is complicated by the fact that the entities involved do
`
`
`
`
`
`
`
`
`
`
`
`not know the identity of the other entities. The method is
`
`
`
`
`
`
`
`
`
`
`
`further complicated by the fact that the identity of the
`
`
`
`
`
`
`
`
`
`
`entities needing to know about events and the lists of events
`
`
`
`
`
`
`
`
`
`
`
`which can occur are subject to constant change.
`
`
`
`
`
`
`
`
`One goal for the event manager according to the present
`
`
`
`
`
`
`
`
`
`invention is to provide a common service which supports a
`
`
`
`
`
`
`
`
`
`majority of these kinds of communications. The information
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`5,566,337
`
`
`
`
`
`4
`
`which needs to be communicated is referred to as the event.
`
`
`
`
`
`
`
`
`
`
`
`According to one embodiment, the event is described by
`
`
`
`
`
`
`
`
`
`three pans, an event identifier which indicates the kind of
`
`
`
`
`
`
`
`
`
`
`event, an event subject, which identifies the entity which the
`
`
`
`
`
`
`
`
`
`
`event happened to, and event information which describes
`
`
`
`
`
`
`
`
`how the event occurred. The entities within the computer
`
`
`
`
`
`
`
`
`
`which are the sources of the information are referred to as
`
`
`
`
`
`
`
`
`
`
`
`the producers of the event. In particular, an event producer
`
`
`
`
`
`
`
`
`
`
`is any software on a computer that
`is responsible for
`
`
`
`
`
`
`
`
`
`
`generating an event or for detecting that
`the computer
`
`
`
`
`
`
`
`
`
`hardware has generated an event. The event producer then
`
`
`
`
`
`
`
`
`
`generates a description for each event it produces or detects.
`
`
`
`
`
`
`
`
`
`The entities within the computer which need to receive the
`
`
`
`
`
`
`
`
`
`
`information are referred to as consumers of the event. In
`
`
`
`
`
`
`
`
`
`
`particular, an event consumer is any program that needs to
`
`
`
`
`
`
`
`
`
`
`be informed when an event has occurred and needs to be
`
`
`
`
`
`
`
`
`
`
`
`informed of the description of the event. Any intermediate
`
`
`
`
`
`
`
`
`
`service which moderates the connection between the pro-
`
`
`
`
`
`
`
`ducers and consumers of an event is referred to as the
`
`
`
`
`
`
`
`
`
`
`distributor of the event.
`
`
`
`
`According to one embodiment of the present invention,
`
`
`
`
`
`
`
`
`there are two classes of event consumers which differ in their
`
`
`
`
`
`
`
`
`
`
`
`relationships to other consumers of an event, namely broad-
`
`
`
`
`
`
`
`
`cast consumers and sequential consumers. Broadcast con-
`
`
`
`
`
`
`sumers have no relationship with other consumers. They do
`
`
`
`
`
`
`
`
`
`not need to know if other consumers exist, nor in what order
`
`
`
`
`
`
`
`
`
`
`
`
`consumers are informed of the event, as long as they
`
`
`
`
`
`
`
`
`
`
`themselves are eventually informed. Sequential consumers,
`
`
`
`
`
`
`on the other hand, have very definite relationships with other
`
`
`
`
`
`
`
`
`
`
`consumers. They require that no other consumer be told
`
`
`
`
`
`
`
`
`
`about an event while they themselves are still processing it,
`
`
`
`
`
`
`
`
`
`
`and they require the ability to influence when in the
`
`
`
`
`
`
`
`
`
`
`sequence they receive the event. In addition, many sequen-
`
`
`
`
`
`
`
`
`tial consumers require the ability to modify the event itself,
`
`
`
`
`
`
`
`
`
`
`and even block an event from being received by other
`
`
`
`
`
`
`
`
`
`
`consumers. Consumers are defined as sequential or broad-
`
`
`
`
`
`
`
`cast based on whether they have to react to an event without
`
`
`
`
`
`
`
`
`
`
`
`
`fail. In particular, a sequential consumer must react to the
`
`
`
`
`
`
`
`
`
`
`kinds of events in which it is interested and so a distributor
`
`
`
`
`
`
`
`
`
`
`
`
`should not withhold those events from the sequential con—
`
`
`
`
`
`
`
`
`sumer. For example, a communications program would be a
`
`
`
`
`
`
`
`sequential consumer of events which notify of the dropping
`
`
`
`
`
`
`
`
`
`of a connection, since the communication program would
`
`
`
`
`
`
`
`need to respond to such an event.
`
`
`
`
`
`
`
`Broadcast consumers typically have a set of kinds of
`
`
`
`
`
`
`
`
`
`events in which they are interested and want to be notified
`
`
`
`
`
`
`
`
`
`
`
`of the next event from this set as simply as possible. Many
`
`
`
`
`
`
`
`
`
`
`
`
`broadcast consumers are interested in events that occur only
`
`
`
`
`
`
`
`
`
`to a limited set of subjects, and so one embodiment of the
`
`
`
`
`
`
`
`
`
`
`
`
`present invention provides a method for filtering events
`
`
`
`
`
`
`
`
`based on “who” they involve. In addition, the set of events
`
`
`
`
`
`
`
`
`
`
`
`in which the broadcast consumers are interested changes
`
`
`
`
`
`
`
`
`over time as does the immediacy of the interest. Thus, one
`
`
`
`
`
`
`
`
`
`
`
`embodiment of the present invention provides a method
`
`
`
`
`
`
`
`
`which allows the consumer to modify the set of events which
`
`
`
`
`
`
`
`
`
`
`
`will be delivered to the consumer. Lastly, there is no clear
`
`
`
`
`
`
`
`
`
`
`
`pattern as to whether broadcast consumers want to poll the
`
`
`
`
`
`
`
`
`
`
`event manager control unit to collect an event, or if they
`
`
`
`
`
`
`
`
`
`
`
`want to be notified asynchronously. Therefore, according to
`
`
`
`
`
`
`
`
`one embodiment, both options are supported.
`
`
`
`
`
`
`FIG. 1 is a block diagram showing an exemplary com-
`
`
`
`
`
`
`
`
`
`puter on which the software according to the present inven-
`
`
`
`
`
`
`
`
`
`tion can be implemented. The computer 10 includes a
`
`
`
`
`
`
`
`
`
`processor (CPU) 12, an external storage device 14, a disk
`
`
`
`
`
`
`
`
`
`
`storage device 16, an input/output (110) controller 18, an
`
`
`
`
`
`
`
`
`
`input dew'ce 20, an output device 22, a memory 24, and a
`
`
`
`
`
`
`
`
`
`
`
`
`common system bus 26 connecting each of the above
`
`
`
`
`
`
`
`
`
`
`
`
`10
`
`
`
`15
`
`
`
`20
`
`
`
`25
`
`
`30
`
`
`
`35
`
`
`
`
`
`45
`
`
`50
`
`
`
`55
`
`
`6O
`
`
`
`65
`
`
`Petitioner Valve - Ex. 1024, Page 13
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 13
`
`Petitioner Riot Games, Inc. - Ex. 1024, p. 13
`
`Petitioner Valve - Ex. 1024, Page 13
`
`
`
`5,566,337
`
`
`
`
`
`
`
`
`
`
`5
`
`elements. Only one input device and one output device is
`
`
`
`
`
`
`
`
`
`
`shown in FIG. 1 for ease of readability purposes. However,
`
`
`
`
`
`
`
`
`
`
`it will be appreciated that the computer 10 can include more
`
`
`
`
`
`
`
`
`
`
`
`than one such device. The processor 12, the external storage
`
`
`
`
`
`
`
`
`
`
`device 14, the disk storage device 16 and the memory 24 are
`
`
`
`
`
`
`
`
`
`
`
`
`also connected through the bus 26 and the I/O controller 18
`
`
`
`
`
`
`
`
`
`
`
`to the input and output devices 20 and 22. In addition, the
`
`
`
`
`
`
`
`
`
`
`
`
`computer 10 can also be adapted for communicating with a
`
`
`
`
`
`
`
`
`
`
`network 27.
`
`
`Stored within the memory 24 of the computer 10 are a
`
`
`
`
`
`
`
`
`
`
`number of pieces of software which can be executed by the
`
`
`
`
`
`
`
`
`
`
`processor 12. One of those pieces of software is an operating
`
`
`
`
`
`
`
`
`
`
`system 28. In one embodiment, the operating system 28 is a
`
`
`
`
`
`
`
`
`
`
`microkernel operating system capable of maintaining mul-
`
`
`
`
`
`
`tiple address spaces. An event manager 30 resides within the
`
`
`
`
`
`
`
`
`
`operating system. In an exemplary embodiment, the com-
`
`
`
`
`
`
`
`puter system 10 of the present invention is an Apple Macin—
`
`
`
`
`
`
`
`
`
`
`toshTM computer system made by Apple Computer, Inc., of
`
`
`
`
`
`
`
`
`
`Cupertino, Ca].if., and having a microprocessor and a
`
`
`
`
`
`
`
`
`memory wherein a microkemcl operating system 28 that
`
`
`
`
`
`
`
`
`includes the event manager 30 resides. The components of
`
`
`
`
`
`
`
`
`
`the computer system can be changed within the skill of the
`
`
`
`
`
`
`
`
`
`
`
`ordinary artisan once in possession of the instant disclosure.
`
`
`
`
`
`
`
`
`
`Although the present invention is described in a Macin-
`
`
`
`
`
`
`
`
`toshTM environment, it is Within the scope of the invention,
`
`
`
`
`
`
`
`
`
`
`and within the skill of the ordinarily skilled artisan,
`to
`
`
`
`
`
`
`
`
`
`
`implement the invention in a DOS, Unix, or other computer
`
`
`
`
`
`
`
`
`
`environment.
`
`The present invention relates to an architecture for an
`
`
`
`
`
`
`
`
`
`event manager for managing events that occur in an oper~
`
`
`
`
`
`
`
`
`
`ating system. Clients of the event manager include event
`
`
`
`
`
`
`
`
`consumers and event producers, that is, applications pro-
`
`
`
`
`
`
`
`grams and the various parts of the operating system, such as
`
`
`
`
`
`
`
`
`
`
`
`for example, a file manager.
`
`
`
`
`
`the present invention
`According to one embodiment,
`
`
`
`
`
`
`
`cooperates with an operating system with a microkemel
`
`
`
`
`
`
`
`
`architecture in which the kernel provides a semaphore
`
`
`
`
`
`
`
`
`synchronization mechanism and a messaging system. The
`
`
`
`
`
`
`
`messaging system creates and maintains a set of message
`
`
`
`
`
`
`
`
`
`objects and one or more port objects. The messaging system
`
`
`
`
`
`
`
`
`
`
`has a number of features. It allows a creator—defined value to
`
`
`
`
`
`
`
`
`
`be associated with each object. The messaging system also
`
`
`
`
`
`
`
`
`
`allows multiple objects to be mapped to the same port and
`
`
`
`
`
`
`
`
`
`
`
`messages to be either received from a port or have a function
`
`
`
`
`
`
`
`
`
`
`be called when a message of an appropriate type is sent to
`
`
`
`
`
`
`
`
`
`
`
`
`that port. Further, the messaging system allows the receiver
`
`
`
`
`
`
`
`
`
`of the message to determine the object to which the message
`
`
`
`
`
`
`
`
`
`
`
`was originally sent and to derive the creator—defined value
`
`
`
`
`
`
`
`
`
`for that object. One example of such a microkernel archi-
`
`
`
`
`
`
`
`
`
`tecture is provided by NuKERNELTM, used in Apple Macin-
`
`
`
`
`
`
`
`
`toshTM computers. The NuKERNELTM system is described
`
`
`
`
`
`
`
`in copending U.S. patent application Ser. No. 08/128,706,
`
`
`
`
`
`
`
`
`filed on Sep. 30, 1993, for a “System For Decentralizing
`
`
`
`
`
`
`
`
`
`
`Backing Store Control Of Virtual Memory In A Computer”,
`
`
`
`
`
`
`
`
`
`application Ser. No. 08/220,043, filed on Mar. 30, 1994, for
`
`
`
`
`
`
`
`
`
`
`an “Object Oriented Message Passing System And Method”,
`
`
`
`
`
`
`
`
`and an application entitled “System and Method Of Object
`
`
`
`
`
`
`
`
`
`Oriented Message Filtering", filed in the name of Thomas E.
`
`
`
`
`
`
`
`
`
`
`Saulpaugh and Steven J. Szymanski, on or about the date of
`
`
`
`
`
`
`
`
`
`
`
`filing of the present application. These three patent applica—
`
`
`
`
`
`
`
`
`tions are incorporated by reference herein.
`
`
`
`
`
`
`According to the messaging system, a service is provided
`
`
`
`
`
`
`
`
`by a server, and software wishing to make use of the service
`
`
`
`
`
`
`
`
`
`
`
`
`is called a client of the server. Messages are sent to a target
`
`
`
`
`
`
`
`
`
`
`
`
`by clients and received by servers. The message directs the
`
`
`
`
`
`
`
`
`
`
`server to perform a function on behalf of the client. Message
`
`
`
`
`
`
`
`
`
`
`objects are abstract entities that represent various resources
`
`
`
`
`
`
`
`
`
`
`
`6
`
`to messaging system clients. These objects may represent,
`
`
`
`
`
`
`
`
`for example, devices, files, or windows managed by a server.
`
`
`
`
`
`
`
`
`
`Clients send messages to objects, which objects are identi-
`
`
`
`
`
`
`
`
`fied by an identification labelled ObjectID.
`
`
`
`
`
`
`Message ports are abstract entities that represent a service.
`
`
`
`
`
`
`
`
`These ports may represent, for example, a device driver, a
`
`
`
`
`
`
`
`
`
`
`file system, or a window manager. Servers receive messages
`
`
`
`
`
`
`
`
`from ports, which ports are identified by a label PortID.
`
`
`
`
`
`
`
`
`
`
`Objects are assigned to a port. A message sent to an object
`
`
`
`
`
`
`
`
`
`
`
`
`is received at that object’s port. Ports and objects are created
`
`
`
`
`
`
`
`
`
`
`
`by the messagi