US6487581B1 - Apparatus and method for a multi-client event server - Google Patents

Apparatus and method for a multi-client event server Download PDF

Info

Publication number
US6487581B1
US6487581B1 US09/317,757 US31775799A US6487581B1 US 6487581 B1 US6487581 B1 US 6487581B1 US 31775799 A US31775799 A US 31775799A US 6487581 B1 US6487581 B1 US 6487581B1
Authority
US
United States
Prior art keywords
event
program code
store
connection instance
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
US09/317,757
Inventor
Kurt E. Spence
Peter Houck
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Priority to US09/317,757 priority Critical patent/US6487581B1/en
Assigned to HEWLETT-PACKARD COMPANY reassignment HEWLETT-PACKARD COMPANY ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HOUCK PETER, SPENCE KURT E.
Application granted granted Critical
Publication of US6487581B1 publication Critical patent/US6487581B1/en
Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HEWLETT-PACKARD COMPANY
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity

Definitions

  • This invention pertains to the field of networked computer systems, and more particularly to an apparatus and a method for managing event data for multiple clients in a network.
  • a universal event browser allows a client to access network event data generated by a corresponding network application, or network system.
  • the architecture disclosed for each client access to the network is supported by a single event server for each client.
  • an event server (which in the application is referred to as a product specific interface) is initially populated with network event data and then maintains event data specifically related to a corresponding client.
  • a one-to-one relationship between an event server and a client means that event changes made by a Client A are not reflected in other clients because the event server corresponding to Client A only comprises the single connection to Client A, and cannot broadcast changes to other clients.
  • Every client in the network may be beneficial for every client in the network to have access to the most updated event data at all times. While a given event server comprises event data for the entire network, only event data for a corresponding client, and not all network clients, is updated by the given event server. Its corresponding client, therefore, does not have access to updated event data from other clients. A need exists, therefore, for an apparatus and a method of managing event data for multiple clients such that every client has access to the most updated event data on the network.
  • the invention may comprise an apparatus for managing data for a plurality of clients interfacing with a network, comprising a number of computer readable media, and computer readable program code stored on the computer readable media, where the computer readable program code comprises code for implementing a data server comprising a number of interface socket connections, said code for implementing a data server comprising: program code for creating a data store, wherein the data store comprises data items generated from network systems in the network; program code for establishing a connection instance between each of said number of interface socket connections and each of the clients desiring access to the data store, and each connection instance corresponds to a different one of the clients; and program code for creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to the data store.
  • the invention may also comprise an apparatus for managing event data for a plurality of clients interfacing with a network, comprising a number of computer readable media, and computer readable program code stored on said number of computer readable media, where the computer readable program code comprises code for implementing an event server comprising a number of interface socket connections, comprising: program code for creating an event store, wherein the event store comprises events generated from network systems in the network; program code for establishing a connection instance between each of said number of interface socket connections and each of the clients desiring access to the event store, wherein each connection instance corresponds to a different one of the clients; and program code for creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said event store.
  • the invention may also comprise an apparatus for managing event data for a plurality of clients interfacing with a network, comprising a number of computer readable media, where the computer readable program code comprises code for implementing an event server comprising a number of interface socket connections, comprising: program code for creating an event store, wherein the event store comprises events generated from network systems in the network; program code for establishing a connection instance between each of said number of interface socket connections and each of the clients desiring access to the event store, wherein each connection instance corresponds to a different one of the clients; program code for creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said event store; program code for detecting requests to perform a number of tasks from the connection instance objects, wherein a given one of the tasks corresponds to a given one of the connection instance objects; program code for creating a command list, wherein the command list comprises tasks; program code for adding a task to the command list; and program code
  • the invention may also comprise a method for managing data for a plurality of clients interfacing with a network by implementing a data server comprising a number of interface socket connections, comprising: creating a data store, wherein the data store comprises data items generated from network systems in the network; establishing a connection instance between each of said number of interface socket connections and each of the clients desiring access to the data store, wherein each connection instance corresponds to a different one of the clients; and creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said data store.
  • This invention may also comprise a data server comprising a number of interface socket connections for an apparatus for managing data for a plurality of clients interfacing with a network, comprising means for creating a data store, where the data store comprises a number of data items generated from a number of network systems in the network, means for establishing a connection instance between each of said number of interface socket connections and each the clients desiring access to the data store, where each connection instance corresponds to a different one of the clients, and means for creating a connection instance object for each connection instance, where each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to the data store.
  • FIG. 1 illustrates an apparatus of the present invention.
  • FIG. 2 illustrates a method of the present invention.
  • FIG. 3 illustrates a system architecture of the present invention in a preferred embodiment.
  • FIG. 4 illustrates an internal structure of the present invention in a preferred embodiment.
  • FIG. 1 in general, illustrates an apparatus for managing data for a plurality of clients 132 , 134 , 136 interfacing with a network, comprising a number of computer readable media 100 , and computer readable program code stored on the computer readable media, where the computer readable program code comprises code for implementing a data server 102 comprising a number of interface socket connections, comprising: program code for creating a data store 118 , wherein the data store 118 comprises data items 112 , 138 , 114 , 140 , 116 , 142 generated from network systems 106 , 108 , 110 in the network; program code for establishing a connection instance 126 , 128 , 130 between each of said number of interface socket connections and each of the clients 132 , 134 , 136 desiring access to the data store 118 , and each connection instance 126 , 128 , 130 corresponds to a different one of the clients 132 , 134 , 136 ; and program code for creating a connection instance object
  • Computer readable media 100 depicted in FIG. 1 is not meant to limit the, number of computer readable media to one.
  • the purpose of FIG. 1 is to illustrate that the present invention operates on and may include computer readable media, where the media is not limited to any specific number, nor any specific machine.
  • a data store 118 of the present invention can reside on a machine different from connection instance objects 124 , 122 , 120 of the present invention, and that the present invention comprises both machines, for example.
  • the invention can reside on the same machine as a client to service that client and other clients, or that the invention can reside on one or more machines separate than all the clients.
  • the point is that the invention should not be construed as being limited to any specific number of media, or being limited to operating on any specific media.
  • FIG. 2 in general, illustrates a method for managing data for a plurality of clients interfacing with a network, comprising implementing a data server comprising a number of interface socket connections, said implementing comprising: creating and accessing a data store 200 , wherein the data store comprises data items generated from network systems in the network; establishing a connection instance 202 between the data server and each of the clients desiring access to the data store, wherein each connection instance corresponds to a different one of the clients; and creating a connection instance object 204 for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said data store.
  • a multi-client event server of the present invention captures data from a variety of network systems, and makes this network data dynamically available to any number of clients interfacing with the network.
  • the Event Server can handle more than one client, and thus has a different protocol for interacting with clients.
  • the Event Server captures event data in a program such as Hewlett-Packard's Open View® Network Node Manager® product (hereinafter NNM, which is commercially available from Hewlett-Packard Co., 3404 East Harmony Road, Fort Collins, Colo. 80528).
  • NNM Hewlett-Packard's Open View® Network Node Manager® product
  • Programs such as NNM maintain and display information regarding network events and messages to aid network operators in understanding the ongoing health of a networked environment.
  • the Event Server can interact with web clients, including a Java applet, and other types of clients including a universal viewer/browser of NNM described in the copending U.S. Application referred to above.
  • the Event Server 324 in a network system interfaces with a number of clients 300 , 302 , a PostMaster daemon 304 , a Startup Program Manager daemon (hereinafter SPMD daemon) 306 , an Event Data Store 308 , and a Server State Store 310 .
  • SPMD daemon Startup Program Manager daemon
  • the SPMD daemon 306 is a system application responsible for starting and stopping 318 all registered daemon applications, including the Event Server 324 , and also communicates 318 daemon shutdowns to the Event Server 324 .
  • an Event Store (to be discussed) internal to the Event Server 324 is initialized 322 with data from the Server State Store 310 .
  • the Server State Store 310 is periodically updated by the Event Store, and thus comprises the last-saved current state of all events within the Event Store.
  • the Event Store is then initialized 320 with data from the Event Data Store 308 .
  • the Event Data Store 308 comprises all event data known to the network system.
  • Event Store when the Event Store is initialized, the last-saved state of event data is restored 322 from the Server State Store 310 to the Event Store, and then event data that is added 320 to the Event Data Store 308 subsequent to the last save is added to the Event Store.
  • the PostMaster daemon 304 is a system application responsible for collecting event data from network resources and applications. When the PostMaster daemon receives a new event, it does a number of things. The PostMaster daemon populates the Event Data Store with the new event so that the Event Data Store comprises all network events (not shown). The PostMaster daemon also populates 316 the Event Store with the new event so that the Event Store also comprises all network events which the Event Server can then update. The PostMaster daemon 304 also assigns a universal unique identifier (hereinafter UUID) to the new event, and passes 316 the UUID to the Event Store, which maintains a hash table using the UUID as a hash lookup key to event information (this will be discussed in more detail). The PostMaster daemon may also forward new events to other interested applications.
  • UUID universal unique identifier
  • any number of clients can connect 312 , 314 to the Event Server to access and/or manipulate event data.
  • clients are Java applets that display event data in a web-enabled browser. It is also within the scope of this invention, however, that other client applications can be created to interface with the Event Server.
  • a Processing Loop 402 detects a number of connection types on the Event Server's 324 interface socket connections 404 .
  • the Event Server 324 is initialized to listen for communication from the following: PostMaster daemon 304 , SPMD daemon 306 , a first well-known port, and a second well-known port.
  • the PostMaster daemon 304 and SPMD daemon 306 are discussed, supra.
  • the first and second well-known ports are connections that clients can use to communicate with the Event Server 324 , where the first well-known port is used exclusively for clients to initially connect to the Event Server 324 , and for the Event Server 324 to return data back to clients.
  • the Event Server's 324 internal Event Store 418 is a master cache of updated events for the server that has several sources of event data. At initialization, as discussed above, the Event Store 418 is populated first by the Server State Store 310 to restore last-updated events, and then by the Event Data Store 308 for events added to the network system after the Server State Store 310 was last updated by the Event Store 418 . During the session life of the Event Server 324 , the Event Store 418 is updated with new events sent by the PostMaster daemon 304 , and with updated events (i.e. deletions and modifications) originating from clients 300 , 302 . The Event Server 324 periodically writes the Event Store 418 to the Server State Store 310 . The Event Store 418 events are maintained in a hash table where the event's UUID (provided by the PostMaster daemon, supra) is the hash lookup key into the hash table. The following table lists event information stored by the Event Store for each event:
  • a socket handler 406 When a client connects to the Event Server 324 for the first time (on an interface socket connection 404 that is a first well-known port), a socket handler 406 is created 420 for that client.
  • the socket handler 406 assigns an interface socket descriptor to the client which corresponds to an interface socket connection so that the client can have private two-way communication with the Event Server 324 (through its connection instance object 416 , to be discussed).
  • the socket handler 406 maintains this connection correspondence 436 so that whenever a client 300 , 302 connects to an interface socket connection 404 , the Event Server 324 knows which client has connected.
  • the client is then added 422 to the Client List 412 , which is a list of all currently connected clients.
  • connection instance object 416 is created when a client initially connects to the Event Server 324 .
  • a connection instance object 416 comprises attributes of a client's connection instance, or actual connection, to the Event Server 324 for the purpose of communicating with the Event Server 324 to access and manipulate event data.
  • a connection instance object can comprise filter criteria and display attributes of the connection instance. There are two types of connection instances.
  • An event connection instance comprises filtered data and allows a client to access event data from the Event Store 418 according to the client's filter criteria, which may specify events with a particular severity, description, time, or owned-state, for example.
  • the Event Server retrieves matching events from the Event Store 418 , and returns the matching events' UUID's back to the event connection instance object 416 , where they are stored in an array of the event connection instance object.
  • the UUID's in the array can subsequently be cross-referenced to a corresponding UUID in the Event Store's hash table for the purpose of retrieving requested event data.
  • the array of UUID's can be updated when the client requests new filtering data (by sending new filter criteria), when new events matching then client's filter criteria are added to the Event Store, or when changes to the Event Store require that all clients synchronize with the change.
  • a category connection instance comprises all network event data which is organized into categories of events, and allows its client to view these categorized events. These instances ensure that clients that register as category clients have dynamic access to event categories. Rather than an array of UUID's, a category connection instance object 416 maintains a matrix of event categories, where each category comprises an event in that category having the highest severity level which is not in a user-acknowledge state.
  • Existing event data in the Event Store 418 can also be manipulated (i.e. deleted and modified).
  • a task i.e. “delete an event” or “modify an event”
  • a main thread 400 of the Event Server 324 maintains the Command List 410 by processing each task through a request thread 414 . It does this by removing 426 a task from the Command List 410 , and routing 428 the task to the request thread 414 that is created and maintained by a thread command handler 408 of the main thread.
  • the request thread 414 performs the task that it was assigned to by interacting 434 with an appropriate connection instance object 416 (i.e., the client that requested the task).
  • connection instance object 416 interacts 430 with the Event Store 418 to retrieve and manipulate event data as specified by the requesting client.
  • a connection instance object 416 interacts with the Event Store 418 , it executes within a request thread 414 .
  • the Event Server 324 determines that the task affects other clients, it will broadcast this task to the other clients by placing an appropriate number of tasks on the Command List 410 , creating a request thread for each task, and routing each task to a request thread.
  • a client can place 432 tasks on the Command List 410 (through a corresponding connection instance object), and any logic executing within the main thread 400 of the Event Server 324 can place 424 tasks on the Command List 410 .
  • the Command List 410 can comprise a number of command items that are used in the Event Server 324 .
  • the following table lists these events, where the Event Clients column describes what action is taken by a client corresponding to an event connection. instance object, and where the Category Clients column describes what action is taken by a client corresponding to a category connection instance object.
  • THREADCMD Default identifier IGNORED IGNORED UNDEFINED for an unknown action.
  • THREADCMD New event(s) Determine if new Determine if ADD added to the event(s) severity values global Event matches current for categories Store. filters, and if so, need updating, add event(s) and and if so, modify notify client. category and notify client.
  • THREADCMD A client has Determine if the Determine if the DEL requested that an event(s) is current severity event(s) in the currently in the values for the current Event filtered list, and if categories need Store be so, remove updating, and if removed. event(s) and so, modify notify client.
  • THREADCMD A client has Determine if Determine if the ACK requested that an event(s) is current severity event(s) in the currently in the values for the current Event filtered list, and if categories need Store be set to so, modify list updating, and if the and notify client. so, modify acknowledged category and state. notify client.
  • THREADCMD A client has Determine if Determine if the UNACK requested that an event(s) is current severity event(s) in the currently in the values for the current Event filtered list, and if categories need Store be set to so, modify list updating, and if the and notify client. so, modify acknowledged category and state. notify client.
  • THREADCMD An event(s) in the Ignored Determine if the STATUS — current Event current severity CHANGE Store has been values for the modified by the categories need main thread. updating, and if so, modify category and notify client.
  • THREADCMD A message string Send the string Ignored MESSAGE is to be sent to to the client. the client for display.
  • THREADCMD The connection All data All data EXIT instance is to structures are structures are terminate. freed and the freed and the thread of thread of execution exits. execution exits.
  • THREADCMD The entire Event All data All data SHUTDOWN Server is exiting. structures are structures are freed and the freed and the thread of thread of execution exits. execution exits.
  • THREADCMD The main thread Re-create Re-create NEW_ES has performed filtered list from category/severity modifications to new Event Store matrix and notify the current Event and notify client. client. Store, so all event data must be re-analyzed by all clients.
  • THREADCMD A client is All event field Ignored PRINT_ALL requesting that all data for each events in its list of event events be printed represented in to a specific the filtered list printer are sent to the destination. indicated printer destination.
  • THREADCMD A client is Event field data Ignored. PRINT_SEL requesting that its for each event selected events represented in in its filtered list the supplied of events be selection list are printed to a sent to the specific printer indicted printer destination. destination.
  • THREADCMD A client is Event field data Ignored. SAVE_ALL requesting that all for each event events in its list of represented in events be saved the filtered list to a specific file are sent to the name. indicated file name. THREADCMD — A client is Event field data Ignored. SAVE_SEL requesting that its for each event selected events represented in in its filtered list the supplied of events be selection list are saved to a sent to the specific file indicated file name. name. THREADCMD — The client is to The beep Ignored. BEEP create an audible request is sent beep sound. to the client.
  • THREADCMD The entire state The filtered list The DBLOADED of saved events can be created category/severity (from the Server and the client matrix can be State Store and updated. created and the the Event Data client updated. Store) have been loaded in to the main Event Store.
  • THREADCMD A client has All events are Ignored. DEL_ALL indicated that all removed from of the events in the filtered list its filtered list be and the client deleted from the notified. This current Event command will Store. only be delivered to one connection instance, so after the deletion, this instance will put command data for the THREADCMD — DEL command on the command list with the list of events that have been deleted.
  • THREADCMD A client has All events are Ignored.
  • ACK_ALL indicated that all acknowledged in of the events in the filtered list its and the client notified. This command will only be delivered to one connection instance, so after the deletion, this instance will put command data for the THREADCMD — ACK command on the command list with the list of events that have been deleted.
  • THREADCMD A client has All events are Ignored.
  • UNACK_ALL indicated that all unacknowledged of the events in in the filtered list its filtered list be and the client set to the notified. This unacknowledged command will state in the only be current Event delivered to one Store. connection instance, so after the deletion, this instance will put command data for the THREADCMD — UNACK command on the command list with the list of events that have been deleted.
  • THREADCMD Notification from Connection Connection BES_WAITING the main thread instance sets a instance sets a that the main state flag that it state flag that it Event Store is is waiting in the is waiting in the still being loaded Event Store. Event Store. from the Event Data Store, and Server State Store, so it is unavailable for access.
  • THREADCMD Notification from Connection Connection BES_READ the main thread instance unsets instance unsets that the main a state flag that a state flag that Event Store ha it is waiting in it is waiting in been loaded from the Event Store. the Event Store. the Event Data Store and Server State Store, and is now available.
  • THREADCMD A client has Determine if the Determine if the EVENT — requested that an event(s) is severity values CHANGED event(s) in the currently in the for the current Event filtered list, and if categories need Store have its so, modify list updating, and if category and/or and notify client. so, modify severity value(s) category and changed. notify client.
  • THREADCMD Connection Ignored. Ignored.
  • THREADLIST instance notifying CLEAN main thread that it is ready to terminate its thread processing.
  • THREADCMD The main thread Ignored. Ignored. THREADLIST — is terminating a CLEAN2 thread of processing.
  • THREADCMD A client has Determine if the Determine if the CHANGE — requested that an event(s) is current severity SEVERITY event(s) in the currently in the values for the current Event filtered list, and if categories need Store have its so, modify list updating, and if severity value and notify client. so, modify changed. category and notify client.
  • THREADCMD_DEL_ALL, THREADCMD_ACK_ALL, THREADCMD_UNACK_ALL are examples of command items that are broadcast to other clients as a result of the command item, or task, affecting other clients.
  • an event server for managing event data for clients
  • the present invention is not limited to managing event data.
  • an event server generally be utilized as a data server for managing other types of data, including, but not limited to, database data, and traffic data of systems on a network.

Abstract

A method and apparatus for implementing a data server with interface socket connections for managing data for clients interfacing with a network, having program code for creating a data store, where the data store comprises data items generated from network systems in the network; program code for establishing a connection instance between each of the interface socket connections and each of a number of clients desiring access to the data store, where each connection instance corresponds to a different one of the clients; and program code for creating a connection instance object for each connection instance, where each connection instance object has attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to the data store.

Description

This application is related to the U.S. Application of Kurt Spence and John Yunker entitled “UNIVERSAL VIEWER/BROWSER FOR NETWORK AND SYSTEM EVENTS USING A UNIVERSAL USER INTERFACE GENERATOR, A GENERIC PRODUCTION SPECIFICATION LANGUAGE, AND PRODUCT SPECIFIC INTERFACES”, Ser. No. 08/986,601 filed Dec. 8, 1997 now U.S. Pat. No. 6,185,600, and incorporates by reference all that is disclosed therein.
FIELD OF THE INVENTION
This invention pertains to the field of networked computer systems, and more particularly to an apparatus and a method for managing event data for multiple clients in a network.
BACKGROUND OF THE INVENTION
The task of creating client/server architectures to promote the efficient processing of data is a constant challenge in the computer industry. As disclosed in the copending U.S. Application above, a universal event browser allows a client to access network event data generated by a corresponding network application, or network system. The architecture disclosed for each client access to the network is supported by a single event server for each client. Within that architecture, an event server (which in the application is referred to as a product specific interface) is initially populated with network event data and then maintains event data specifically related to a corresponding client. In that architecture, a one-to-one relationship between an event server and a client means that event changes made by a Client A are not reflected in other clients because the event server corresponding to Client A only comprises the single connection to Client A, and cannot broadcast changes to other clients.
In many instances, it may be beneficial for every client in the network to have access to the most updated event data at all times. While a given event server comprises event data for the entire network, only event data for a corresponding client, and not all network clients, is updated by the given event server. Its corresponding client, therefore, does not have access to updated event data from other clients. A need exists, therefore, for an apparatus and a method of managing event data for multiple clients such that every client has access to the most updated event data on the network.
SUMMARY OF THE INVENTION
This invention is, in general, directed to an apparatus and method for managing data for a plurality of clients interfacing with a network. Thus, the invention may comprise an apparatus for managing data for a plurality of clients interfacing with a network, comprising a number of computer readable media, and computer readable program code stored on the computer readable media, where the computer readable program code comprises code for implementing a data server comprising a number of interface socket connections, said code for implementing a data server comprising: program code for creating a data store, wherein the data store comprises data items generated from network systems in the network; program code for establishing a connection instance between each of said number of interface socket connections and each of the clients desiring access to the data store, and each connection instance corresponds to a different one of the clients; and program code for creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to the data store.
The invention may also comprise an apparatus for managing event data for a plurality of clients interfacing with a network, comprising a number of computer readable media, and computer readable program code stored on said number of computer readable media, where the computer readable program code comprises code for implementing an event server comprising a number of interface socket connections, comprising: program code for creating an event store, wherein the event store comprises events generated from network systems in the network; program code for establishing a connection instance between each of said number of interface socket connections and each of the clients desiring access to the event store, wherein each connection instance corresponds to a different one of the clients; and program code for creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said event store.
The invention may also comprise an apparatus for managing event data for a plurality of clients interfacing with a network, comprising a number of computer readable media, where the computer readable program code comprises code for implementing an event server comprising a number of interface socket connections, comprising: program code for creating an event store, wherein the event store comprises events generated from network systems in the network; program code for establishing a connection instance between each of said number of interface socket connections and each of the clients desiring access to the event store, wherein each connection instance corresponds to a different one of the clients; program code for creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said event store; program code for detecting requests to perform a number of tasks from the connection instance objects, wherein a given one of the tasks corresponds to a given one of the connection instance objects; program code for creating a command list, wherein the command list comprises tasks; program code for adding a task to the command list; and program code for processing a task, comprising program code for removing a given one of the tasks from the command list and program code for creating a request thread, wherein a given connection instance object executes within said request thread, and the given connection instance object corresponds to said given one of the tasks.
The invention may also comprise a method for managing data for a plurality of clients interfacing with a network by implementing a data server comprising a number of interface socket connections, comprising: creating a data store, wherein the data store comprises data items generated from network systems in the network; establishing a connection instance between each of said number of interface socket connections and each of the clients desiring access to the data store, wherein each connection instance corresponds to a different one of the clients; and creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said data store.
This invention may also comprise a data server comprising a number of interface socket connections for an apparatus for managing data for a plurality of clients interfacing with a network, comprising means for creating a data store, where the data store comprises a number of data items generated from a number of network systems in the network, means for establishing a connection instance between each of said number of interface socket connections and each the clients desiring access to the data store, where each connection instance corresponds to a different one of the clients, and means for creating a connection instance object for each connection instance, where each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to the data store.
BRIEF DESCRIPTION OF THE DRAWINGS
An illustrative and presently preferred embodiment of the invention is illustrated in the drawings in which:
FIG. 1 illustrates an apparatus of the present invention.
FIG. 2 illustrates a method of the present invention.
FIG. 3 illustrates a system architecture of the present invention in a preferred embodiment.
FIG. 4 illustrates an internal structure of the present invention in a preferred embodiment.
DESCRIPTION OF PREFERRED EMBODIMENTS
FIG. 1, in general, illustrates an apparatus for managing data for a plurality of clients 132, 134, 136 interfacing with a network, comprising a number of computer readable media 100, and computer readable program code stored on the computer readable media, where the computer readable program code comprises code for implementing a data server 102 comprising a number of interface socket connections, comprising: program code for creating a data store 118, wherein the data store 118 comprises data items 112, 138, 114, 140, 116, 142 generated from network systems 106, 108, 110 in the network; program code for establishing a connection instance 126, 128, 130 between each of said number of interface socket connections and each of the clients 132, 134, 136 desiring access to the data store 118, and each connection instance 126, 128, 130 corresponds to a different one of the clients 132, 134, 136; and program code for creating a connection instance object 124, 122, 120 for each connection instance 126, 128, 130, wherein each connection instance object 124, 122, 120 comprises attributes determined by its corresponding client 132, 134, 136, and each connection instance object 124, 122, 120 provides its corresponding client 132, 134, 136 with access 144, 146, 148 to the data store 118. Computer readable media 100 depicted in FIG. 1 is not meant to limit the, number of computer readable media to one. The purpose of FIG. 1 is to illustrate that the present invention operates on and may include computer readable media, where the media is not limited to any specific number, nor any specific machine. In other words, it is conceivable that a data store 118 of the present invention can reside on a machine different from connection instance objects 124, 122, 120 of the present invention, and that the present invention comprises both machines, for example. Also, it is conceivable that the invention can reside on the same machine as a client to service that client and other clients, or that the invention can reside on one or more machines separate than all the clients. The point is that the invention should not be construed as being limited to any specific number of media, or being limited to operating on any specific media.
FIG. 2, in general, illustrates a method for managing data for a plurality of clients interfacing with a network, comprising implementing a data server comprising a number of interface socket connections, said implementing comprising: creating and accessing a data store 200, wherein the data store comprises data items generated from network systems in the network; establishing a connection instance 202 between the data server and each of the clients desiring access to the data store, wherein each connection instance corresponds to a different one of the clients; and creating a connection instance object 204 for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said data store.
Introduction
A multi-client event server of the present invention (hereinafter Event Server) captures data from a variety of network systems, and makes this network data dynamically available to any number of clients interfacing with the network. Unlike an event server of the invention disclosed in the related patent application above, the Event Server can handle more than one client, and thus has a different protocol for interacting with clients. In a preferred embodiment, the Event Server captures event data in a program such as Hewlett-Packard's Open View® Network Node Manager® product (hereinafter NNM, which is commercially available from Hewlett-Packard Co., 3404 East Harmony Road, Fort Collins, Colo. 80528). Programs such as NNM maintain and display information regarding network events and messages to aid network operators in understanding the ongoing health of a networked environment. The Event Server can interact with web clients, including a Java applet, and other types of clients including a universal viewer/browser of NNM described in the copending U.S. Application referred to above.
As shown in FIG. 3, the Event Server 324 in a network system interfaces with a number of clients 300, 302, a PostMaster daemon 304, a Startup Program Manager daemon (hereinafter SPMD daemon) 306, an Event Data Store 308, and a Server State Store 310.
Initializing the Event Server
The SPMD daemon 306 is a system application responsible for starting and stopping 318 all registered daemon applications, including the Event Server 324, and also communicates 318 daemon shutdowns to the Event Server 324. When the Event Server 324 first starts up, an Event Store (to be discussed) internal to the Event Server 324 is initialized 322 with data from the Server State Store 310. The Server State Store 310 is periodically updated by the Event Store, and thus comprises the last-saved current state of all events within the Event Store. The Event Store is then initialized 320 with data from the Event Data Store 308. The Event Data Store 308 comprises all event data known to the network system. Therefore, when the Event Store is initialized, the last-saved state of event data is restored 322 from the Server State Store 310 to the Event Store, and then event data that is added 320 to the Event Data Store 308 subsequent to the last save is added to the Event Store.
Maintaining the Event Store
The PostMaster daemon 304 is a system application responsible for collecting event data from network resources and applications. When the PostMaster daemon receives a new event, it does a number of things. The PostMaster daemon populates the Event Data Store with the new event so that the Event Data Store comprises all network events (not shown). The PostMaster daemon also populates 316 the Event Store with the new event so that the Event Store also comprises all network events which the Event Server can then update. The PostMaster daemon 304 also assigns a universal unique identifier (hereinafter UUID) to the new event, and passes 316 the UUID to the Event Store, which maintains a hash table using the UUID as a hash lookup key to event information (this will be discussed in more detail). The PostMaster daemon may also forward new events to other interested applications.
Accessing Event Data
Once the Event Server is initialized, any number of clients can connect 312, 314 to the Event Server to access and/or manipulate event data. In a preferable embodiment, clients are Java applets that display event data in a web-enabled browser. It is also within the scope of this invention, however, that other client applications can be created to interface with the Event Server.
A preferred embodiment of the Event Server comprises the following:
Processing Loop;
Socket Handler;
Thread Command Handler;
Connection Instance Object;
Event Store;
Client List;
Command List;
Main Thread; and
Request Threads.
As illustrated in FIG. 4, a Processing Loop 402 detects a number of connection types on the Event Server's 324 interface socket connections 404. At system startup, the Event Server 324 is initialized to listen for communication from the following: PostMaster daemon 304, SPMD daemon 306, a first well-known port, and a second well-known port. The PostMaster daemon 304 and SPMD daemon 306 are discussed, supra. The first and second well-known ports are connections that clients can use to communicate with the Event Server 324, where the first well-known port is used exclusively for clients to initially connect to the Event Server 324, and for the Event Server 324 to return data back to clients.
The Event Server's 324 internal Event Store 418 is a master cache of updated events for the server that has several sources of event data. At initialization, as discussed above, the Event Store 418 is populated first by the Server State Store 310 to restore last-updated events, and then by the Event Data Store 308 for events added to the network system after the Server State Store 310 was last updated by the Event Store 418. During the session life of the Event Server 324, the Event Store 418 is updated with new events sent by the PostMaster daemon 304, and with updated events (i.e. deletions and modifications) originating from clients 300, 302. The Event Server 324 periodically writes the Event Store 418 to the Server State Store 310. The Event Store 418 events are maintained in a hash table where the event's UUID (provided by the PostMaster daemon, supra) is the hash lookup key into the hash table. The following table lists event information stored by the Event Store for each event:
TABLE 1
Field Description
packedUUID the event's assigned universal unique identifier (in
packed-byte format)
uuid the event's assigned universal unique identifier (in a
character string format)
category the category (scalar) assigned to the event
severity the severity value (scalar) assigned to the event
date the date when the event was generated with the server (in
character string format)
desc the description string assigned to the event
source the internet host identifier for system that generated the
event
event_status a state flag to indicate if the event is in an acknowledged
or deleted state
recvdTime numeric date representation for when the PostMaster
daemon received this trap from the server
eventType internal (scalar) event type identifier
ovObjId the OpenView object database ID assigned to this event,
if assigned (where used in OpenView)
timeBuf an Event Server internal date structure that also includes
a scalar order element (to differentiate events that arrived
during the same second)
orig_packet the complete encoded data for the event that was sent by
the PostMaster daemon (used when saving events to the
Server State Store)
orig_pack_len the length of the orig_packet field value
lastMod a structure that maintains information about clients that
make modifications to saved events (audit trail)
When a client connects to the Event Server 324 for the first time (on an interface socket connection 404 that is a first well-known port), a socket handler 406 is created 420 for that client. The socket handler 406 assigns an interface socket descriptor to the client which corresponds to an interface socket connection so that the client can have private two-way communication with the Event Server 324 (through its connection instance object 416, to be discussed). The socket handler 406 maintains this connection correspondence 436 so that whenever a client 300, 302 connects to an interface socket connection 404, the Event Server 324 knows which client has connected. The client is then added 422 to the Client List 412, which is a list of all currently connected clients.
Browsing Event Data
In addition to the socket handler, a connection instance object 416 is created when a client initially connects to the Event Server 324. A connection instance object 416 comprises attributes of a client's connection instance, or actual connection, to the Event Server 324 for the purpose of communicating with the Event Server 324 to access and manipulate event data. For instance, a connection instance object can comprise filter criteria and display attributes of the connection instance. There are two types of connection instances.
An event connection instance comprises filtered data and allows a client to access event data from the Event Store 418 according to the client's filter criteria, which may specify events with a particular severity, description, time, or owned-state, for example. Using the filter criteria of the event connection instance object 416, the Event Server retrieves matching events from the Event Store 418, and returns the matching events' UUID's back to the event connection instance object 416, where they are stored in an array of the event connection instance object. The UUID's in the array can subsequently be cross-referenced to a corresponding UUID in the Event Store's hash table for the purpose of retrieving requested event data. The array of UUID's can be updated when the client requests new filtering data (by sending new filter criteria), when new events matching then client's filter criteria are added to the Event Store, or when changes to the Event Store require that all clients synchronize with the change.
A category connection instance comprises all network event data which is organized into categories of events, and allows its client to view these categorized events. These instances ensure that clients that register as category clients have dynamic access to event categories. Rather than an array of UUID's, a category connection instance object 416 maintains a matrix of event categories, where each category comprises an event in that category having the highest severity level which is not in a user-acknowledge state.
Manipulating Event Data
Existing event data in the Event Store 418 can also be manipulated (i.e. deleted and modified). To manipulate event data, a task, (i.e. “delete an event” or “modify an event”) is added 424, 432 to a Command List 410. A main thread 400 of the Event Server 324 maintains the Command List 410 by processing each task through a request thread 414. It does this by removing 426 a task from the Command List 410, and routing 428 the task to the request thread 414 that is created and maintained by a thread command handler 408 of the main thread. The request thread 414 performs the task that it was assigned to by interacting 434 with an appropriate connection instance object 416 (i.e., the client that requested the task). The connection instance object 416 interacts 430 with the Event Store 418 to retrieve and manipulate event data as specified by the requesting client. When a connection instance object 416 interacts with the Event Store 418, it executes within a request thread 414. If the Event Server 324 determines that the task affects other clients, it will broadcast this task to the other clients by placing an appropriate number of tasks on the Command List 410, creating a request thread for each task, and routing each task to a request thread. In a preferred embodiment, a client can place 432 tasks on the Command List 410 (through a corresponding connection instance object), and any logic executing within the main thread 400 of the Event Server 324 can place 424 tasks on the Command List 410.
The Command List 410 can comprise a number of command items that are used in the Event Server 324. The following table lists these events, where the Event Clients column describes what action is taken by a client corresponding to an event connection. instance object, and where the Category Clients column describes what action is taken by a client corresponding to a category connection instance object.
TABLE 2
Command I.D. Description Event Clients Category Clients
THREADCMD Default identifier IGNORED IGNORED
UNDEFINED for an unknown
action.
THREADCMD New event(s) Determine if new Determine if
ADD added to the event(s) severity values
global Event matches current for categories
Store. filters, and if so, need updating,
add event(s) and and if so, modify
notify client. category and
notify client.
THREADCMD A client has Determine if the Determine if the
DEL requested that an event(s) is current severity
event(s) in the currently in the values for the
current Event filtered list, and if categories need
Store be so, remove updating, and if
removed. event(s) and so, modify
notify client. category and
notify client.
THREADCMD A client has Determine if Determine if the
ACK requested that an event(s) is current severity
event(s) in the currently in the values for the
current Event filtered list, and if categories need
Store be set to so, modify list updating, and if
the and notify client. so, modify
acknowledged category and
state. notify client.
THREADCMD A client has Determine if Determine if the
UNACK requested that an event(s) is current severity
event(s) in the currently in the values for the
current Event filtered list, and if categories need
Store be set to so, modify list updating, and if
the and notify client. so, modify
acknowledged category and
state. notify client.
THREADCMD An event(s) in the Ignored Determine if the
STATUS current Event current severity
CHANGE Store has been values for the
modified by the categories need
main thread. updating, and if
so, modify
category and
notify client.
THREADCMD A message string Send the string Ignored
MESSAGE is to be sent to to the client.
the client for
display.
THREADCMD The connection All data All data
EXIT instance is to structures are structures are
terminate. freed and the freed and the
thread of thread of
execution exits. execution exits.
THREADCMD The entire Event All data All data
SHUTDOWN Server is exiting. structures are structures are
freed and the freed and the
thread of thread of
execution exits. execution exits.
THREADCMD The main thread Re-create Re-create
NEW_ES has performed filtered list from category/severity
modifications to new Event Store matrix and notify
the current Event and notify client. client.
Store, so all
event data must
be re-analyzed
by all clients.
THREADCMD A client is All event field Ignored
PRINT_ALL requesting that all data for each
events in its list of event
events be printed represented in
to a specific the filtered list
printer are sent to the
destination. indicated printer
destination.
THREADCMD A client is Event field data Ignored.
PRINT_SEL requesting that its for each event
selected events represented in
in its filtered list the supplied
of events be selection list are
printed to a sent to the
specific printer indicted printer
destination. destination.
THREADCMD A client is Event field data Ignored.
SAVE_ALL requesting that all for each event
events in its list of represented in
events be saved the filtered list
to a specific file are sent to the
name. indicated file
name.
THREADCMD A client is Event field data Ignored.
SAVE_SEL requesting that its for each event
selected events represented in
in its filtered list the supplied
of events be selection list are
saved to a sent to the
specific file indicated file
name. name.
THREADCMD The client is to The beep Ignored.
BEEP create an audible request is sent
beep sound. to the client.
THREADCMD The entire state The filtered list The
DBLOADED of saved events can be created category/severity
(from the Server and the client matrix can be
State Store and updated. created and the
the Event Data client updated.
Store) have been
loaded in to the
main Event
Store.
THREADCMD A client has All events are Ignored.
DEL_ALL indicated that all removed from
of the events in the filtered list
its filtered list be and the client
deleted from the notified. This
current Event command will
Store. only be
delivered to one
connection
instance, so
after the
deletion, this
instance will put
command data
for the
THREADCMD
DEL command
on the command
list with the list
of events that
have been
deleted.
THREADCMD A client has All events are Ignored.
ACK_ALL indicated that all acknowledged in
of the events in the filtered list
its and the client
notified. This
command will
only be
delivered to one
connection
instance, so
after the
deletion, this
instance will put
command data
for the
THREADCMD
ACK command
on the command
list with the list
of events that
have been
deleted.
THREADCMD A client has All events are Ignored.
UNACK_ALL indicated that all unacknowledged
of the events in in the filtered list
its filtered list be and the client
set to the notified. This
unacknowledged command will
state in the only be
current Event delivered to one
Store. connection
instance, so
after the
deletion, this
instance will put
command data
for the
THREADCMD
UNACK
command on the
command list
with the list of
events that have
been deleted.
THREADCMD Notification from Connection Connection
BES_WAITING the main thread instance sets a instance sets a
that the main state flag that it state flag that it
Event Store is is waiting in the is waiting in the
still being loaded Event Store. Event Store.
from the Event
Data Store, and
Server State
Store, so it is
unavailable for
access.
THREADCMD Notification from Connection Connection
BES_READ the main thread instance unsets instance unsets
that the main a state flag that a state flag that
Event Store ha it is waiting in it is waiting in
been loaded from the Event Store. the Event Store.
the Event Data
Store and Server
State Store, and
is now available.
THREADCMD A client has Determine if the Determine if the
EVENT requested that an event(s) is severity values
CHANGED event(s) in the currently in the for the
current Event filtered list, and if categories need
Store have its so, modify list updating, and if
category and/or and notify client. so, modify
severity value(s) category and
changed. notify client.
THREADCMD Connection Ignored. Ignored.
THREADLIST instance notifying
CLEAN main thread that
it is ready to
terminate its
thread
processing.
THREADCMD The main thread Ignored. Ignored.
THREADLIST is terminating a
CLEAN2 thread of
processing.
THREADCMD A client has Determine if the Determine if the
CHANGE requested that an event(s) is current severity
SEVERITY event(s) in the currently in the values for the
current Event filtered list, and if categories need
Store have its so, modify list updating, and if
severity value and notify client. so, modify
changed. category and
notify client.
In TABLE 2, THREADCMD_DEL_ALL, THREADCMD_ACK_ALL, THREADCMD_UNACK_ALL, are examples of command items that are broadcast to other clients as a result of the command item, or task, affecting other clients.
While the preferred embodiment of the present invention described herein has been directed to an event server for managing event data for clients, it is to be understood that the present invention is not limited to managing event data. It is also within the scope of this invention that an event server generally be utilized as a data server for managing other types of data, including, but not limited to, database data, and traffic data of systems on a network.
While illustrative and presently preferred embodiments of the invention have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art.

Claims (25)

What is claimed is:
1. An apparatus for managing event data for a plurality of clients interfacing with a network, comprising:
a. a number of computer readable media; and
b. computer readable program code stored on said number of computer readable media, said computer readable program code for implementing an event server comprising a number of interface socket connections, said code for implementing said event server comprising:
i. program code for creating an event store, wherein said event store comprises a number of events generated from a number of network systems in said network;
ii. program code for establishing a connection instance between each of said number of interface socket connections and each of a number of clients desiring access to said event store, wherein each connection instance corresponds to a different one of said number of clients;
iii. program code for creating a connection instance object for each connection instance, wherein each, connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said event store; and
iv. program code for manipulating said event data in said event store, comprising:
1. program code for detecting requests to perform a number of tasks from said connection instance objects, wherein a given one of said tasks corresponds to a given one of said connection instance objects;
2. program code for creating a command list, wherein said command list comprises said number of tasks;
3. program code for adding a given one of said number of tasks to said command list; and
4. program code for processing a given said task, comprising:
A. program code for removing a given one of said number of tasks from said command list; and
B. program code for creating a request thread, wherein a given one of said connection instance objects executes within said request thread, and said given one of said connection instance objects corresponds to said given one of said number of tasks.
2. An apparatus as in claim 1, wherein said program code for establishing said each connection instance comprises program code for establishing one of a plurality of connection instance types, said plurality of connection instance types comprising:
a. an event connection instance comprising filtered event data, said filtered event data determined by a corresponding client's filter criteria, and said filtered event data comprising a number of said number of events in said event store; and
b. a category connection instance comprising event data, said event data organized into categories of event data.
3. An apparatus as in claim 2, additionally comprising program code for maintaining an array of filtered event data, wherein said array comprises a universal unique identifier for each of said number of events of said filtered event data, wherein said universal unique identifier corresponds to a given one of said number of events of said event store.
4. An apparatus as in claim 3, wherein said program code for creating an event store comprises program code for creating a hash table, wherein said hash table comprises said number of events of said event store, and each of said number of events of said event store corresponds to one of said universal unique identifiers.
5. An apparatus as in claim 1, additionally comprising program code for creating a number of additional request threads, wherein said number corresponds to a number of clients affected by said given one of said number of tasks from said command list.
6. An apparatus as in claim 1, wherein said program code for detecting requests to perform a number of tasks comprises program code for detecting a request to delete a number of said number of events.
7. An apparatus as in claim 1, wherein said program code for detecting requests to perform a number of tasks comprises program code for modifying a severity value of a number of said number of events.
8. An apparatus as in claim 1, wherein said program code for detecting requests to perform a number of tasks comprises program code for modifying a state value of a number of said number of events.
9. An apparatus as in claim 1, wherein said program code for implementing an event server comprises program code for implementing an event server that executes in a main thread, and said program code for detecting requests to perform a number of tasks comprises detecting requests from said main thread.
10. An apparatus as in claim 1, wherein said program code for detecting requests to perform a number of tasks comprises detecting requests from said number of clients.
11. An apparatus as in claim 1, additionally comprising program code for creating a thread command handler, wherein said thread command handler maintains a list of said request threads, and wherein each of said request threads is created in response to detecting said requests to perform said number of tasks.
12. An apparatus as in claim 1, additionally comprising program code for creating a socket handler for a given said connection instance, wherein said socket handler assigns an interface socket descriptor to a client corresponding to said given connection instance, and a given said interface socket descriptor reference a given one of said number of interface socket connections for said corresponding client to communicate with said event server.
13. An apparatus as in claim 1, additionally comprising program code for maintaining a client list, wherein said client list maintains a list of said number of clients corresponding to said number of connection instances.
14. An apparatus for managing event data for a plurality of clients interfacing with a network, comprising:
a. a number of computer readable media; and
b. computer readable program code stored on said number of computer readable media, said computer readable program code for implementing an event server comprising a number of interface socket connections, said code for implementing said event server comprising:
i. program code for creating an event store, wherein said event store comprises a number of events generated from a number of network systems in said network;
ii. program code for establishing a connection instance between each of said number of interface socket connections and each of a number of clients desiring access to said event store, wherein each connection instance corresponds to a different one of said number of clients;
iii. program code for creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said event store;
iv. program code for maintaining said event store, comprising:
1. program code for initializing said event store with event data, comprising:
A. program code for populating said event store from a server state store, wherein said server state store comprises last-saved event data of said event server; and
B. program code for populating said event store from an event data store, wherein said event data store comprises all event data related to said number of network systems in said network;
2. program code for receiving a number of new events from a postmaster daemon, wherein said postmaster daemon collects said number of new events from said network, and forwards said events to said event store of said event server; and
3. program code for changing said event data of said event store, wherein requests for said changing originate from clients corresponding to said number of connection instances.
15. An apparatus as in claim 14, additionally comprising program code for maintaining said server state store, wherein said server state store is periodically populated by said event store.
16. An apparatus for managing event data for a plurality of clients interfacing with a network, comprising:
a. a number of computer readable media; and
b. computer readable program code stored on said number of computer readable media, said computer readable program code for implementing an event server comprising a number of interface socket connections, said code for implementing said event server comprising:
i. program code for creating and accessing an event store, wherein said event store comprises a number of events generated from a number of network systems in said network;
ii. program code for establishing a connection instance between each of said number of interface socket connections and each of a number of clients desiring access to said event store, wherein each connection instance corresponds to a different one of said number of clients;
iii. program code for creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said event store;
iv. program code for detecting requests to perform a number of tasks from said connection instance objects, wherein a given one of said tasks corresponds to a given one of said connection instance objects;
v. program code for creating a command list, wherein said command list comprises said number of tasks;
vi. program code for adding a given one of said number of tasks to said command list; and
vii. program code for processing a given said task, comprising:
(1) program code for removing a given one of said number of tasks from said command list; and
(2) program code for creating a request thread, wherein a given one of said connection instance objects executes within said request thread, and said given one of said connection instance objects corresponds to said given one of said number of tasks.
17. An apparatus as in claim 16, wherein said program code for establishing said each connection instance comprises program code for establishing one of a plurality of connection instance types, said plurality of connection instance types comprising:
a. an event connection instance comprising filtered event data, said filtered event data determined by a corresponding client's filter criteria, and said filtered event data comprising a number of said number of events in said event store; and
b. a category connection instance comprising event data, said event data organized into categories of event data.
18. An apparatus as in claim 17, additionally comprising program code for maintaining an array of filtered event data, wherein said array comprises a universal unique identifier for each of said number of events of said filtered event data, wherein said universal unique identifier corresponds to a given one of said number of events of said event store.
19. An apparatus as in claim 18, wherein said program code for creating an event store comprises program code for creating a hash table, wherein said hash table comprises said number of events of said event store, and each of said number of events of said event store corresponds to one of said universal unique identifiers.
20. An apparatus as in claim 16, additionally comprising program code for maintaining said event store, comprising:
a. program code for initializing said event store with event data, comprising:
i. program code for populating said event store from a server state store, wherein said server state store comprises last-saved event data of said event server; and
ii. program code for populating said event store from an event data store, wherein said event data store comprises all event data related to said number of network systems in said network;
b. program code for receiving a number of new events from a postmaster daemon, wherein said postmaster daemon collects said number of new events from said network, and forwards said events to said event store of said event server; and
c. program code for changing said event data of said event store, wherein requests for said changing originate from clients corresponding to said number of connection instances.
21. A method for managing data for a plurality of clients interfacing with a network by implementing a data server comprising a number of interface socket connections, comprising:
a. creating a data store, wherein said data store comprises a number of data items generated from a number of network systems in said network;
b. establishing a connection instance between each of said number of interface socket connections and each of a number of clients desiring access to said data store, wherein each connection instance corresponds to a different one of said number of clients;
c. creating a connection instance object for each connection instance, wherein each connection instance object comprises attributes determined by its corresponding client, and each connection instance object provides its corresponding client with access to said data store;
d. detecting requests to perform a number of tasks from said connection instance objects, wherein a given one of said tasks corresponds to a given one of said connection instance objects;
e. creating a command list, wherein said command list comprises said number of tasks;
f. adding a given one of said number of tasks to said command list; and
g. processing a given said task, comprising:
i. removing a given one of said number of tasks from said command list; and
ii. creating a request thread, wherein a given one of said connection instance objects executes within said request thread, and said given one of said connection instance objects corresponds to said given one of said number of tasks.
22. A method as in claim 21, wherein said creating a data store comprises creating an event store comprising event data, wherein said event data comprises a number of event generated from a number of network systems in said network.
23. A method as in claim 22, wherein said establishing a connection instance comprises establishing one of a plurality of connection instance types, said plurality of connection instance types comprising:
a. an event connection instance comprising filtered event data, said filtered event data determined by a corresponding client's filter criteria, and said filtered event data comprising a number of said number of events in said event store; and
b. a category connection instance comprising event data, said event data organized into categories of event data.
24. A method as in claim 23, additionally comprising maintaining an array of filtered event data, wherein said array comprises a universal unique identifier for each of said number of events of said filtered event data, wherein said universal unique identifier corresponds to a given one of said number of events of said event store.
25. A method as in claim 24, wherein said creating an event store comprises creating a hash table, wherein said hash table comprises said number of events of said event store, and each of said number of events of said event store corresponds to one of said universal unique identifiers.
US09/317,757 1999-05-24 1999-05-24 Apparatus and method for a multi-client event server Expired - Fee Related US6487581B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/317,757 US6487581B1 (en) 1999-05-24 1999-05-24 Apparatus and method for a multi-client event server

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/317,757 US6487581B1 (en) 1999-05-24 1999-05-24 Apparatus and method for a multi-client event server

Publications (1)

Publication Number Publication Date
US6487581B1 true US6487581B1 (en) 2002-11-26

Family

ID=23235151

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/317,757 Expired - Fee Related US6487581B1 (en) 1999-05-24 1999-05-24 Apparatus and method for a multi-client event server

Country Status (1)

Country Link
US (1) US6487581B1 (en)

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020161894A1 (en) * 2001-04-27 2002-10-31 International Business Machines Corporation Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface
US20030061257A1 (en) * 2001-09-25 2003-03-27 Javier Cardona Multithreaded universal daemon for network data exchanges
US20050015487A1 (en) * 2000-05-17 2005-01-20 Tetsuro Motoyama Method and system of remote diagnostic, control and information collection using a dynamic linked library of multiple formats and multiple protocols with intelligent protocol processor
US20050108147A1 (en) * 2003-11-03 2005-05-19 Alan Scroope Transaction processing
US20050251540A1 (en) * 2004-05-10 2005-11-10 Sim-Tang Siew Y Method and system for real-time event journaling to provide enterprise data services
US20050262377A1 (en) * 2004-05-07 2005-11-24 Sim-Tang Siew Y Method and system for automated, no downtime, real-time, continuous data protection
US20060064416A1 (en) * 2004-09-17 2006-03-23 Sim-Tang Siew Y Method and system for data reduction
US20060168103A1 (en) * 2000-05-17 2006-07-27 Tetsuro Motoyama Method and system of remote diagnostic control and information collection using a dynamic linked library of multiple formats and multiple protocols
US7181487B1 (en) * 2000-07-07 2007-02-20 Schneider Automation Inc. Method and system for transmitting and activating an application requesting human intervention in an automation network
US20070094312A1 (en) * 2004-05-07 2007-04-26 Asempra Technologies, Inc. Method for managing real-time data history of a file system
US20080313187A1 (en) * 2000-08-11 2008-12-18 Jewett Douglas E Storage system capable of authenticating hosts on a network
US20100031309A1 (en) * 2008-07-31 2010-02-04 International Business Machines Corporation Policy based control of message delivery
US7680834B1 (en) 2004-06-08 2010-03-16 Bakbone Software, Inc. Method and system for no downtime resychronization for real-time, continuous data protection
US7689602B1 (en) 2005-07-20 2010-03-30 Bakbone Software, Inc. Method of creating hierarchical indices for a distributed object system
US20100217872A1 (en) * 2009-02-26 2010-08-26 Microsoft Corporation Notification model over a server-to-server connection pool
US7904913B2 (en) 2004-11-02 2011-03-08 Bakbone Software, Inc. Management interface for a system that provides automated, real-time, continuous data protection
US8052749B2 (en) 2003-12-23 2011-11-08 Sadra Medical, Inc. Methods and apparatus for endovascular heart valve replacement comprising tissue grasping elements
US8131723B2 (en) 2007-03-30 2012-03-06 Quest Software, Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US8151140B2 (en) 2005-07-20 2012-04-03 Quest Software, Inc. Method and system for virtual on-demand recovery for real-time, continuous data protection
US8364648B1 (en) 2007-04-09 2013-01-29 Quest Software, Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
US10993805B2 (en) 2008-02-26 2021-05-04 Jenavalve Technology, Inc. Stent for the positioning and anchoring of a valvular prosthesis in an implantation site in the heart of a patient
US11065138B2 (en) 2016-05-13 2021-07-20 Jenavalve Technology, Inc. Heart valve prosthesis delivery system and method for delivery of heart valve prosthesis with introducer sheath and loading system
US11185405B2 (en) 2013-08-30 2021-11-30 Jenavalve Technology, Inc. Radially collapsible frame for a prosthetic valve and method for manufacturing such a frame
US11197754B2 (en) 2017-01-27 2021-12-14 Jenavalve Technology, Inc. Heart valve mimicry
US11337800B2 (en) 2015-05-01 2022-05-24 Jenavalve Technology, Inc. Device and method with reduced pacemaker rate in heart valve replacement
US11357624B2 (en) 2007-04-13 2022-06-14 Jenavalve Technology, Inc. Medical device for treating a heart valve insufficiency
WO2022193897A1 (en) * 2021-03-18 2022-09-22 华为技术有限公司 Service deployment method, apparatus, and system
CN115118585A (en) * 2021-03-18 2022-09-27 华为技术有限公司 Service deployment method, device and system
US11517431B2 (en) 2005-01-20 2022-12-06 Jenavalve Technology, Inc. Catheter system for implantation of prosthetic heart valves
US11564794B2 (en) 2008-02-26 2023-01-31 Jenavalve Technology, Inc. Stent for the positioning and anchoring of a valvular prosthesis in an implantation site in the heart of a patient
US11589981B2 (en) 2010-05-25 2023-02-28 Jenavalve Technology, Inc. Prosthetic heart valve and transcatheter delivered endoprosthesis comprising a prosthetic heart valve and a stent

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721825A (en) * 1996-03-15 1998-02-24 Netvision, Inc. System and method for global event notification and delivery in a distributed computing environment
US5881269A (en) * 1996-09-30 1999-03-09 International Business Machines Corporation Simulation of multiple local area network clients on a single workstation
US5941950A (en) * 1996-11-07 1999-08-24 Samsung Electronics, Co., Ltd. Socket binding method in communication system using socket function
US6029201A (en) * 1997-08-01 2000-02-22 International Business Machines Corporation Internet application access server apparatus and method
US6105067A (en) * 1998-06-05 2000-08-15 International Business Machines Corp. Connection pool management for backend servers using common interface
US6154782A (en) * 1997-09-19 2000-11-28 Fujitsu Limited Server switching between communication modes for clients coupled to the server
US6185600B1 (en) * 1997-12-08 2001-02-06 Hewlett-Packard Company Universal viewer/browser for network and system events using a universal user interface generator, a generic product specification language, and product specific interfaces
US6304893B1 (en) * 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6330557B1 (en) * 1998-06-30 2001-12-11 Sun Microsystems, Inc. Method and system for storing data in a hash table that eliminates the necessity of key storage

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721825A (en) * 1996-03-15 1998-02-24 Netvision, Inc. System and method for global event notification and delivery in a distributed computing environment
US6304893B1 (en) * 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US5881269A (en) * 1996-09-30 1999-03-09 International Business Machines Corporation Simulation of multiple local area network clients on a single workstation
US5941950A (en) * 1996-11-07 1999-08-24 Samsung Electronics, Co., Ltd. Socket binding method in communication system using socket function
US6029201A (en) * 1997-08-01 2000-02-22 International Business Machines Corporation Internet application access server apparatus and method
US6154782A (en) * 1997-09-19 2000-11-28 Fujitsu Limited Server switching between communication modes for clients coupled to the server
US6185600B1 (en) * 1997-12-08 2001-02-06 Hewlett-Packard Company Universal viewer/browser for network and system events using a universal user interface generator, a generic product specification language, and product specific interfaces
US6105067A (en) * 1998-06-05 2000-08-15 International Business Machines Corp. Connection pool management for backend servers using common interface
US6330557B1 (en) * 1998-06-30 2001-12-11 Sun Microsystems, Inc. Method and system for storing data in a hash table that eliminates the necessity of key storage

Cited By (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060168103A1 (en) * 2000-05-17 2006-07-27 Tetsuro Motoyama Method and system of remote diagnostic control and information collection using a dynamic linked library of multiple formats and multiple protocols
US7617311B2 (en) 2000-05-17 2009-11-10 Ricoh Company Ltd. Method and system of remote diagnostic, control and information collection using a dynamic linked library of multiple formats and multiple protocols with intelligent protocol processor
US20050015487A1 (en) * 2000-05-17 2005-01-20 Tetsuro Motoyama Method and system of remote diagnostic, control and information collection using a dynamic linked library of multiple formats and multiple protocols with intelligent protocol processor
US7359970B2 (en) 2000-05-17 2008-04-15 Ricoh Company, Ltd. Method and system of remote diagnostic control and information collection using a dynamic linked library of multiple formats and multiple protocols
US7356579B1 (en) * 2000-05-17 2008-04-08 Ricoh Company, Ltd. Method and system of remote diagnostic, control and information collection using a dynamic linked library of multiple formats and multiple protocols
US7120674B1 (en) 2000-05-17 2006-10-10 Ricoh Company, Ltd. Method and system of remote diagnostic, control and information collection using a dynamic linked library of multiple formats and multiple protocols with intelligent protocol processor
US7181487B1 (en) * 2000-07-07 2007-02-20 Schneider Automation Inc. Method and system for transmitting and activating an application requesting human intervention in an automation network
US20080313187A1 (en) * 2000-08-11 2008-12-18 Jewett Douglas E Storage system capable of authenticating hosts on a network
US8271606B2 (en) 2000-08-11 2012-09-18 Summit Data Systems Llc Network-based storage system capable of allocating storage partitions to hosts
US20080313301A1 (en) * 2000-08-11 2008-12-18 Jewett Douglas E Network-based storage system capable of allocating storage partitions to hosts
US20020161894A1 (en) * 2001-04-27 2002-10-31 International Business Machines Corporation Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface
US7203756B2 (en) * 2001-04-27 2007-04-10 International Business Machines Corporation Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface
US20030061257A1 (en) * 2001-09-25 2003-03-27 Javier Cardona Multithreaded universal daemon for network data exchanges
US20050108147A1 (en) * 2003-11-03 2005-05-19 Alan Scroope Transaction processing
US8052749B2 (en) 2003-12-23 2011-11-08 Sadra Medical, Inc. Methods and apparatus for endovascular heart valve replacement comprising tissue grasping elements
US20070094312A1 (en) * 2004-05-07 2007-04-26 Asempra Technologies, Inc. Method for managing real-time data history of a file system
US20050262377A1 (en) * 2004-05-07 2005-11-24 Sim-Tang Siew Y Method and system for automated, no downtime, real-time, continuous data protection
US20060282697A1 (en) * 2004-05-07 2006-12-14 Asempra Technologies, Inc. Method and system for automated, no downtime, real-time, continuous data protection
US20050251540A1 (en) * 2004-05-10 2005-11-10 Sim-Tang Siew Y Method and system for real-time event journaling to provide enterprise data services
US8060889B2 (en) 2004-05-10 2011-11-15 Quest Software, Inc. Method and system for real-time event journaling to provide enterprise data services
US7680834B1 (en) 2004-06-08 2010-03-16 Bakbone Software, Inc. Method and system for no downtime resychronization for real-time, continuous data protection
US20060064416A1 (en) * 2004-09-17 2006-03-23 Sim-Tang Siew Y Method and system for data reduction
US8650167B2 (en) 2004-09-17 2014-02-11 Dell Software Inc. Method and system for data reduction
US8195628B2 (en) 2004-09-17 2012-06-05 Quest Software, Inc. Method and system for data reduction
US7904913B2 (en) 2004-11-02 2011-03-08 Bakbone Software, Inc. Management interface for a system that provides automated, real-time, continuous data protection
US8544023B2 (en) 2004-11-02 2013-09-24 Dell Software Inc. Management interface for a system that provides automated, real-time, continuous data protection
US11517431B2 (en) 2005-01-20 2022-12-06 Jenavalve Technology, Inc. Catheter system for implantation of prosthetic heart valves
US8151140B2 (en) 2005-07-20 2012-04-03 Quest Software, Inc. Method and system for virtual on-demand recovery for real-time, continuous data protection
US7689602B1 (en) 2005-07-20 2010-03-30 Bakbone Software, Inc. Method of creating hierarchical indices for a distributed object system
US8200706B1 (en) 2005-07-20 2012-06-12 Quest Software, Inc. Method of creating hierarchical indices for a distributed object system
US7979441B2 (en) 2005-07-20 2011-07-12 Quest Software, Inc. Method of creating hierarchical indices for a distributed object system
US8365017B2 (en) 2005-07-20 2013-01-29 Quest Software, Inc. Method and system for virtual on-demand recovery
US8375248B2 (en) 2005-07-20 2013-02-12 Quest Software, Inc. Method and system for virtual on-demand recovery
US8429198B1 (en) 2005-07-20 2013-04-23 Quest Software, Inc. Method of creating hierarchical indices for a distributed object system
US8639974B1 (en) 2005-07-20 2014-01-28 Dell Software Inc. Method and system for virtual on-demand recovery
US8352523B1 (en) 2007-03-30 2013-01-08 Quest Software, Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US8972347B1 (en) 2007-03-30 2015-03-03 Dell Software Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US8131723B2 (en) 2007-03-30 2012-03-06 Quest Software, Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US8364648B1 (en) 2007-04-09 2013-01-29 Quest Software, Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
US8712970B1 (en) 2007-04-09 2014-04-29 Dell Software Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
US11357624B2 (en) 2007-04-13 2022-06-14 Jenavalve Technology, Inc. Medical device for treating a heart valve insufficiency
US11564794B2 (en) 2008-02-26 2023-01-31 Jenavalve Technology, Inc. Stent for the positioning and anchoring of a valvular prosthesis in an implantation site in the heart of a patient
US10993805B2 (en) 2008-02-26 2021-05-04 Jenavalve Technology, Inc. Stent for the positioning and anchoring of a valvular prosthesis in an implantation site in the heart of a patient
US11154398B2 (en) 2008-02-26 2021-10-26 JenaValve Technology. Inc. Stent for the positioning and anchoring of a valvular prosthesis in an implantation site in the heart of a patient
US20100031309A1 (en) * 2008-07-31 2010-02-04 International Business Machines Corporation Policy based control of message delivery
US8886787B2 (en) * 2009-02-26 2014-11-11 Microsoft Corporation Notification for a set of sessions using a single call issued from a connection pool
US20100217872A1 (en) * 2009-02-26 2010-08-26 Microsoft Corporation Notification model over a server-to-server connection pool
US11589981B2 (en) 2010-05-25 2023-02-28 Jenavalve Technology, Inc. Prosthetic heart valve and transcatheter delivered endoprosthesis comprising a prosthetic heart valve and a stent
US11185405B2 (en) 2013-08-30 2021-11-30 Jenavalve Technology, Inc. Radially collapsible frame for a prosthetic valve and method for manufacturing such a frame
US11337800B2 (en) 2015-05-01 2022-05-24 Jenavalve Technology, Inc. Device and method with reduced pacemaker rate in heart valve replacement
US11065138B2 (en) 2016-05-13 2021-07-20 Jenavalve Technology, Inc. Heart valve prosthesis delivery system and method for delivery of heart valve prosthesis with introducer sheath and loading system
US11197754B2 (en) 2017-01-27 2021-12-14 Jenavalve Technology, Inc. Heart valve mimicry
WO2022193897A1 (en) * 2021-03-18 2022-09-22 华为技术有限公司 Service deployment method, apparatus, and system
CN115118585A (en) * 2021-03-18 2022-09-27 华为技术有限公司 Service deployment method, device and system

Similar Documents

Publication Publication Date Title
US6487581B1 (en) Apparatus and method for a multi-client event server
US6845393B1 (en) Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and services
US8838703B2 (en) Method and system for message processing
US5721825A (en) System and method for global event notification and delivery in a distributed computing environment
US7840611B2 (en) High availability for event forwarding
US7640317B2 (en) Configuration commit database approach and session locking approach in a two-stage network device configuration process
US7395328B2 (en) Method and system for detecting a dead server
KR101150146B1 (en) System and method for managing cached objects using notification bonds
US20070162567A1 (en) Managing network-enabled devices
KR20010103731A (en) Method and apparatus for the dynamic filtering and routing of events
JP2003501881A (en) Method and apparatus for multicasting
JP2001034528A (en) Data management device for object to be managed
US6992985B1 (en) Method and system for auto discovery of IP-based network elements
US20090165011A1 (en) Resource management method, information processing system, information processing apparatus, and program
JP4132738B2 (en) A computerized method of determining application server availability
US20080052341A1 (en) System and method for processing data associated with a transmission in a data communication system
US7275250B1 (en) Method and apparatus for correlating events
US20030005091A1 (en) Method and apparatus for improved monitoring in a distributed computing system
US20110246541A1 (en) Data management apparatus and method
CN112214377B (en) Equipment management method and system
US6883024B2 (en) Method and apparatus for defining application scope and for ensuring finite growth of scaled distributed applications
JP3666619B2 (en) How to find and age printers in a network
US7493625B2 (en) Hierarchical event filtering for multiple parent event types
EP1892624B1 (en) System and method for processing operational data associated with a transmission in a data communication system
US6748454B1 (en) Method and apparatus for a user extensible event structure

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT-PACKARD COMPANY, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SPENCE KURT E.;HOUCK PETER;REEL/FRAME:010064/0759;SIGNING DATES FROM 19990618 TO 19990622

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:026945/0699

Effective date: 20030131

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20141126