throbber
|||||| ||||||||||||||||lll||lllll|||||ll||1IlllllllllllllllllIllllllll
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket