US20010000811A1 - Method and system for managing data while sharing application programs - Google Patents

Method and system for managing data while sharing application programs Download PDF

Info

Publication number
US20010000811A1
US20010000811A1 US09/742,583 US74258300A US2001000811A1 US 20010000811 A1 US20010000811 A1 US 20010000811A1 US 74258300 A US74258300 A US 74258300A US 2001000811 A1 US2001000811 A1 US 2001000811A1
Authority
US
United States
Prior art keywords
computer system
application program
action
data
instance
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.)
Abandoned
Application number
US09/742,583
Inventor
Phillip May
Christopher Mairs
Conor Foley
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.)
Microsoft Technology Licensing LLC
Picture Tel Corp
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to US09/742,583 priority Critical patent/US20010000811A1/en
Publication of US20010000811A1 publication Critical patent/US20010000811A1/en
Assigned to MICROSOFT CORPORATION, PICTURE TEL CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: DATA CONNECTION LIMITED
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Definitions

  • the present invention relates generally to a computer method and system for sharing application programs, and, more specifically, to a method and system for managing data while sharing application programs.
  • a network is a group of computers that are connected by communications facilities.
  • a network enables the transfer of information in electronic form between computers.
  • each of the computers has local application programs, such as a word processing program, that can be executed at that computer.
  • These application programs may access files that contain data, such as a word processing document.
  • the files can be transferred from one computer to another using the network.
  • Some computers allow a user to execute an application program at one computer and have the screen output of that application program be displayed at one other computer. In this way, two users at distant locations can follow the execution of the application program. Indeed, some computers even allow the user at the other computer to input data that is sent to the executing application. For example, the two users can simultaneously see at their computers the contents of a word processing document as it is being modified, and both can participate in modifying the word processing document.
  • Such use of an application program is known as “application sharing.”
  • each computer receives the output of the application program (i.e., application output) for display. Each computer then stores this application output in a data pool at that computer.
  • the data pool contains the same data and is referred to as a “shared data pool.”
  • the shared data pool stores data for an application program. Either of the users at the computers may provide input to the application program.
  • the application program processes the input and stores the output in the shared data pool.
  • the application data from the shared data pool is transmitted to each computer. Then each application program at each computer displays the received data from the shared data pool at that computer.
  • one of the computers i.e., the guard computer
  • the guard computer modifies the shared data pool and then sends indications to the computers which are using that shared data pool, indicating the modification. In this manner, each computer receives the modifications to the shared data pool. It would be useful for each computer to have direct access to the shared data pool independent of each other computer.
  • the present invention provides a method and system for managing data shared by multiple instances of a shared application program.
  • a shared application program has instances executing simultaneously on multiple computers and has a copy of data that is being shared by each instance of the application program.
  • Each computer maintains a copy of the shared data.
  • an instance of the shared application program modifies the shared data, the modifications are sent to the other computers.
  • Each of these other computers stores the data in its copy of the shared data.
  • each instance of the application program at these computers updates its user interface to reflect the modifications to the shared data.
  • An object management (OM) system provides services through which shared application programs can manage the shared data.
  • each computer has a copy of the OM system.
  • the OM system under the direction of the shared application program, manages the adding, deleting, and modifying of the shared data.
  • the OM system also controls the transmitting of modifications to the copy of the shared data to the other computers.
  • an application program is shared among a plurality of computers.
  • Each computer executes an instance of the application program, and each instance of the application program has application data.
  • Each computer also has a connection to each other computer, has an object management system for synchronizing the application data, and has a display on which the application data is displayed.
  • an action to be performed on the application data is received from a user.
  • an action indication is transmitted from the instance of the application program to the object management system at that computer.
  • the action indication indicates the received action.
  • the transmitted action indication is received from the instance of the application program.
  • the received action indication is broadcast by the object management system to each other object management system at each other connected computer.
  • the object management system performs the action indicated by the received action indication on the application data.
  • the object management system also notifies the instance of the application program that the action was performed on the application data. Under control of the instance of the application program, the notification is received from the object management system. Then the application program updates the display based on the application data on which the action was performed.
  • the broadcast action indication is received from the other computer. Then the object management system performs the action indicated by the received action indication on the application data. The object management system also notifies the instance of the application program at that computer that the action was performed on the application data. Under control of the instance of the application program, the notification from the object management system is received. Then the instance of the application program updates the display based on the application data on which the action was performed.
  • a new computer joins in sharing an application program with a plurality of other computers.
  • Each computer has a connection to each other computer.
  • Each computer that is sharing the application program has an instance of the application program and has a synchronized data area containing data output by the instance of the application program.
  • a joint message is broadcast to the other computers indicating that the new computer is to share the application program.
  • the new computer receives from each other computer a node identification that identifies that computer.
  • the new computer selects one of the computers for which a node identification has been received.
  • the new computer sends a request to the selected computer for a copy of the data in the synchronized data area.
  • the new computer Upon receiving the copy of the data from the selected computer, the new computer generates a display based on the received copy of the data so that the new computer joins in the sharing of the application program.
  • FIG. 1 illustrates the channels that the computers use for transmitting messages.
  • FIG. 2 illustrates a block diagram of a computer on which the OM system executes.
  • FIG. 3 illustrates a diagram providing an example of a shared application program using a shared data pool under control of the OM system.
  • FIG. 4 illustrates a shared data pool.
  • FIG. 5 illustrates a control section of a shared data pool in further detail.
  • FIG. 6 illustrates a Whiteboard application section of a shared data pool in further detail.
  • FIG. 7 illustrates a sample set of objects as they would be displayed on a display screen.
  • FIG. 8 illustrates a layered architecture
  • FIG. 9 illustrates the components of an OM system.
  • FIG. 10 illustrates an overview flow diagram of the create control section routine.
  • FIG. 11 illustrates an overview flow diagram of the create application section routine.
  • FIGS. 12A and 12B illustrate an overview flow diagram of the transfer control data routine.
  • FIGS. 13A and 13B illustrate an overview flow diagram of the register joiner routine.
  • FIG. 14 illustrates an overview flow diagram of the transfer application data routine.
  • FIGS. 15A and 15B illustrate an overview flow diagram of the process operator messages routine.
  • FIG. 16 illustrates an overview flow diagram of the process add routine.
  • FIG. 17 illustrates an overview flow diagram of the process replace routine.
  • FIG. 18 illustrates an overview flow diagram of the process update routine.
  • FIG. 19 illustrates an overview flow diagram of the process move routine.
  • the present invention provides a method and system for managing data (i.e., objects) that are shared by multiple instances of a shared application program.
  • a shared application program is an application program that is executing simultaneously on multiple computers and that has a copy of data that is being shared by each instance of the application program. Each computer maintains a copy of the shared data.
  • an instance of the application program modifies the shared data, the modifications are sent to the other computers.
  • These other computers store the data in their copies of the shared data, and the instances of the application program update their user interfaces to reflect the modifications to the shared data.
  • the users of the shared application program can cooperatively modify and view the shared data. For example, multiple users can be executing a word processing program on their computer and sharing a common document. As one user changes the document, the word processing program updates its copy of the shared data. The changes are then transmitted to the other computers so that their shared data can be updated.
  • a preferred object management (OM) system provides services through which shared application programs can manage their shared data.
  • Each computer has a copy of the OM system.
  • the OM system under the direction of the shared application program, manages the adding, deleting, and modifying of the shared data.
  • the OM system also controls the transmitting of modifications to the copy of the shared data to the other computers.
  • the OM system manages shared data for multiple shared application programs.
  • the users may be sharing both a word processing document and a spreadsheet document.
  • the OM system stores the data in a shared data pool.
  • the shared data pool contains application output (i.e., objects) shared by the group of computers.
  • the shared data pool is partitioned into sections; one section is a control section and every other section is an application section (“a synchronized data area”). Each application section corresponds to an application program.
  • the output of a shared application program is stored in the corresponding application section of the shared data pool.
  • the computers communicate with each other by either transmitting messages to all of the computers (i.e., broadcasting messages) or transmitting messages to a particular computer (i.e., sending messages) over channels of the network.
  • FIG. 1 illustrates the channels that the computers use for transmitting messages.
  • Computer 1 102 , Computer 2 112 , and Computer 3 122 are connected through a network.
  • Each computer has an OM system, a copy of Application 1 , and a copy of Application 2 .
  • the OM systems are assigned an OM broadcast channel 132 over which the OM systems broadcast data that is not specific to an application program.
  • Each application program is also assigned a separate application broadcast channel. For example, Application 1 is assigned application broadcast channel 134 , and Application 2 is assigned application broadcast channel 136 .
  • OM systems While sharing a particular application program, OM systems broadcast messages for that application program on the assigned channel.
  • each computer is assigned a node channel, which is used by an OM system to transmit messages to a particular computer.
  • Computer 1 is assigned node channel 110
  • Computer 2 is assigned node channel 120
  • Computer 3 is assigned node channel 130 .
  • the application program forwards an operator message to its OM system indicating an action to be performed on a specified object.
  • the actions include adding an object to the shared data pool, updating an object, replacing an object, moving an object, or deleting an object.
  • Application programs at each computer can perform an action on any object in their corresponding application sections in the shared data pool. Therefore, an OM system of a computer can receive multiple operator messages from OM systems of other computers. Moreover, the OM system can receive multiple operator messages from different application programs at the OM system's computer. Upon receiving an operator message from an application program, the OM system processes the operator message.
  • the OM system broadcasts the operator message that has been received from the application program to the OM systems of other computers on the application channel assigned to that application program.
  • the OM system also forwards an event (i.e., action indication) to the application program indicating the action that has been performed (e.g., an object has been added).
  • the OM systems of the other computers receive the operator message and process the operator message. Because each operator message includes an indication of an application section, the OM system can determine which application section to modify based on the operator message. These OM systems then forward an event to the appropriate application program at their computers indicating the action that was performed. In this manner, the OM systems maintain the copies of the shared data pool with the same data.
  • the OM system can receive multiple operator messages to perform actions on the same object in the shared data pool. For example, one OM system can update an object from the shared data pool and broadcast an update message to other OM systems to also perform the update, and, shortly afterwards, another OM system can replace the object and broadcast a replace message to other OM systems to also perform the replace. Depending on the speed of transmission over the network channels connecting the computers, one OM system can receive the update message before the replace message, and another OM system can receive the replace message before the update message. If each OM system performed the actions in the order the operator messages were received, then the two OM systems would not have the same data in their shared data pool. That is, the OM system that received the replace message after the update message would replace the object. The OM system that received the update message after the replace message would update an object that has been replaced.
  • each OM system processes the operator messages based on the sequence in which they were generated, rather than received. For example, since the update message was transmitted first, the OM system that received the update message first would process the update message and then process the replace message. The OM system that received the replace message first would perform the replace. Then, upon receiving the update message, the OM system would recognize that the update message was transmitted prior to the replace message. Since the object to be updated has already been replaced, this OM system would not perform the update. Thus, both OM systems have replaced the object in the shared data pool.
  • an OM system can discard an operator message or process it at a later time.
  • an OM system can receive an operator message modifying an object for which it has not yet received an add message.
  • each OM system stores received operator messages in a queue.
  • an OM system retrieves an operator message from the queue that modifies an object for which it has not processed an add message, the OM system places the operator message in the queue again, to process after processing the add message.
  • the OM system maintains a list of current objects that are currently on a page and a list of deleted objects that were deleted from a page for each page of each application section.
  • an OM system When an OM system receives a delete or clear message for an object that it has not added yet, the OM system places this object on the list of deleted objects. Then, upon receiving an add message, if the OM system determines that the object was deleted by a delete message that was generated after the add message, the add message is discarded. In this way, an object that has been deleted is not inadvertently added to the shared data pool.
  • the OM system resolves other conflicts between operator messages based on the order in which the operator message was generated and on the node identification of the computer that generated it, as will be described in further detail below.
  • the OM system enables a new computer (“joiner computer”) to join in sharing the shared data pool.
  • the OM system at the joiner computer obtains data without preventing other computers from updating the shared data pool.
  • the joiner computer broadcasts a joining message on the OM channel.
  • Each OM system broadcasts a node identification identifying that computer on the OM channel.
  • the joiner computer selects the computer that responds first as a “helper computer.” Then, the joiner computer sends a data message on the node channel of the helper computer requesting data from the shared data pool.
  • the helper computer will then provide the joiner computer with the data from the shared data pool on the node channel of the joiner computer.
  • the helper computer first provides the joiner computer with the control section. Then, the helper computer provides the joiner computer with each application section for which a corresponding application program has been invoked at the joiner computer.
  • the other OM systems continue to modify the shared data pool by broadcasting operator messages on the application channels.
  • the joiner computer also receives these messages. As soon as the joiner computer has received the control section, the joiner computer can process these messages in the same manner as the computers already sharing the shared data pool. For example, upon receipt of an operator message indicating a modification of the shared data pool, if the message adds new data or modifies data the computer has received, the computer processes the operator message. On the other hand, if the computer receives an update message for which it has not yet received the data to be updated, the computer queues the update message and processes the update message at a later time.
  • the computers can share multiple application programs. Each shared application program has a corresponding application section in the shared data pool. In addition to application sections, the shared data pool contains a control section that provides information about the application sections. Each computer can determine which application programs have application sections by viewing the control section. When a computer wants to start sharing data for a new application program, the computer determines whether an application section for that application program has already been created. If one has not been created, the computer creates an application section and provides information about that application section in the control section (i.e., registers the application program). These actions are broadcast on the OM channel so that each other computer subsequently modifies its control section appropriately. If the computer has invoked a copy of the application program corresponding to the application section, the OM system also creates the application section in its copy of the shared data pool.
  • FIG. 2 illustrates a block diagram of a computer on which the OM system executes.
  • the OM system includes a central processing unit (CPU) 202 , a memory 204 , input devices 212 , and output devices 214 .
  • the input devices are preferably a keyboard and a mouse.
  • the output devices preferably include a display device, such as a CRT.
  • the CPU, memory, input devices, and output devices are interconnected by a bus 216 .
  • the memory contains a Call Management system 205 , application programs 206 , an Object Manager system 208 , and a shared data pool 210 .
  • the shared data pool could be stored on a different storage medium, such as a disk, or could be stored partially in memory and partially on a disk.
  • FIG. 3 illustrates a diagram providing an example of a shared application program that is using a shared data pool under control of the OM system.
  • FIG. 3 illustrates an application program that has been invoked at each of three computers and illustrates the same application data displayed at each computer.
  • One computer, node A 310 is connected to other computers, node B 320 and node C 330 .
  • Node A includes a keyboard 316 , a mouse 318 , and a display 312 .
  • the display of 312 shows a window 314 for an application program.
  • the application program entitled “WHITEBOARD” is being shared among the computers and is executing on each computer.
  • the output data of the shared application program is being displayed in window 314 .
  • Both computers node B 320 and node C 330 also display the same output data in their windows.
  • node B includes a keyboard 326 , a mouse 328 , and a display 322 .
  • a window 324 displays the data for the Whiteboard application program.
  • Node C has a keyboard 336 , a mouse 338 , and a display 332 .
  • the display 332 displays a window with the output of the Whiteboard application program, which corresponds to the windows on node A and node B.
  • a copy of the shared data pool resides on each computer sharing the application programs.
  • the shared data pool is partitioned into sections.
  • One of the sections is a control section that provides information about the contents of the shared data pool.
  • Each other section is an application section that corresponds to an application program.
  • An application section contains information about the corresponding application program and contains the output of that application program.
  • a Whiteboard application section corresponds to a Whiteboard application program.
  • a Whiteboard application program enables users at computers to display objects on a display screen of a computer to emulate a physical Whiteboard. When users at multiple computers share a Whiteboard application program, each user views the output of the Whiteboard application program.
  • the application program When a user at one computer provides input to an application program, the application program interacts with the OM system to modify objects in the shared data pool.
  • the OM system modifies the objects and notifies the OM systems at other computers of the modifications.
  • the OM systems at other computers then modify their copy of the shared data pool.
  • FIG. 4 illustrates a shared data pool.
  • the shared data pool 402 contains one control section 404 and one or more application sections, such as a Whiteboard application section 406 .
  • the control section provides information about the shared data pool, such as which application sections have been created. If multiple control sections existed, it would be possible to have conflicting information in the control sections. Moreover, obtaining information by searching the multiple control sections could be time-consuming. Therefore to ensure accurate and easily accessible information, only one control section is created for the shared data pool.
  • the control section and each application section is further partitioned into pages.
  • a page corresponds to a grouping of related data.
  • Each section currently has 256 pages, but it could have more or fewer pages.
  • An application program corresponding to a section interacts with the object management system to modify the objects in the section.
  • the first page of a section is typically a page index that identifies the pages in the section and what they contain.
  • An application developer typically defines the type of information that each page is to contain for an application section.
  • the control section 404 has been defined with “Page 0 ” 408 providing a page index 410 that contains information about the other pages in the control section.
  • Each other page in the control section such as “Page 1 ” 412 , correspond to application sections.
  • the control section provides information on the shared data pool, including identifying each application section that corresponds to an application program.
  • each computer When an application program is invoked at two computers simultaneously, it is possible that each computer will create an application section for that application program. Then, the output of the application program at the two computers would be stored in different application sections and the two computers would not be sharing the application program at its output. Therefore, to ensure that only one computer creates an application section for an application program, each OM system prevents other OM systems from modifying the control section (i.e., locks the control section) when registering an application section.
  • the OM system locks the control section by broadcasting a lock message on the OM channel. The OM system then waits to receive lock confirm messages from each other OM system on the OM channel.
  • the OM system can modify the control section. After modifying the control section, the OM system notifies other OM systems that they can modify the control section (i.e., unlocks the control section) by broadcasting an unlock message on the OM channel. It is possible for two or more OM systems to broadcast lock messages simultaneously. To resolve conflicts between lock messages, by convention, the lock message having the lowest node identification has priority. In particular, when an OM system receives a lock message, if the OM system has broadcast a lock message, it determines whether it has priority. If the OM system has priority, it sends a lock deny message to the OM system that broadcast the received lock message. If the OM system does not have priority, it broadcasts a lock confirm message and terminates processing of the lock message it had broadcast.
  • FIG. 4 illustrates a sample partitioning of pages for the Whiteboard application section 406 .
  • the Whiteboard application section begins with “Page 1 ” 416 , rather than “Page 0 ,” as in the control section discussed above.
  • “Page 1 ,” rather than “Page 0 ,” of the Whiteboard application section contains a page index 418 that provides information about each page of the application section.
  • “Page 2 ” 420 contains user data 422 .
  • “Page 3 ” and “Page 4 ” are reserved for future use.
  • “Page 5 ” through “Page 255 ” contain the output of the Whiteboard application program.
  • FIG. 5 illustrates a control section in further detail.
  • the control section contains pages such as “Page 0 ” 502 and “Page 1 ” 504 .
  • the first page of the control section contains a page index.
  • the page index identifies the pages within the control section.
  • the page index identifies each application program and identifies the page corresponding to that application program.
  • entry 510 indicates that the first page of the control section contains Whiteboard registration information.
  • the Whiteboard registration information includes node identifications of users 516 and channel identifications 518 .
  • the node identifications indicate all of the computers which are sharing a shared data pool for the Whiteboard application.
  • the channel identifications indicate the channel used for sharing the data for the Whiteboard application.
  • the OM system Upon registration, the OM system obtains a handle to an initial memory block that references the memory blocks in which objects in the application section are stored.
  • the initial memory block and the memory block in which the objects are stored are dynamically allocated. Therefore, the shared data pool is not necessarily a contiguous portion of memory.
  • FIG. 6 provides further detail about a Whiteboard application section.
  • the Whiteboard application section has several pages.
  • “Page 1 ” 602 of the Whiteboard application section is a page index that indicates the data on each other page of this section.
  • “Page 2 ” 604 provides user data.
  • the user data includes the name of the user and the page of the application section the user is currently viewing.
  • the user data also includes a “synch” flag that indicates whether a user is in “synch” with other users. When the user is in “synch” with the other users sharing the shared data pool, the user views the page the user who provided the most recent input is viewing. In this case, the synch flag in the user data page is set for the user.
  • a user can choose not to “synch” with other users and view a different page, in which case the synch flag is not set for the user.
  • the user is provided with a user interface element, such as a scroll bar with arrow indicators, that is used to select a particular page for viewing.
  • “Page 5 ” 606 contains the output of the Whiteboard application program.
  • FIG. 7 illustrates a sample set of objects as they would be displayed on a display screen. This set of objects would be stored on a single page of an application section. In particular, objects are layered over each other on the display. Each OM system layers objects in the same manner to ensure that each user views objects in the same way. Objects are also sorted into a front region 702 , a middle region 704 , and a back region 706 . An application program generates an object with a sequence stamp that includes a sequence identification identifying the order in which the object was generated and with a node identification identifying the computer generating the object. Within the front region, the objects are ordered by their sequence identification, with the highest sequence identification being in front of all objects with lower sequence identifications.
  • objects are added to the end of the region.
  • objects are ordered by their sequence identifications so that the first object in the back region has the lowest sequence identification and is displayed over each object with a higher sequence identification. If two objects have the same sequence identification, then they are ordered by their node identifications.
  • Each object is identified by a local object handle, which is used by an application program to identify which object to modify when the OM system processes an operator message.
  • the local handle is translated into a global handle prior to transmitting an operator message to other OM systems.
  • Each other OM system then translates the global handle into a local handle for use by the application program at that computer system.
  • An object is a string of data that the OM system does not interpret. The OM system only places the object in the shared data pool, and the application program interprets the object.
  • computers Before computers can share a shared data pool for application programs, they need to be connected through the network to enable the transfer of output data between them (i.e., participate in a Call). When computers are in a Call, the computers have established a connection through which they can share the shared data pool.
  • a user invokes a Call Manager system to establish network connections.
  • a Call Manager system provides a set of application programming interfaces (APIs) for the OM system to interact with the network.
  • FIG. 8 illustrates the architecture of a preferred embodiment of the present invention.
  • the OM system 802 , the Call Manager system 804 , and the network layer 806 are interconnected.
  • a user invokes the Call Manager system to establish a Call.
  • the Call Manager system invokes the network layer to establish a Call.
  • the Call Manager system After establishing the Call, the Call Manager system notifies the OM system that a Call has been established.
  • any OM system in the Call can create a control section for the shared data pool. Once a control section has been created, any OM system can create an application section for a particular application program that is to be shared.
  • the OM system interacts directly with the network layer to transmit messages to other computer systems.
  • the user Before a user can share an application program, the user requests a Call Manager system to establish a Call. With the request, the user identifies other users with which to establish a Call through use of the dialog box which displays names of users associated with the computers in the network. To establish the Call, the Call Manager system notifies each of the Call Manager systems at the identified computers that a Call is being established. The Call Manager systems at each of the identified computers “joins” the first Call of which they are notified. After one or more other computers has joined the Call, application programs can use the OM system to share a shared data pool.
  • the computers which are to share an application program are connected through a network based on a T.120 multipoint data conferencing standard (i.e., T.120 network).
  • T.120 network is a standard for communication among software and hardware products.
  • the T.120 network provides a set of APIs that enable the computers in the network to communicate with each other.
  • the T.120 network includes multiple channels over which the computers are connected.
  • the T.120 network assigns each computer connected to the network a unique node identification.
  • the T.120 network assigns each channel which is part of the network a unique channel identification.
  • the OM system can request channels from the T.120 network, including an OM channel on which the OM systems communicate, a node channel on which particular computers communicate, and application channels on which application data is broadcast.
  • the Call Manager system When a user invokes the Call Manager system to establish a Call, the Call Manager system requests an OM channel from the T.120 network by invoking an API function.
  • the T.120 network allocates an OM channel for the Call. After allocating the OM channel, the T.120 network provides the Call Manager system with the channel identification. In turn, the Call Manager system notifies the OM system that a channel has been allocated and provides the channel identification.
  • the OM system obtains a channel from the Call Manager system for the application program. Then, any computer participating in the sharing of the particular application program communicates with all other computers by broadcasting messages over the allocated channel.
  • the joiner computer when a joiner computer wishes to join a Call, the joiner computer first uses the Call Manager system to determine the OM channel allocated for the Call.
  • the Call Manager system interacts with the T.120 network to enter the joiner computer in the Call.
  • the user can invoke the OM system to attempt to join in sharing application programs using a shared data pool.
  • an OM system at the joiner computer uses the channel to broadcast and receive messages for sharing a shared data pool. For example, the OM system at the joiner computer can broadcast a message to all of the computers currently in the Call requesting to join in sharing the shared data pool.
  • the OM system enables sharing of application programs using a shared data pool. Initially, when an OM system is notified by the Call Manager system that a Call has been established, the OM system attempts to create a control section. As discussed above, only one control section is created. In particular, one OM system creates a control section, and each other OM system creates a copy of this control section for its shared data pool. The first OM system to obtain a preassigned network token (i.e., a network token recognized by each computer in the network) creates the control section.
  • a preassigned network token i.e., a network token recognized by each computer in the network
  • the OM system at that computer creates an application section for the application program, creates a registration page for the application program in the control section, and updates the page index of the control section to include an entry for the new registration page.
  • the OM systems can share the application program corresponding to the application section using the shared data pool.
  • the OM system at that computer obtains control data from an OM system that is already using the shared data pool. Then, the OM system registers itself by indicating in the control section which application programs it wishes to share. Next, the OM system obtains application sections from an OM system that is already using the shared data pool for the application programs it wishes to share.
  • the OM system has several components. Each component performs a particular process.
  • FIG. 9 illustrates the components of an OM system.
  • the OM system includes a create control section component 902 that creates a control section.
  • the create application section component 904 creates an application section.
  • the transfer control data section 906 is used to provide a joiner computer with control data.
  • the register joiner component 908 is used to register a joiner computer by adding the joiner computer's node identification into a registration page of an application program.
  • the transfer application data component 910 transfers application data to a joiner computer.
  • the process operators component 912 processes operator messages.
  • an OM system at one of the computers in the Call creates a control section.
  • the control section identifies the application sections.
  • the OM systems use a predefined network token to ensure that only one OM system creates a control section.
  • an OM system obtains a predefined network token from the T.120 network using the Call Manager system.
  • the network token initially has an associated token count with a value of zero.
  • the Call Manager system increments the token count to one and notifies the OM system that it can create a control section.
  • the OM system releases the network token.
  • any other OM system which attempts to create a control section will first obtain the network token.
  • FIG. 10 illustrates an overview flow diagram of the create control section routine.
  • the create control section routine obtains the network token.
  • the create control section routine increments the token count.
  • the create control section routine creates a control section.
  • the create control section routine releases the network token.
  • an OM system locks the control section.
  • the OM system broadcasts a lock message and waits to receive lock confirm messages from the other OM systems.
  • the OM system provides information in the control section about the application program.
  • the first page is the page index.
  • Each other page is a registration page.
  • the OM system adds an entry to the page index of the control section to identify the next available page in the control section as a registration page for the new application program. Then, the OM system enters user and channel data in the registration page for the application program.
  • the OM system creates an application section.
  • the OM system returns to the application program a handle to the application section.
  • the application program uses the handle to identify the application section of the shared data pool it wants to modify in all operator messages.
  • the OM system broadcasts an unlock message.
  • the OM system broadcasts messages to each other computer of each action that it performs.
  • Each OM system receives the broadcast messages and modifies its shared data pool by creating the application section and modifying the control section to reflect the addition of the application section.
  • each other computer that wants to share the application program adds itself to the user list for the application program in the registration page for the application program in the control section.
  • the OM system obtains channel data from the registration page of the control section that identifies the application channel for the application program.
  • each OM system broadcasts operator messages on the application channel. In this manner, each OM system at each other computer obtains information to modify the shared data pool to reflect the new modifications that were made.
  • FIG. 11 illustrates an overview flow diagram of the create application section routine.
  • the create application section routine broadcasts a lock message.
  • the create application section routine waits to receive lock confirm.
  • the create application section routine adds an entry to the page index of the control section identifying a new registration page.
  • the create application section routine enters data for a registration page for the application program.
  • the create application section routine creates an application section.
  • the create application section routine broadcasts an unlock message.
  • the create application section routine returns a handle to the application section to the application program.
  • the OM system of the joiner computer obtains control data from a helper computer.
  • the OM system uses the received control data to create a control section at its computer.
  • the OM system determines from the control data which application sections are available.
  • the OM system can then request application sections for application programs it wishes to share from the helper computer. If an application section is not available for an application program it wishes to share, the OM system creates an application section as discussed above.
  • FIGS. 12A and 12B illustrate an overview flow diagram of the transfer control data routine.
  • the joiner computer wishes to obtain control data
  • the joiner computer broadcasts a join message on the OM channel to all computers sharing the shared data pool (i.e., the sharing computers).
  • the sharing computers broadcast their node identifications on the OM channel.
  • the joiner computer selects the computer that broadcast the message as a helper computer.
  • the helper computer provides the joiner computer with control and application data.
  • FIGS. 12A and 12B illustrates the steps taken by a joiner computer attempting to share a shared data pool, by sharing computers, and by a helper computer.
  • step 1202 the joiner computer broadcasts a join message on the OM channel to the sharing computers.
  • step 1212 each of the sharing computers receives the join message.
  • step 1214 each of the sharing computers broadcasts a node identification on the OM channel to identify itself to the joiner computer.
  • step 1204 the joiner computer receives the node identifications.
  • step 1206 the joiner computer selects the first sharing computer whose node identifications it has received to be a helper computer.
  • the joiner computer After selecting a helper computer, in step 1208 , the joiner computer sends a request for control data on the helper computer's node channel to the helper computer. In step 1218 , the helper computer receives the request for control data. The helper computer will send control data to the joiner computer. To avoid having other computers modify the data as it is being sent, the helper computer locks the control section. In step 1220 , the helper computer broadcasts a lock message on the OM channel for the control section. In step 1210 and step 1216 , the joiner computer and the sharing computers, respectively, receive the lock message. In step 1222 and step 1228 , the joiner computer and the sharing computers, respectively, broadcast lock confirm messages on the OM channel.
  • step 1232 the helper node receives the lock confirm messages.
  • step 1234 the helper computer sends control data on the joiner computer's node channel to the joiner computer.
  • step 1224 the joiner computer receives the control data and creates a control section at its computer.
  • step 1236 the helper computer broadcasts an unlock message on the OM channel.
  • steps 1226 and 1230 the joiner computer and sharing computers, respectively, receive the unlock message.
  • FIGS. 13A and 13B illustrate an overview flow diagram of the steps taken by a joiner computer and sharing computers to register the joiner computer.
  • the joiner computer receives a request from a user to share an application program. If two computers were to modify the control section at the same time, one could overwrite the other. To avoid this, the joiner computer locks the control section before modifying it.
  • step 1304 the joiner computer broadcasts a lock message on the OM channel to lock the control section.
  • step 1312 the sharing computers receive the lock message.
  • step 1314 the sharing computers broadcast a lock confirm message on the OM channel.
  • step 1306 the joiner computer receives all lock confirm messages.
  • step 1308 the joiner computer adds its node identification to the registration page of the application for which it wishes to share the shared data pool.
  • step 1310 the joiner computer broadcasts a registration message on the OM channel.
  • step 1316 the sharing computers receive the registration message.
  • step 1318 the sharing computers process the received registration message to register the joiner computer in their copies of the shared data pool.
  • step 1320 the joiner computer broadcasts an unlock message on the OM channel.
  • step 1322 the sharing computers receive the unlock message.
  • FIG. 14 illustrates an overview flow diagram of the transfer application data routine.
  • the joiner computer sends a request for application data on the node channel of the helper computer.
  • the helper computer receives the request for application data.
  • the helper computer sends application data on the node channel of the joiner computer.
  • the joiner computer receives the application data and creates application sections.
  • application programs at that computer can obtain an initial memory block for their application sections and can process operators for that application section using the OM system.
  • an application program forwards an operator message to the OM system to perform an action on an object.
  • the OM system processes the operator message and broadcasts the operator message to the other OM systems on the application channel for that application program.
  • the other OM systems process the message.
  • Each OM system also forwards an event to the application program, indicating the action that was performed.
  • Each operator message specifies an action and specifies the object on which the action is to be performed.
  • the operator messages include a clear message, a move message, an add message, a replace message, an update message, and a delete message.
  • a clear message indicates that all of the objects on a page are to be deleted.
  • a delete message indicates that a particular object on a page is to be deleted.
  • An add message indicates an object to be added to a page, either to a front, a middle, or a back region.
  • a move message indicates that an object is to be moved to the front, middle, or back region.
  • a replace message indicates that an entire object is to be replaced.
  • the update message indicates that a portion of an object is to be updated.
  • Each operator message has a sequence stamp that includes a node identification as well as a sequence identification.
  • the node identification identifies the computer that broadcast the operator message.
  • the sequence identification indicates the order in which that operator message was generated.
  • an OM system Whenever an OM system generates a particular operator message, it generates a sequence identification.
  • the OM system maintains an operator stamp for each type of operator at the computer that indicates when an operator message for that operator was last processed.
  • a clear operator has a clear stamp; an add operator has an add stamp; a move operator has a move stamp; an update operator has an update stamp; and a replace operator has a replace stamp.
  • the delete operator does not have a delete stamp.
  • the OM system maintains a list of all objects that have been deleted. Along with each of these operator stamps, the OM system maintains the node identification of the computer that broadcast the last operator message for the operator. For each of these operators, the respective operator stamp is initially one. The sequence identification for a particular operator message is set to the operator stamp for the operator. For example, when an OM system generates an add message, the OM system sets the sequence identification in the add message to the value of the add stamp. Then, the OM system increments the operator stamp (e.g., the add stamp) by one.
  • the operator stamp e.g., the add stamp
  • Each OM system uses the sequence identification in an operator message to determine when the operator message was generated. Also, each OM system uses the operator stamp stored at the computer to determine the sequence of the last operator message it processed. Therefore, it is important to update the operator stamps based on the received sequence identifications.
  • the OM system updates its operator stamp with the value of the received sequence identification. For example, if an OM system has an add stamp with the value of one, and the OM system receives an add message with a sequence identification with the value of two, the OM system updates its add stamp with the value of two.
  • an OM system can receive an operator message to update, move, or delete an object that has not been added yet.
  • each OM system stores operator messages in a queue.
  • each OM system maintains a list of current objects that are currently on a page of an application section.
  • the OM system determines whether the object is on the page of the application section using the list of current objects.
  • the OM system places the operator message back in the queue to process after the object has been added to the application section.
  • a replace message replaces an entire object.
  • the OM system processes the replace message by placing the object specified by the replace message in the shared data pool and adding the object to the list of current objects. Then, when the add message for the object is later received, it is discarded.
  • the object to be deleted is added to the list of deleted objects. If the object is in the list of current objects, it is removed from this list. Once the object is in the list of deleted objects, when an add message is later received for the object, the add message is discarded.
  • an OM system can receive an operator message to modify an object (i.e., an update message) that has already been deleted. For example, an update message that was generated before a delete message could be received after the delete message. Similarly, the update message could have been generated prior to a clear message. In this case, the OM system recognizes that it cannot update the deleted object. Therefore, upon receiving an operator message, the OM system determines whether the object has already been deleted using the list of deleted objects. If the object was deleted by a delete message generated after the received operator message, the operator message is discarded, otherwise it is processed, as discussed in detail below.
  • an update message i.e., an update message
  • an update message that was generated before a delete message could be received after the delete message.
  • the update message could have been generated prior to a clear message.
  • the OM system recognizes that it cannot update the deleted object. Therefore, upon receiving an operator message, the OM system determines whether the object has already been deleted using the list of deleted objects. If the object was deleted by a delete message
  • An OM system can also receive an operator message with a sequence identification which equals the operator stamp for that operator.
  • the OM system can receive an update message with a sequence identification of two from two different computers. If the OM systems process the update messages in different orders, the shared data pools at the computers will not reflect the same data. Therefore, each OM system determines which update message to process and which to discard using the node identifications. By convention, the operator message with the lower node identification is processed.
  • FIGS. 15A and 15B illustrate an overview flow diagram of the process operator messages routine.
  • the process operator messages routine determines the type of action indicated by the operator message and processes the operator message.
  • step 1502 if the operator message was generated before a clear message was generated, then the process operator message routine continues at step 1504 , otherwise the process operator message routine continues at step 1506 .
  • step 1504 the process operator messages routine discards the operator message.
  • step 1506 if this operator message was generated before a delete message was generated for the object, then the process operator messages routine continues at step 1508 , otherwise the process operator messages routine continues at step 1510 .
  • the process operator messages routine discards the operator message.
  • step 1510 if the operator message was generated before the last received operator message of the same type, then the process operator messages routine continues at step 1512 , otherwise the process operator messages routine continues at step 1516 . In step 1512 , the process operator messages routine discards the operator message. In step 1516 , if the operator message identifies an object that has not been added yet and it is not a replace message, then the process operator messages routine continues at step 1518 , otherwise the process operator messages routine continues at step 1520 . In step 1518 , the process operator messages routine places the operator message back in a queue.
  • step 1520 if the operator message is an add message, the process operator messages routine continues at step 1522 , otherwise the process operator messages routine continues at step 1524 .
  • step 1522 the process operator messages routine invokes the process add routine.
  • step 1524 if the operator message is a replace message, the process operator messages routine continues at step 1526 , otherwise the process operator messages routine continues at step 1528 .
  • step 1526 the process operator messages routine invokes a process replace routine.
  • step 1528 if the operator message is an update message, the process operator messages routine continues at step 1530 , otherwise the process operator messages routine continues at step 1532 .
  • step 1530 the process operator messages routine invokes a process update routine.
  • step 1532 if the operator message is a move message, the process operator messages routine continues at step 1534 , otherwise the process operator messages routine continues at step 1536 .
  • step 1534 the process operator messages routine invokes a process move routine.
  • step 1536 if the operator message is a clear message, the process operator messages routine continues at step 1538 , otherwise the process operator messages routine continues at step 1542 .
  • step 1538 the process operator messages routine clears the objects on the page specified by the object.
  • step 1540 the process operator messages routine updates the clear stamp.
  • step 1542 the process operator messages routine places the object on the list of deleted objects.
  • the add message identifies an object that is to be added to a page of an application section.
  • the add message indicates whether the object is to be added to the front, middle, or back region of the set of objects on a page of an application section.
  • the objects are ordered by decreasing sequence numbers, with the top-most object having the highest sequence number.
  • the objects are ordered by increasing sequence numbers, with the bottom-most object having the highest sequence number.
  • Objects are added to the end of the middle region.
  • the sequence identification of the add message is the same as the add stamp, an OM system will use the node identification in the message to determine whether or not to apply the operator. Also, if a replace message that was generated before the add message for the object has already been processed, the OM system discards the add message. Otherwise, the OM system adds the object to either the front, middle, or back region and updates the add stamp.
  • FIG. 16 illustrates an overview flow diagram of the process add routine.
  • step 1602 if the add message was generated at the same time as the last received add message, then the process add routine continues at step 1604 , otherwise the process add routine continues at step 1608 .
  • step 1604 if the node identification of the add message is greater than the node identification of the last received add message, then the process add routine continues at step 1606 , otherwise the process add routine continues at step 1608 .
  • the process add routine discards the operator message.
  • step 1608 if this add message was generated before the last received replace message, then the process add routine continues at step 1610 , otherwise the process add routine continues at step 1612 .
  • step 1610 the process add routine discards the operator message.
  • step 1612 if this add message indicates the object is be added to the front region, the process add routine continues at step 1614 , otherwise the process add routine continues at step 1616 .
  • step 1614 the process add routine adds the object to the front region according to its sequence stamp.
  • step 1616 if this add message indicates the object is to be added to the back region, the process add routine continues at step 1618 , otherwise the process add routine continues at step 1620 .
  • step 1618 the process add routine adds the object to the back region according to its sequence stamp.
  • step 1620 the process add routine adds the object at the end of the middle region.
  • step 1622 the process add routine updates the add stamp by incrementing the value by one.
  • the replace message replaces an entire object with another one.
  • an OM system will use the node identification in the message to determine whether or not to apply the operator.
  • the OM system can receive a replace message for an object that was generated before the last received replace message. This current replace message is then discarded. Also, if this replace message was generated before the last received update message for this object, the OM system replaces the portion of the object that was not updated. Otherwise, the OM system replaces the object and updates the replace stamp.
  • FIG. 17 illustrates an overview flow diagram of the process replace routine.
  • step 1702 if the replace message was generated at the same time as the last received replace message, the process replace routine continues at step 1704 , otherwise the process replace routine continues at step 1708 .
  • step 1704 if the node identification of this replace message is greater than the node identification of the last received replace message, the process replace routine continues at step 1706 , otherwise the process replace routine continues at step 1708 .
  • the process replace routine discards the operator message.
  • step 1708 if the replace message was generated before the last received replace message, the process replace routine continues at step 1710 , otherwise the process replace routine continues at step 1712 .
  • step 1710 the process replace routine discards the operator message.
  • step 1712 if this replace message was generated before the last received update message, the process replace routine continues at step 1714 , otherwise the process replace routine continues at step 1716 .
  • step 1714 the process replace routine replaces the portion of the object not already updated.
  • step 1716 the process replace routine replaces the object.
  • step 1718 the process replace routine updates the replace stamp.
  • An update message will update a portion of an object. If the sequence identification of the update message is the same as the update stamp, an OM system will use the node identification in the message to determine whether or not to apply the operator. If this update message was generated before the last received update message, then the OM system recognizes that a portion of the object has already been updated and this portion should not be updated again. Therefore, the OM system updates the portion of the object not already updated. On the other hand, when the OM system receives an update message for an object that was generated before a replace message for the replace was received, the OM system recognizes that the entire object has been replaced and the update message should be discarded. Otherwise the OM system updates the object and updates the update stamp.
  • FIG. 18 illustrates an overview flow diagram of the process update routine.
  • step 1802 if the update message was sent at the same time as the last received update message, the process update routine continues at step 1804 , otherwise the process update routine continues at step 1808 .
  • step 1804 if the node identification of the update message is greater than the node identification of the last received update message, then the process update routine continues at step 1806 , otherwise the process update routine continues at step 1808 .
  • the process update routine discards the operator message.
  • step 1808 if this update message was generated before the last received update message, the process update routine continues at step 1810 , otherwise the process update routine continues at step 1812 .
  • step 1810 the process update routine updates the portion of the object not already updated.
  • step 1812 if this update message was generated before the last received replace message, the process update routine continues at step 1814 , otherwise the process update routine continues at step 1818 .
  • step 1814 the OM system discards the operator message.
  • step 1818 the process update routine updates the object.
  • step 1820 the process update routine updates the update stamp.
  • the move operator moves an object on a page by specifying that the object be moved to the front, middle or back region. If the sequence identification of the move message is the same as the move stamp, an OM system will use the node identification in the message to determine whether or not to apply the operator. Otherwise, the OM system moves the object to either the front, middle, or back region and updates the move stamp.
  • FIG. 19 illustrates an overview flow diagram of the process move routine.
  • step 1902 if this move message was generated at the same time as the last received move message, the process move routine continues at step 1904 , otherwise the process move routine continues at step 1908 .
  • step 1904 if the node identification of the move message is greater than the node identification of the last received move message, then the process move routine continues at step 1906 , otherwise the process move routine continues at step 1908 .
  • the process move routine discards the operator message.
  • the process move routine continues its step 1910 , otherwise the process move continues at step 1912 .
  • step 1910 the process move routine moves the object to the front region according to its sequence stamp.
  • step 1912 if this move message indicates the object is be added to the back region, the process move routine continues at step 1914 , otherwise the process move routine continues at step 1916 .
  • step 1914 the process move routine moves the object to the back region according to its sequence stamp.
  • step 1916 the process move routine moves the object to the end of the middle region.
  • step 1918 the process move routine updates the move stamp.
  • the present invention enables different application programs to share data in one application section. Because application programs, and not the OM system, interpret objects, any application program can use the OM system to modify objects in any application section. For example, if a Whiteboard application section has been created for the Whiteboard application program, a Microsoft Word application program can modify objects in the Whiteboard application section.
  • the OM system can register the Microsoft Word application program with the control section. Once registered, the OM system receives and transmits operator messages for the Microsoft Word application program on the application channel assigned to the Whiteboard application section, whereby the Microsoft Word application program is able to share data with the Whiteboard application program.
  • the functionality of the OM system and the Call Manager system is integrated into each application program.
  • the user invokes the application program to be shared and indicates that its output is to be shared.
  • the application program interacts with the network layer to establish a Call.
  • the application program itself creates and maintains a shared data pool.
  • the application program receives input from an input device indicating that a local action is to be performed on the shared data
  • the application program updates the application data.
  • the application program broadcasts the action to each other computer system with which it is sharing data.
  • an application program receives the remote action (i.e., the broadcast action) that application program updates its application data.

Abstract

A method and system for managing data (i.e., objects) that are shared by multiple instances of a shared application program. A shared application program is an application program that is executing simultaneously on multiple computers and that has a copy of data that is being shared by each instance of the application program. In particular, each computer maintains a copy of the shared data. When an instance of the application program modifies the shared data, the modifications are sent to the other computers. Each of these other computers stores the data in its copy of the shared data, and each instance of the application program updates its user interface to reflect the modifications to the shared data. Thus, the users of the shared application program can cooperatively modify and view the shared data. For example, multiple users can be executing a word processing program on their computer and sharing a common document. As one user changes the document, the word processing program updates its copy of the shared data. The changes are then transmitted to the other computers so that their copy of the shared data can be updated. In particular, an object management (OM) system is provided that enables shared application programs to manage their copy of the shared data. Each computer has a copy of the OM system. The OM system, under the direction of the shared application program, manages the adding, deleting, and modifying of the shared data. The OM system also controls the transmitting of modifications to the copy of the shared data to the other computers.

Description

    TECHNICAL FIELD
  • The present invention relates generally to a computer method and system for sharing application programs, and, more specifically, to a method and system for managing data while sharing application programs. [0001]
  • BACKGROUND OF THE INVENTION
  • The modem workplace is increasingly reliant on the use of networks. A network is a group of computers that are connected by communications facilities. A network enables the transfer of information in electronic form between computers. Typically, each of the computers has local application programs, such as a word processing program, that can be executed at that computer. These application programs may access files that contain data, such as a word processing document. The files can be transferred from one computer to another using the network. Thus, it is possible for a user at one computer to modify the data in a file and then transfer the file to another computer so that a user at that other computer can view and modify the data in the file. [0002]
  • Some computers allow a user to execute an application program at one computer and have the screen output of that application program be displayed at one other computer. In this way, two users at distant locations can follow the execution of the application program. Indeed, some computers even allow the user at the other computer to input data that is sent to the executing application. For example, the two users can simultaneously see at their computers the contents of a word processing document as it is being modified, and both can participate in modifying the word processing document. Such use of an application program is known as “application sharing.” To share an application program, each computer receives the output of the application program (i.e., application output) for display. Each computer then stores this application output in a data pool at that computer. At each computer that is sharing the application program, the data pool contains the same data and is referred to as a “shared data pool.” The shared data pool stores data for an application program. Either of the users at the computers may provide input to the application program. The application program processes the input and stores the output in the shared data pool. The application data from the shared data pool is transmitted to each computer. Then each application program at each computer displays the received data from the shared data pool at that computer. [0003]
  • In a typical network of computers using a shared data pool, one of the computers (i.e., the guard computer) is designated to control access to the shared data pool. For one of the computers in the network to modify the shared data pool, that computer sends an indication to the guard computer indicating the modification. The guard computer modifies the shared data pool and then sends indications to the computers which are using that shared data pool, indicating the modification. In this manner, each computer receives the modifications to the shared data pool. It would be useful for each computer to have direct access to the shared data pool independent of each other computer. [0004]
  • Additionally, it would be useful to allow a new computer to join in using the shared data pool. In a typical network of computers, when a new computer joins in using the shared data pool, that new computer notifies the guard computer that it is joining. Then, the guard computer provides the new computer with the data in the shared data pool. While the guard computer is providing the new computer with the data, the guard computer is not able to process modifications to the shared data pool. Therefore, there is a delay in the guard computer processing modifications to the shared data pool indicated by other computers. It would be useful if other computers could continue to modify the shared data pool while a new computer is receiving data. [0005]
  • SUMMARY OF THE INVENTION
  • The present invention provides a method and system for managing data shared by multiple instances of a shared application program. A shared application program has instances executing simultaneously on multiple computers and has a copy of data that is being shared by each instance of the application program. Each computer maintains a copy of the shared data. When an instance of the shared application program modifies the shared data, the modifications are sent to the other computers. Each of these other computers stores the data in its copy of the shared data. In addition, each instance of the application program at these computers updates its user interface to reflect the modifications to the shared data. An object management (OM) system provides services through which shared application programs can manage the shared data. In particular, each computer has a copy of the OM system. The OM system, under the direction of the shared application program, manages the adding, deleting, and modifying of the shared data. The OM system also controls the transmitting of modifications to the copy of the shared data to the other computers. [0006]
  • In one aspect of the present invention, an application program is shared among a plurality of computers. Each computer executes an instance of the application program, and each instance of the application program has application data. Each computer also has a connection to each other computer, has an object management system for synchronizing the application data, and has a display on which the application data is displayed. At each computer, under control of the instance of the application program, an action to be performed on the application data is received from a user. Then, an action indication is transmitted from the instance of the application program to the object management system at that computer. The action indication indicates the received action. Under control of the object management system, the transmitted action indication is received from the instance of the application program. The received action indication is broadcast by the object management system to each other object management system at each other connected computer. Then, the object management system performs the action indicated by the received action indication on the application data. The object management system also notifies the instance of the application program that the action was performed on the application data. Under control of the instance of the application program, the notification is received from the object management system. Then the application program updates the display based on the application data on which the action was performed. [0007]
  • At each connected computer, under control of the object management system at that computer, the broadcast action indication is received from the other computer. Then the object management system performs the action indicated by the received action indication on the application data. The object management system also notifies the instance of the application program at that computer that the action was performed on the application data. Under control of the instance of the application program, the notification from the object management system is received. Then the instance of the application program updates the display based on the application data on which the action was performed. [0008]
  • In another aspect of the present invention, a new computer joins in sharing an application program with a plurality of other computers. Each computer has a connection to each other computer. Each computer that is sharing the application program has an instance of the application program and has a synchronized data area containing data output by the instance of the application program. Under control of the new computer, a joint message is broadcast to the other computers indicating that the new computer is to share the application program. The new computer then receives from each other computer a node identification that identifies that computer. The new computer selects one of the computers for which a node identification has been received. Then the new computer sends a request to the selected computer for a copy of the data in the synchronized data area. Upon receiving the copy of the data from the selected computer, the new computer generates a display based on the received copy of the data so that the new computer joins in the sharing of the application program. [0009]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 illustrates the channels that the computers use for transmitting messages. [0010]
  • FIG. 2 illustrates a block diagram of a computer on which the OM system executes. [0011]
  • FIG. 3 illustrates a diagram providing an example of a shared application program using a shared data pool under control of the OM system. [0012]
  • FIG. 4 illustrates a shared data pool. [0013]
  • FIG. 5 illustrates a control section of a shared data pool in further detail. [0014]
  • FIG. 6 illustrates a Whiteboard application section of a shared data pool in further detail. [0015]
  • FIG. 7 illustrates a sample set of objects as they would be displayed on a display screen. [0016]
  • FIG. 8 illustrates a layered architecture. [0017]
  • FIG. 9 illustrates the components of an OM system. [0018]
  • FIG. 10 illustrates an overview flow diagram of the create control section routine. [0019]
  • FIG. 11 illustrates an overview flow diagram of the create application section routine. [0020]
  • FIGS. 12A and 12B illustrate an overview flow diagram of the transfer control data routine. [0021]
  • FIGS. 13A and 13B illustrate an overview flow diagram of the register joiner routine. [0022]
  • FIG. 14 illustrates an overview flow diagram of the transfer application data routine. [0023]
  • FIGS. 15A and 15B illustrate an overview flow diagram of the process operator messages routine. [0024]
  • FIG. 16 illustrates an overview flow diagram of the process add routine. [0025]
  • FIG. 17 illustrates an overview flow diagram of the process replace routine. [0026]
  • FIG. 18 illustrates an overview flow diagram of the process update routine. [0027]
  • FIG. 19 illustrates an overview flow diagram of the process move routine. [0028]
  • DETAILED DESCRIPTION OF THE INVENTION
  • 1. Overview [0029]
  • 2. Shared Data Pool [0030]
  • 3. Establishing a Call [0031]
  • 4. Object Management System [0032]
  • 4.1 Creating a Control Section [0033]
  • 4.2 Creating an Application Section [0034]
  • 4.3 Joiner Computer [0035]
  • 4.4 Operator Messages [0036]
  • 1. Overview [0037]
  • The present invention provides a method and system for managing data (i.e., objects) that are shared by multiple instances of a shared application program. A shared application program is an application program that is executing simultaneously on multiple computers and that has a copy of data that is being shared by each instance of the application program. Each computer maintains a copy of the shared data. When an instance of the application program modifies the shared data, the modifications are sent to the other computers. These other computers store the data in their copies of the shared data, and the instances of the application program update their user interfaces to reflect the modifications to the shared data. Thus, the users of the shared application program can cooperatively modify and view the shared data. For example, multiple users can be executing a word processing program on their computer and sharing a common document. As one user changes the document, the word processing program updates its copy of the shared data. The changes are then transmitted to the other computers so that their shared data can be updated. [0038]
  • A preferred object management (OM) system provides services through which shared application programs can manage their shared data. Each computer has a copy of the OM system. The OM system, under the direction of the shared application program, manages the adding, deleting, and modifying of the shared data. The OM system also controls the transmitting of modifications to the copy of the shared data to the other computers. [0039]
  • In a preferred embodiment, the OM system manages shared data for multiple shared application programs. For example, the users may be sharing both a word processing document and a spreadsheet document. The OM system stores the data in a shared data pool. The shared data pool contains application output (i.e., objects) shared by the group of computers. In particular, the shared data pool is partitioned into sections; one section is a control section and every other section is an application section (“a synchronized data area”). Each application section corresponds to an application program. The output of a shared application program is stored in the corresponding application section of the shared data pool. [0040]
  • The computers communicate with each other by either transmitting messages to all of the computers (i.e., broadcasting messages) or transmitting messages to a particular computer (i.e., sending messages) over channels of the network. FIG. 1 illustrates the channels that the computers use for transmitting messages. In FIG. 1, [0041] Computer1 102, Computer2 112, and Computer3 122 are connected through a network. Each computer has an OM system, a copy of Application1, and a copy of Application2. The OM systems are assigned an OM broadcast channel 132 over which the OM systems broadcast data that is not specific to an application program. Each application program is also assigned a separate application broadcast channel. For example, Application1 is assigned application broadcast channel 134, and Application2 is assigned application broadcast channel 136. While sharing a particular application program, OM systems broadcast messages for that application program on the assigned channel. Moreover, each computer is assigned a node channel, which is used by an OM system to transmit messages to a particular computer. For example, Computer1 is assigned node channel 110, Computer2 is assigned node channel 120, and Computer3 is assigned node channel 130.
  • To modify an object (e.g., a display bitmap) in the shared data pool, the application program forwards an operator message to its OM system indicating an action to be performed on a specified object. The actions include adding an object to the shared data pool, updating an object, replacing an object, moving an object, or deleting an object. Application programs at each computer can perform an action on any object in their corresponding application sections in the shared data pool. Therefore, an OM system of a computer can receive multiple operator messages from OM systems of other computers. Moreover, the OM system can receive multiple operator messages from different application programs at the OM system's computer. Upon receiving an operator message from an application program, the OM system processes the operator message. Then, the OM system broadcasts the operator message that has been received from the application program to the OM systems of other computers on the application channel assigned to that application program. The OM system also forwards an event (i.e., action indication) to the application program indicating the action that has been performed (e.g., an object has been added). [0042]
  • The OM systems of the other computers receive the operator message and process the operator message. Because each operator message includes an indication of an application section, the OM system can determine which application section to modify based on the operator message. These OM systems then forward an event to the appropriate application program at their computers indicating the action that was performed. In this manner, the OM systems maintain the copies of the shared data pool with the same data. [0043]
  • In some cases, the OM system can receive multiple operator messages to perform actions on the same object in the shared data pool. For example, one OM system can update an object from the shared data pool and broadcast an update message to other OM systems to also perform the update, and, shortly afterwards, another OM system can replace the object and broadcast a replace message to other OM systems to also perform the replace. Depending on the speed of transmission over the network channels connecting the computers, one OM system can receive the update message before the replace message, and another OM system can receive the replace message before the update message. If each OM system performed the actions in the order the operator messages were received, then the two OM systems would not have the same data in their shared data pool. That is, the OM system that received the replace message after the update message would replace the object. The OM system that received the update message after the replace message would update an object that has been replaced. [0044]
  • To ensure each computer has the same data in their shared data pool, each OM system processes the operator messages based on the sequence in which they were generated, rather than received. For example, since the update message was transmitted first, the OM system that received the update message first would process the update message and then process the replace message. The OM system that received the replace message first would perform the replace. Then, upon receiving the update message, the OM system would recognize that the update message was transmitted prior to the replace message. Since the object to be updated has already been replaced, this OM system would not perform the update. Thus, both OM systems have replaced the object in the shared data pool. [0045]
  • Furthermore, an OM system can discard an operator message or process it at a later time. In some cases an OM system can receive an operator message modifying an object for which it has not yet received an add message. In order to process these operator messages in the appropriate order, each OM system stores received operator messages in a queue. When an OM system retrieves an operator message from the queue that modifies an object for which it has not processed an add message, the OM system places the operator message in the queue again, to process after processing the add message. Also, the OM system maintains a list of current objects that are currently on a page and a list of deleted objects that were deleted from a page for each page of each application section. When an OM system receives a delete or clear message for an object that it has not added yet, the OM system places this object on the list of deleted objects. Then, upon receiving an add message, if the OM system determines that the object was deleted by a delete message that was generated after the add message, the add message is discarded. In this way, an object that has been deleted is not inadvertently added to the shared data pool. The OM system resolves other conflicts between operator messages based on the order in which the operator message was generated and on the node identification of the computer that generated it, as will be described in further detail below. [0046]
  • Additionally, the OM system enables a new computer (“joiner computer”) to join in sharing the shared data pool. The OM system at the joiner computer obtains data without preventing other computers from updating the shared data pool. Specifically, the joiner computer broadcasts a joining message on the OM channel. Each OM system broadcasts a node identification identifying that computer on the OM channel. The joiner computer selects the computer that responds first as a “helper computer.” Then, the joiner computer sends a data message on the node channel of the helper computer requesting data from the shared data pool. The helper computer will then provide the joiner computer with the data from the shared data pool on the node channel of the joiner computer. In particular, the helper computer first provides the joiner computer with the control section. Then, the helper computer provides the joiner computer with each application section for which a corresponding application program has been invoked at the joiner computer. The other OM systems continue to modify the shared data pool by broadcasting operator messages on the application channels. The joiner computer also receives these messages. As soon as the joiner computer has received the control section, the joiner computer can process these messages in the same manner as the computers already sharing the shared data pool. For example, upon receipt of an operator message indicating a modification of the shared data pool, if the message adds new data or modifies data the computer has received, the computer processes the operator message. On the other hand, if the computer receives an update message for which it has not yet received the data to be updated, the computer queues the update message and processes the update message at a later time. [0047]
  • The computers can share multiple application programs. Each shared application program has a corresponding application section in the shared data pool. In addition to application sections, the shared data pool contains a control section that provides information about the application sections. Each computer can determine which application programs have application sections by viewing the control section. When a computer wants to start sharing data for a new application program, the computer determines whether an application section for that application program has already been created. If one has not been created, the computer creates an application section and provides information about that application section in the control section (i.e., registers the application program). These actions are broadcast on the OM channel so that each other computer subsequently modifies its control section appropriately. If the computer has invoked a copy of the application program corresponding to the application section, the OM system also creates the application section in its copy of the shared data pool. [0048]
  • FIG. 2 illustrates a block diagram of a computer on which the OM system executes. The OM system includes a central processing unit (CPU) [0049] 202, a memory 204, input devices 212, and output devices 214. The input devices are preferably a keyboard and a mouse. The output devices preferably include a display device, such as a CRT. The CPU, memory, input devices, and output devices are interconnected by a bus 216. The memory contains a Call Management system 205, application programs 206, an Object Manager system 208, and a shared data pool 210. One skilled in the art would recognize that the shared data pool could be stored on a different storage medium, such as a disk, or could be stored partially in memory and partially on a disk.
  • FIG. 3 illustrates a diagram providing an example of a shared application program that is using a shared data pool under control of the OM system. In particular, FIG. 3 illustrates an application program that has been invoked at each of three computers and illustrates the same application data displayed at each computer. One computer, [0050] node A 310 is connected to other computers, node B 320 and node C 330. Node A includes a keyboard 316, a mouse 318, and a display 312. The display of 312 shows a window 314 for an application program. In this example, the application program entitled “WHITEBOARD” is being shared among the computers and is executing on each computer. The output data of the shared application program is being displayed in window 314.
  • Both [0051] computers node B 320 and node C 330 also display the same output data in their windows. In particular, node B includes a keyboard 326, a mouse 328, and a display 322. A window 324 displays the data for the Whiteboard application program. Node C has a keyboard 336, a mouse 338, and a display 332. The display 332 displays a window with the output of the Whiteboard application program, which corresponds to the windows on node A and node B.
  • 2. Shared Data Pool [0052]
  • A copy of the shared data pool resides on each computer sharing the application programs. The shared data pool is partitioned into sections. One of the sections is a control section that provides information about the contents of the shared data pool. Each other section is an application section that corresponds to an application program. An application section contains information about the corresponding application program and contains the output of that application program. For example, a Whiteboard application section corresponds to a Whiteboard application program. A Whiteboard application program enables users at computers to display objects on a display screen of a computer to emulate a physical Whiteboard. When users at multiple computers share a Whiteboard application program, each user views the output of the Whiteboard application program. When a user at one computer provides input to an application program, the application program interacts with the OM system to modify objects in the shared data pool. The OM system modifies the objects and notifies the OM systems at other computers of the modifications. The OM systems at other computers then modify their copy of the shared data pool. [0053]
  • FIG. 4 illustrates a shared data pool. The shared [0054] data pool 402 contains one control section 404 and one or more application sections, such as a Whiteboard application section 406. The control section provides information about the shared data pool, such as which application sections have been created. If multiple control sections existed, it would be possible to have conflicting information in the control sections. Moreover, obtaining information by searching the multiple control sections could be time-consuming. Therefore to ensure accurate and easily accessible information, only one control section is created for the shared data pool.
  • The control section and each application section is further partitioned into pages. A page corresponds to a grouping of related data. Each section currently has 256 pages, but it could have more or fewer pages. An application program corresponding to a section interacts with the object management system to modify the objects in the section. In order for the application program to know which pages of the application section contain objects and which objects they contain, the first page of a section is typically a page index that identifies the pages in the section and what they contain. An application developer typically defines the type of information that each page is to contain for an application section. The [0055] control section 404 has been defined with “Page 0408 providing a page index 410 that contains information about the other pages in the control section. Each other page in the control section, such as “Page 1412, correspond to application sections.
  • The control section provides information on the shared data pool, including identifying each application section that corresponds to an application program. When an application program is invoked at two computers simultaneously, it is possible that each computer will create an application section for that application program. Then, the output of the application program at the two computers would be stored in different application sections and the two computers would not be sharing the application program at its output. Therefore, to ensure that only one computer creates an application section for an application program, each OM system prevents other OM systems from modifying the control section (i.e., locks the control section) when registering an application section. The OM system locks the control section by broadcasting a lock message on the OM channel. The OM system then waits to receive lock confirm messages from each other OM system on the OM channel. Upon receiving lock confirm messages from each other OM system, the OM system can modify the control section. After modifying the control section, the OM system notifies other OM systems that they can modify the control section (i.e., unlocks the control section) by broadcasting an unlock message on the OM channel. It is possible for two or more OM systems to broadcast lock messages simultaneously. To resolve conflicts between lock messages, by convention, the lock message having the lowest node identification has priority. In particular, when an OM system receives a lock message, if the OM system has broadcast a lock message, it determines whether it has priority. If the OM system has priority, it sends a lock deny message to the OM system that broadcast the received lock message. If the OM system does not have priority, it broadcasts a lock confirm message and terminates processing of the lock message it had broadcast. [0056]
  • An application program developer may define the partitioning of pages (i.e., which type of data a page can contain) in an application section. Therefore, each application section can have a unique partitioning of pages. FIG. 4 illustrates a sample partitioning of pages for the [0057] Whiteboard application section 406. The Whiteboard application section begins with “Page 1416, rather than “Page 0,” as in the control section discussed above. “Page 1,” rather than “Page 0,” of the Whiteboard application section contains a page index 418 that provides information about each page of the application section. “Page 2420 contains user data 422. “Page 3” and “Page 4” are reserved for future use. “Page 5” through “Page 255” contain the output of the Whiteboard application program.
  • FIG. 5 illustrates a control section in further detail. The control section contains pages such as “[0058] Page 0502 and “Page 1504. The first page of the control section contains a page index. The page index identifies the pages within the control section. In particular, the page index identifies each application program and identifies the page corresponding to that application program. For example, entry 510 indicates that the first page of the control section contains Whiteboard registration information. In particular, the Whiteboard registration information includes node identifications of users 516 and channel identifications 518. The node identifications indicate all of the computers which are sharing a shared data pool for the Whiteboard application. The channel identifications indicate the channel used for sharing the data for the Whiteboard application. Upon registration, the OM system obtains a handle to an initial memory block that references the memory blocks in which objects in the application section are stored. The initial memory block and the memory block in which the objects are stored are dynamically allocated. Therefore, the shared data pool is not necessarily a contiguous portion of memory.
  • FIG. 6 provides further detail about a Whiteboard application section. The Whiteboard application section has several pages. “[0059] Page 1602 of the Whiteboard application section is a page index that indicates the data on each other page of this section. “Page 2604 provides user data. The user data includes the name of the user and the page of the application section the user is currently viewing. The user data also includes a “synch” flag that indicates whether a user is in “synch” with other users. When the user is in “synch” with the other users sharing the shared data pool, the user views the page the user who provided the most recent input is viewing. In this case, the synch flag in the user data page is set for the user. On the other hand, a user can choose not to “synch” with other users and view a different page, in which case the synch flag is not set for the user. The user is provided with a user interface element, such as a scroll bar with arrow indicators, that is used to select a particular page for viewing. “Page 5606 contains the output of the Whiteboard application program.
  • FIG. 7 illustrates a sample set of objects as they would be displayed on a display screen. This set of objects would be stored on a single page of an application section. In particular, objects are layered over each other on the display. Each OM system layers objects in the same manner to ensure that each user views objects in the same way. Objects are also sorted into a [0060] front region 702, a middle region 704, and a back region 706. An application program generates an object with a sequence stamp that includes a sequence identification identifying the order in which the object was generated and with a node identification identifying the computer generating the object. Within the front region, the objects are ordered by their sequence identification, with the highest sequence identification being in front of all objects with lower sequence identifications. In the middle region, objects are added to the end of the region. In the back region, objects are ordered by their sequence identifications so that the first object in the back region has the lowest sequence identification and is displayed over each object with a higher sequence identification. If two objects have the same sequence identification, then they are ordered by their node identifications. Each object is identified by a local object handle, which is used by an application program to identify which object to modify when the OM system processes an operator message. Moreover, for each object, the local handle is translated into a global handle prior to transmitting an operator message to other OM systems. Each other OM system then translates the global handle into a local handle for use by the application program at that computer system. An object is a string of data that the OM system does not interpret. The OM system only places the object in the shared data pool, and the application program interprets the object.
  • 3. Establishing a Call [0061]
  • Before computers can share a shared data pool for application programs, they need to be connected through the network to enable the transfer of output data between them (i.e., participate in a Call). When computers are in a Call, the computers have established a connection through which they can share the shared data pool. [0062]
  • In a preferred embodiment, a user invokes a Call Manager system to establish network connections. A Call Manager system provides a set of application programming interfaces (APIs) for the OM system to interact with the network. FIG. 8 illustrates the architecture of a preferred embodiment of the present invention. In particular, the [0063] OM system 802, the Call Manager system 804, and the network layer 806 are interconnected. A user invokes the Call Manager system to establish a Call. In turn, the Call Manager system invokes the network layer to establish a Call. After establishing the Call, the Call Manager system notifies the OM system that a Call has been established. Once a Call has been established, any OM system in the Call can create a control section for the shared data pool. Once a control section has been created, any OM system can create an application section for a particular application program that is to be shared. The OM system interacts directly with the network layer to transmit messages to other computer systems.
  • Before a user can share an application program, the user requests a Call Manager system to establish a Call. With the request, the user identifies other users with which to establish a Call through use of the dialog box which displays names of users associated with the computers in the network. To establish the Call, the Call Manager system notifies each of the Call Manager systems at the identified computers that a Call is being established. The Call Manager systems at each of the identified computers “joins” the first Call of which they are notified. After one or more other computers has joined the Call, application programs can use the OM system to share a shared data pool. [0064]
  • In a preferred embodiment of the present invention, the computers which are to share an application program are connected through a network based on a T.120 multipoint data conferencing standard (i.e., T.120 network). The T.120 network is a standard for communication among software and hardware products. The T.120 network provides a set of APIs that enable the computers in the network to communicate with each other. The T.120 network includes multiple channels over which the computers are connected. The T.120 network assigns each computer connected to the network a unique node identification. Also, the T.120 network assigns each channel which is part of the network a unique channel identification. Additionally, the OM system can request channels from the T.120 network, including an OM channel on which the OM systems communicate, a node channel on which particular computers communicate, and application channels on which application data is broadcast. [0065]
  • When a user invokes the Call Manager system to establish a Call, the Call Manager system requests an OM channel from the T.120 network by invoking an API function. The T.120 network allocates an OM channel for the Call. After allocating the OM channel, the T.120 network provides the Call Manager system with the channel identification. In turn, the Call Manager system notifies the OM system that a channel has been allocated and provides the channel identification. Additionally, when a particular application program is shared, the OM system obtains a channel from the Call Manager system for the application program. Then, any computer participating in the sharing of the particular application program communicates with all other computers by broadcasting messages over the allocated channel. [0066]
  • Because the T.120 network identifies the channel as having been allocated for a Call, when a joiner computer wishes to join a Call, the joiner computer first uses the Call Manager system to determine the OM channel allocated for the Call. The Call Manager system interacts with the T.120 network to enter the joiner computer in the Call. Then, the user can invoke the OM system to attempt to join in sharing application programs using a shared data pool. Once in the Call, an OM system at the joiner computer uses the channel to broadcast and receive messages for sharing a shared data pool. For example, the OM system at the joiner computer can broadcast a message to all of the computers currently in the Call requesting to join in sharing the shared data pool. [0067]
  • 4. Object Management System [0068]
  • The OM system enables sharing of application programs using a shared data pool. Initially, when an OM system is notified by the Call Manager system that a Call has been established, the OM system attempts to create a control section. As discussed above, only one control section is created. In particular, one OM system creates a control section, and each other OM system creates a copy of this control section for its shared data pool. The first OM system to obtain a preassigned network token (i.e., a network token recognized by each computer in the network) creates the control section. Then, when a computer is to share an application program, the OM system at that computer creates an application section for the application program, creates a registration page for the application program in the control section, and updates the page index of the control section to include an entry for the new registration page. Once a control section and an application section have been created, the OM systems can share the application program corresponding to the application section using the shared data pool. [0069]
  • When a new computer wants to join in sharing application programs using the shared data pool, the OM system at that computer obtains control data from an OM system that is already using the shared data pool. Then, the OM system registers itself by indicating in the control section which application programs it wishes to share. Next, the OM system obtains application sections from an OM system that is already using the shared data pool for the application programs it wishes to share. [0070]
  • The OM system has several components. Each component performs a particular process. FIG. 9 illustrates the components of an OM system. The OM system includes a create [0071] control section component 902 that creates a control section. The create application section component 904 creates an application section. The transfer control data section 906 is used to provide a joiner computer with control data. The register joiner component 908 is used to register a joiner computer by adding the joiner computer's node identification into a registration page of an application program. The transfer application data component 910 transfers application data to a joiner computer. The process operators component 912 processes operator messages.
  • 4.1 Creating a Control Section [0072]
  • Initially, an OM system at one of the computers in the Call creates a control section. The control section identifies the application sections. The OM systems use a predefined network token to ensure that only one OM system creates a control section. To create a control section, an OM system obtains a predefined network token from the T.120 network using the Call Manager system. The network token initially has an associated token count with a value of zero. When the Call Manager system obtains the predefined network token, the Call Manager system increments the token count to one and notifies the OM system that it can create a control section. After creating the control section, the OM system releases the network token. After the control section has been created, any other OM system which attempts to create a control section will first obtain the network token. When the token count of the network token is greater than zero, the OM system recognizes that a control section has already been created and does not create another one. FIG. 10 illustrates an overview flow diagram of the create control section routine. In [0073] step 1002, the create control section routine obtains the network token. In step 1004, the create control section routine increments the token count. In step 1006, the create control section routine creates a control section. In step 1008, the create control section routine releases the network token.
  • 4.2 Creating an Application Section [0074]
  • To start sharing a shared data pool, an OM system locks the control section. To lock the control section, the OM system broadcasts a lock message and waits to receive lock confirm messages from the other OM systems. Upon receiving lock confirm messages, the OM system provides information in the control section about the application program. As discussed above, when the control section is created, it contains [0075] 256 pages, but can contain more. The first page is the page index. Each other page is a registration page. First, the OM system adds an entry to the page index of the control section to identify the next available page in the control section as a registration page for the new application program. Then, the OM system enters user and channel data in the registration page for the application program. Next, the OM system creates an application section. The OM system returns to the application program a handle to the application section. The application program uses the handle to identify the application section of the shared data pool it wants to modify in all operator messages. Then, the OM system broadcasts an unlock message.
  • Additionally, the OM system broadcasts messages to each other computer of each action that it performs. Each OM system receives the broadcast messages and modifies its shared data pool by creating the application section and modifying the control section to reflect the addition of the application section. Then, each other computer that wants to share the application program adds itself to the user list for the application program in the registration page for the application program in the control section. Also, the OM system obtains channel data from the registration page of the control section that identifies the application channel for the application program. Upon obtaining the channel data, each OM system broadcasts operator messages on the application channel. In this manner, each OM system at each other computer obtains information to modify the shared data pool to reflect the new modifications that were made. [0076]
  • FIG. 11 illustrates an overview flow diagram of the create application section routine. In [0077] step 1102, the create application section routine broadcasts a lock message. In step 1104, the create application section routine waits to receive lock confirm. In step 1106, the create application section routine adds an entry to the page index of the control section identifying a new registration page. In step 1108, the create application section routine enters data for a registration page for the application program. In step 1110, the create application section routine creates an application section. In step 1112, the create application section routine broadcasts an unlock message. In step 1114, the create application section routine returns a handle to the application section to the application program.
  • 4.3 Joiner Computer [0078]
  • When a joiner computer wishes to join in sharing the shared data pool, the OM system of the joiner computer obtains control data from a helper computer. The OM system uses the received control data to create a control section at its computer. The OM system then determines from the control data which application sections are available. The OM system can then request application sections for application programs it wishes to share from the helper computer. If an application section is not available for an application program it wishes to share, the OM system creates an application section as discussed above. [0079]
  • FIGS. 12A and 12B illustrate an overview flow diagram of the transfer control data routine. When a joiner computer wishes to obtain control data, the joiner computer broadcasts a join message on the OM channel to all computers sharing the shared data pool (i.e., the sharing computers). The sharing computers broadcast their node identifications on the OM channel. Upon receiving a node identification, the joiner computer selects the computer that broadcast the message as a helper computer. Then, the helper computer provides the joiner computer with control and application data. In particular, FIGS. 12A and 12B illustrates the steps taken by a joiner computer attempting to share a shared data pool, by sharing computers, and by a helper computer. In [0080] step 1202, the joiner computer broadcasts a join message on the OM channel to the sharing computers. In step 1212, each of the sharing computers receives the join message. In step 1214, each of the sharing computers broadcasts a node identification on the OM channel to identify itself to the joiner computer. In step 1204, the joiner computer receives the node identifications. In step 1206, the joiner computer selects the first sharing computer whose node identifications it has received to be a helper computer.
  • After selecting a helper computer, in [0081] step 1208, the joiner computer sends a request for control data on the helper computer's node channel to the helper computer. In step 1218, the helper computer receives the request for control data. The helper computer will send control data to the joiner computer. To avoid having other computers modify the data as it is being sent, the helper computer locks the control section. In step 1220, the helper computer broadcasts a lock message on the OM channel for the control section. In step 1210 and step 1216, the joiner computer and the sharing computers, respectively, receive the lock message. In step 1222 and step 1228, the joiner computer and the sharing computers, respectively, broadcast lock confirm messages on the OM channel. In step 1232, the helper node receives the lock confirm messages. In step 1234, the helper computer sends control data on the joiner computer's node channel to the joiner computer. In step 1224, the joiner computer receives the control data and creates a control section at its computer. In step 1236, the helper computer broadcasts an unlock message on the OM channel. In steps 1226 and 1230, the joiner computer and sharing computers, respectively, receive the unlock message.
  • When computers are sharing application programs using a shared data pool, the control section identifies which application sections are being used by particular computers. When a new computer joins in sharing the shared data pool, the new computer adds its node identification to the registration page for each application program it is interested in sharing. FIGS. 13A and 13B illustrate an overview flow diagram of the steps taken by a joiner computer and sharing computers to register the joiner computer. In [0082] step 1302, the joiner computer receives a request from a user to share an application program. If two computers were to modify the control section at the same time, one could overwrite the other. To avoid this, the joiner computer locks the control section before modifying it. In step 1304, the joiner computer broadcasts a lock message on the OM channel to lock the control section. In step 1312, the sharing computers receive the lock message. In step 1314, the sharing computers broadcast a lock confirm message on the OM channel. In step 1306, the joiner computer receives all lock confirm messages. In step 1308, the joiner computer adds its node identification to the registration page of the application for which it wishes to share the shared data pool. In step 1310, the joiner computer broadcasts a registration message on the OM channel. In step 1316, the sharing computers receive the registration message. In step 1318, the sharing computers process the received registration message to register the joiner computer in their copies of the shared data pool. In step 1320, the joiner computer broadcasts an unlock message on the OM channel. In step 1322, the sharing computers receive the unlock message.
  • After a joiner computer has received control data, and registered itself, the joiner computer obtains application data to create application sections in its shared data pool. To obtain application data, the joiner computer requests this data from the helper computer, which was selected when the joiner computer broadcast a join message. FIG. 14 illustrates an overview flow diagram of the transfer application data routine. In [0083] step 1402, the joiner computer sends a request for application data on the node channel of the helper computer. In step 1406, the helper computer receives the request for application data. In step 1408, the helper computer sends application data on the node channel of the joiner computer. In step 1404, the joiner computer receives the application data and creates application sections.
  • 4.4 Operator Messages [0084]
  • Once a computer has a control section, application programs at that computer can obtain an initial memory block for their application sections and can process operators for that application section using the OM system. In particular, an application program forwards an operator message to the OM system to perform an action on an object. The OM system processes the operator message and broadcasts the operator message to the other OM systems on the application channel for that application program. Upon receiving the operator message, the other OM systems process the message. Each OM system also forwards an event to the application program, indicating the action that was performed. [0085]
  • Each operator message specifies an action and specifies the object on which the action is to be performed. The operator messages include a clear message, a move message, an add message, a replace message, an update message, and a delete message. A clear message indicates that all of the objects on a page are to be deleted. A delete message indicates that a particular object on a page is to be deleted. An add message indicates an object to be added to a page, either to a front, a middle, or a back region. A move message indicates that an object is to be moved to the front, middle, or back region. A replace message indicates that an entire object is to be replaced. The update message indicates that a portion of an object is to be updated. [0086]
  • Each operator message has a sequence stamp that includes a node identification as well as a sequence identification. The node identification identifies the computer that broadcast the operator message. The sequence identification indicates the order in which that operator message was generated. Whenever an OM system generates a particular operator message, it generates a sequence identification. Moreover, the OM system maintains an operator stamp for each type of operator at the computer that indicates when an operator message for that operator was last processed. In particular, a clear operator has a clear stamp; an add operator has an add stamp; a move operator has a move stamp; an update operator has an update stamp; and a replace operator has a replace stamp. However, the delete operator does not have a delete stamp. Instead, the OM system maintains a list of all objects that have been deleted. Along with each of these operator stamps, the OM system maintains the node identification of the computer that broadcast the last operator message for the operator. For each of these operators, the respective operator stamp is initially one. The sequence identification for a particular operator message is set to the operator stamp for the operator. For example, when an OM system generates an add message, the OM system sets the sequence identification in the add message to the value of the add stamp. Then, the OM system increments the operator stamp (e.g., the add stamp) by one. [0087]
  • Each OM system uses the sequence identification in an operator message to determine when the operator message was generated. Also, each OM system uses the operator stamp stored at the computer to determine the sequence of the last operator message it processed. Therefore, it is important to update the operator stamps based on the received sequence identifications. When an OM system receives an operator message with a sequence identification that is greater than the operator stamp it has stored for a particular operator, the OM system updates its operator stamp with the value of the received sequence identification. For example, if an OM system has an add stamp with the value of one, and the OM system receives an add message with a sequence identification with the value of two, the OM system updates its add stamp with the value of two. [0088]
  • In some cases, an OM system can receive an operator message to update, move, or delete an object that has not been added yet. To resolve this problem, each OM system stores operator messages in a queue. Moreover, each OM system maintains a list of current objects that are currently on a page of an application section. When an operator message is received, the OM system determines whether the object is on the page of the application section using the list of current objects. When the object is not on the page of the application section, the OM system places the operator message back in the queue to process after the object has been added to the application section. However, a replace message replaces an entire object. Therefore, if the OM system receives a replace message for an object that has not been added, the OM system processes the replace message by placing the object specified by the replace message in the shared data pool and adding the object to the list of current objects. Then, when the add message for the object is later received, it is discarded. When a delete message is received, the object to be deleted is added to the list of deleted objects. If the object is in the list of current objects, it is removed from this list. Once the object is in the list of deleted objects, when an add message is later received for the object, the add message is discarded. [0089]
  • In addition, an OM system can receive an operator message to modify an object (i.e., an update message) that has already been deleted. For example, an update message that was generated before a delete message could be received after the delete message. Similarly, the update message could have been generated prior to a clear message. In this case, the OM system recognizes that it cannot update the deleted object. Therefore, upon receiving an operator message, the OM system determines whether the object has already been deleted using the list of deleted objects. If the object was deleted by a delete message generated after the received operator message, the operator message is discarded, otherwise it is processed, as discussed in detail below. [0090]
  • An OM system can also receive an operator message with a sequence identification which equals the operator stamp for that operator. For example, the OM system can receive an update message with a sequence identification of two from two different computers. If the OM systems process the update messages in different orders, the shared data pools at the computers will not reflect the same data. Therefore, each OM system determines which update message to process and which to discard using the node identifications. By convention, the operator message with the lower node identification is processed. [0091]
  • FIGS. 15A and 15B illustrate an overview flow diagram of the process operator messages routine. The process operator messages routine determines the type of action indicated by the operator message and processes the operator message. In [0092] step 1502, if the operator message was generated before a clear message was generated, then the process operator message routine continues at step 1504, otherwise the process operator message routine continues at step 1506. In step 1504, the process operator messages routine discards the operator message. In step 1506, if this operator message was generated before a delete message was generated for the object, then the process operator messages routine continues at step 1508, otherwise the process operator messages routine continues at step 1510. In step 1508, the process operator messages routine discards the operator message. In step 1510, if the operator message was generated before the last received operator message of the same type, then the process operator messages routine continues at step 1512, otherwise the process operator messages routine continues at step 1516. In step 1512, the process operator messages routine discards the operator message. In step 1516, if the operator message identifies an object that has not been added yet and it is not a replace message, then the process operator messages routine continues at step 1518, otherwise the process operator messages routine continues at step 1520. In step 1518, the process operator messages routine places the operator message back in a queue.
  • In [0093] step 1520, if the operator message is an add message, the process operator messages routine continues at step 1522, otherwise the process operator messages routine continues at step 1524. In step 1522, the process operator messages routine invokes the process add routine. In step 1524, if the operator message is a replace message, the process operator messages routine continues at step 1526, otherwise the process operator messages routine continues at step 1528. In step 1526, the process operator messages routine invokes a process replace routine. In step 1528, if the operator message is an update message, the process operator messages routine continues at step 1530, otherwise the process operator messages routine continues at step 1532. In step 1530, the process operator messages routine invokes a process update routine. In step 1532, if the operator message is a move message, the process operator messages routine continues at step 1534, otherwise the process operator messages routine continues at step 1536. In step 1534, the process operator messages routine invokes a process move routine. In step 1536, if the operator message is a clear message, the process operator messages routine continues at step 1538, otherwise the process operator messages routine continues at step 1542. In step 1538, the process operator messages routine clears the objects on the page specified by the object. In step 1540, the process operator messages routine updates the clear stamp. In step 1542, the process operator messages routine places the object on the list of deleted objects.
  • The add message identifies an object that is to be added to a page of an application section. The add message indicates whether the object is to be added to the front, middle, or back region of the set of objects on a page of an application section. In the front region, the objects are ordered by decreasing sequence numbers, with the top-most object having the highest sequence number. In the back region, the objects are ordered by increasing sequence numbers, with the bottom-most object having the highest sequence number. Objects are added to the end of the middle region. As discussed above, if the sequence identification of the add message is the same as the add stamp, an OM system will use the node identification in the message to determine whether or not to apply the operator. Also, if a replace message that was generated before the add message for the object has already been processed, the OM system discards the add message. Otherwise, the OM system adds the object to either the front, middle, or back region and updates the add stamp. [0094]
  • FIG. 16 illustrates an overview flow diagram of the process add routine. In [0095] step 1602, if the add message was generated at the same time as the last received add message, then the process add routine continues at step 1604, otherwise the process add routine continues at step 1608. In step 1604, if the node identification of the add message is greater than the node identification of the last received add message, then the process add routine continues at step 1606, otherwise the process add routine continues at step 1608. In step 1606, the process add routine discards the operator message. In step 1608, if this add message was generated before the last received replace message, then the process add routine continues at step 1610, otherwise the process add routine continues at step 1612. In step 1610, the process add routine discards the operator message. In step 1612, if this add message indicates the object is be added to the front region, the process add routine continues at step 1614, otherwise the process add routine continues at step 1616. In step 1614, the process add routine adds the object to the front region according to its sequence stamp. In step 1616, if this add message indicates the object is to be added to the back region, the process add routine continues at step 1618, otherwise the process add routine continues at step 1620. In step 1618, the process add routine adds the object to the back region according to its sequence stamp. In step 1620, the process add routine adds the object at the end of the middle region. In step 1622, the process add routine updates the add stamp by incrementing the value by one.
  • The replace message replaces an entire object with another one. As discussed above, if the sequence stamp of the replace message is the same as the replace stamp, an OM system will use the node identification in the message to determine whether or not to apply the operator. The OM system can receive a replace message for an object that was generated before the last received replace message. This current replace message is then discarded. Also, if this replace message was generated before the last received update message for this object, the OM system replaces the portion of the object that was not updated. Otherwise, the OM system replaces the object and updates the replace stamp. [0096]
  • FIG. 17 illustrates an overview flow diagram of the process replace routine. In [0097] step 1702, if the replace message was generated at the same time as the last received replace message, the process replace routine continues at step 1704, otherwise the process replace routine continues at step 1708. In step 1704, if the node identification of this replace message is greater than the node identification of the last received replace message, the process replace routine continues at step 1706, otherwise the process replace routine continues at step 1708. In step 1706, the process replace routine discards the operator message. In step 1708, if the replace message was generated before the last received replace message, the process replace routine continues at step 1710, otherwise the process replace routine continues at step 1712. In step 1710, the process replace routine discards the operator message. In step 1712, if this replace message was generated before the last received update message, the process replace routine continues at step 1714, otherwise the process replace routine continues at step 1716. In step 1714, the process replace routine replaces the portion of the object not already updated. In step 1716, the process replace routine replaces the object. In step 1718, the process replace routine updates the replace stamp.
  • An update message will update a portion of an object. If the sequence identification of the update message is the same as the update stamp, an OM system will use the node identification in the message to determine whether or not to apply the operator. If this update message was generated before the last received update message, then the OM system recognizes that a portion of the object has already been updated and this portion should not be updated again. Therefore, the OM system updates the portion of the object not already updated. On the other hand, when the OM system receives an update message for an object that was generated before a replace message for the replace was received, the OM system recognizes that the entire object has been replaced and the update message should be discarded. Otherwise the OM system updates the object and updates the update stamp. [0098]
  • FIG. 18 illustrates an overview flow diagram of the process update routine. In [0099] step 1802, if the update message was sent at the same time as the last received update message, the process update routine continues at step 1804, otherwise the process update routine continues at step 1808. In step 1804, if the node identification of the update message is greater than the node identification of the last received update message, then the process update routine continues at step 1806, otherwise the process update routine continues at step 1808. In step 1806, the process update routine discards the operator message. In step 1808, if this update message was generated before the last received update message, the process update routine continues at step 1810, otherwise the process update routine continues at step 1812. In step 1810, the process update routine updates the portion of the object not already updated. In step 1812, if this update message was generated before the last received replace message, the process update routine continues at step 1814, otherwise the process update routine continues at step 1818. In step 1814, the OM system discards the operator message. In step 1818, the process update routine updates the object. In step 1820, the process update routine updates the update stamp.
  • The move operator moves an object on a page by specifying that the object be moved to the front, middle or back region. If the sequence identification of the move message is the same as the move stamp, an OM system will use the node identification in the message to determine whether or not to apply the operator. Otherwise, the OM system moves the object to either the front, middle, or back region and updates the move stamp. [0100]
  • FIG. 19 illustrates an overview flow diagram of the process move routine. In [0101] step 1902, if this move message was generated at the same time as the last received move message, the process move routine continues at step 1904, otherwise the process move routine continues at step 1908. In step 1904, if the node identification of the move message is greater than the node identification of the last received move message, then the process move routine continues at step 1906, otherwise the process move routine continues at step 1908. In step 1906, the process move routine discards the operator message. In step 1908, if the move message indicates the object is be added to the front region, the process move routine continues its step 1910, otherwise the process move continues at step 1912. In step 1910, the process move routine moves the object to the front region according to its sequence stamp. In step 1912, if this move message indicates the object is be added to the back region, the process move routine continues at step 1914, otherwise the process move routine continues at step 1916. In step 1914, the process move routine moves the object to the back region according to its sequence stamp. In step 1916, the process move routine moves the object to the end of the middle region. In step 1918, the process move routine updates the move stamp.
  • In an alternative embodiment, the present invention enables different application programs to share data in one application section. Because application programs, and not the OM system, interpret objects, any application program can use the OM system to modify objects in any application section. For example, if a Whiteboard application section has been created for the Whiteboard application program, a Microsoft Word application program can modify objects in the Whiteboard application section. In particular, the OM system can register the Microsoft Word application program with the control section. Once registered, the OM system receives and transmits operator messages for the Microsoft Word application program on the application channel assigned to the Whiteboard application section, whereby the Microsoft Word application program is able to share data with the Whiteboard application program. [0102]
  • In yet another alternative embodiment, the functionality of the OM system and the Call Manager system is integrated into each application program. Initially, when a user wishes to share data from an application program, the user invokes the application program to be shared and indicates that its output is to be shared. The application program interacts with the network layer to establish a Call. Then, the application program itself creates and maintains a shared data pool. Additionally, when an application program receives input from an input device indicating that a local action is to be performed on the shared data, the application program updates the application data. Next, the application program broadcasts the action to each other computer system with which it is sharing data. At each other computer system, when an application program receives the remote action (i.e., the broadcast action) that application program updates its application data. [0103]
  • Although the present invention has been described in terms of a preferred embodiment, it is not intended that the invention be limited by this embodiment. Modifications within the spirit of the present invention will be apparent to those skilled in the art. The scope of the present invention is defined in the claims that follow. [0104]

Claims (40)

1. A method for sharing an application program among a plurality of computer systems, each computer system executing an instance of the application program, each instance of the application program having application data, each computer system having a connection to each other computer system, having an object management system for synchronizing the application data, having an input device, and having a display on which the application data is displayed, the method comprising:
at each computer system,
under control of the instance of the application program,
receiving an action to be performed on the application data from a user using the input device; and
transmitting an action indication indicating the received action to the object management system at that computer system;
under control of the object management system at that computer system,
receiving the transmitted action indication from the instance of the application program;
broadcasting the received action indication to each object management system at each connected computer system;
performing the action indicated by the received action indication on the application data; and
notifying the instance of the application program that the action was performed on the application data; and
under control of the instance of the application program,
receiving the notification from the object management system; and
updating the display based on the application data on which the action was performed; and
at each connected computer system,
under control of the object management system at that computer system,
receiving the broadcast action indication from the other computer system;
performing the action indicated by the received action indication on the application data; and
notifying the instance of the application program at that computer system that the action was performed on the application data; and
under control of the instance of the application program,
receiving the notification from the object management system; and
updating the display based on the application data on which the action was performed.
2. A method for sharing an application program among a plurality of computer systems, each computer system executing an instance of the application program, each instance of the application program having application data, each computer system having a connection to each other computer system and having an input device, the method comprising:
providing an object management system for updating the application data and notifying the instance of the application program that the application data was updated; and
under control of the instance of the application program at one computer system,
receiving an action to be performed on the application data from a user using the input device;
notifying the object management system at that computer system of the received action;
receiving from the object management system a notification that the application data was updated with the received action; and
generating a display based on the updated application data.
3. The method of
claim 2
wherein after the step of notifying the object management system at that computer system of the received action, further comprising:
under control of the object management system, broadcasting to the object management system at each other computer system an action indication indicating the received action;
under control of each other computer system,
under control of the object management system,
receiving the broadcast action indication from the object management system of the other computer system;
updating the application data based on the action indicated by the received action indication; and
notifying the instance of the application program at that computer system that the application data was updated; and
under control of the instance of the application program, generating a display based on the updated application data.
4. A method for sharing an application program among a plurality of computer systems, each computer system executing an instance of the application program, each instance of the application program having application data, each computer system having a connection to each other computer system and having an object management system for synchronizing the application data, the method comprising:
under control of the object management system at one computer system, receiving sent action indications from the instance of the application program at that computer system and broadcast action indications from object management systems at each connected computer system;
updating the application data based on the action indicated by each received action indication;
notifying the instance of the application program that the application data was updated; and
when the received action indication is received from the instance of the application program at that computer system, broadcasting the received action indication to each object management system at each connected computer system.
5. The method of
claim 4
wherein after the step of broadcasting the received action indication, further comprising:
under control of the object management system at each other computer system,
receiving the broadcast action indication from the other object management system;
updating the application data based on the action indicated by each received action indication; and
notifying the instance of the application program that the application data was updated.
6. A method for enabling a new computer system to join in sharing an application program with a plurality of other computer systems, each computer system having a connection to each other computer system, each computer system that is sharing the application program having an instance of the application program and having a synchronized data area containing data output by the instance of the application program, the method comprising:
under control of the new computer system,
broadcasting a join message to the other computer systems indicating that the new computer system is to share the application program;
receiving from each other computer system a node identification that identifies that computer system;
selecting one of the computer systems for which a node identification has been received;
sending a request to the selected computer system for a copy of the data in the synchronized data area; and
upon receiving the copy of the data from the selected computer system, generating a display based on the received copy of the data so that the new computer system joins in the sharing of the application program.
7. The method of
claim 6
wherein the step of selecting one of the computer systems selects a first computer system from which the node identification was received.
8. The method of
claim 6
wherein each computer system has a queue for maintaining action indications, each action indication indicating an action to be performed on the data in the synchronized data area, and wherein after the step of sending a request, the object management system at the new computer system receives action indications from each object management system at each other computer system and adds each received action indication to the queue and wherein after the step of receiving the copy of the data, the object management system at the new computer system processes each action indication in the queue.
9. The method of
claim 8
wherein the step of processing each action indication in the queue further comprises:
retrieving an action indication from the queue;
determining whether to process the action indication;
when it is determined that the action indication is to be processed, processing the action indication;
when it is determined that the action indication is to be processed at a later time, adding the action indication to the queue; and
when it is determined that the action indication is not to be processed, discarding the action indication.
10. A method for sharing an application program among a plurality of computer systems, the application program being a client application program, each computer system executing an instance of the client application program, each instance of the client application program having application data, each computer system having a connection to each other computer system, having an object management server for synchronizing the application data, and having a synchronized data area containing the application data, the method comprising:
at each computer system,
under control of the object management server,
receiving sent action indications from the instance of the client application program at that computer system and broadcast action indications from each object management server at each other computer system, the action indications indicating actions to be performed on the data,
determining whether to process each received action indication;
after determining whether to process each received action indication,
when it is determined that an action indication is to be processed,
processing the action indication; and
notifying the instance of the client application program that the application data was updated with the action indication;
when it is determined that the action indication is to be processed at a later time, processing the action indication at a later time; and
when it is determined that the action indication is not to be processed, discarding the action indication; and
when the received action indication was received from the instance of the client application program at that computer system, broadcasting the action indication to the other computer systems.
11. The method of
claim 10
wherein after the step of notifying the instance of the client application program that the application data was updated with the action indication, under control of the instance of the client application program, generating a display based upon the updated application data.
12. A method for sharing an application program among a plurality of computer systems such that any one of the computer systems can stop sharing the application program without affecting the other computer systems, each computer system executing an instance of the application program, each instance of the application program having application data, each computer system having a connection to each other computer system and having an object management system for synchronizing the application data, the method comprising:
under control of one of the computer systems,
under control of the object management system, broadcasting an action indication to each of the other computer systems, the action indication indicating an action to be performed on the application data;
under control of each of the other computer systems,
under control of the object management system,
receiving the broadcast action indication from the object management system at the connected computer system;
updating the application data based on the action indicated by the received action indication; and
notifying the instance of the application program at that computer system that the application data was updated;
under control of the instance of the application program,
receiving the notification from the object management system; and
updating a display based on the updated application data; and
under control of the connected computer system, ceasing to share the application program, whereby the display at each of the other computer systems remains updated based on the updated application data.
13. The method of
claim 12
wherein after the step of ceasing to share the application program, each other computer system continues to share the application program using the updated application data.
14. A method for maintaining a consistent z-ordering for objects displayed when sharing an application program among a plurality of computer systems, each computer system executing an instance of the application program, each computer system having a connection to each other computer system, having a unique identification, and having an object management system, the method comprising:
under control of the object management system at each computer system,
when the instance of the application program requests that a new object be displayed,
assigning a sequence number to the new object based on a last sequence number of an object that was last displayed at the computer system; and
broadcasting to each other computer system an indication of the object, the assigned sequence number, and the unique identification of that computer system; and
upon receiving the broadcast, under control of the object management system at each other computer system,
when an object that has already been displayed has the same sequence number as the received sequence number, setting the z-order of the received object relative to the z-order of the displayed object with the same sequence number based on the received unique identification of the computer system that broadcast the received object; and
when no object that has already been displayed has the same sequence number as the received sequence number, setting the z-order of the received object based on the received sequence number so that each computer system can maintain a consistent z-ordering.
15. The method of
claim 14
wherein the received object has a region identifier indicating the placement of the object in a front region, middle region, or back region and wherein the steps of setting the z-order set the z-order based upon the region specified by the region identifier.
16. A method for sharing application data among a plurality of application programs at multiple computer systems, each application program having application data, each computer system having a connection to each other computer system and having an input device, the method comprising:
providing an object management system for updating the application data and notifying the application programs that the application data was updated; and
under control of an application program at one computer system,
receiving an action to be performed on the application data from a user using the input device; and
notifying the object management system at that computer system of the received action; and
under control of each application program at that computer system,
receiving from the object management system a notification that the application data was updated with the received action; and
processing the received notification.
17. The method of
claim 16
wherein the step of processing the received notification further comprises generating a display based upon the updated application data.
18. The method of
claim 16
wherein after the step of notifying the object management system at that computer system of the received action, further comprising:
under control of the object management system at that computer system,
receiving from the application program a notification of the received action;
updating the application data based on the received action; and
broadcasting the notification of the received action to each object management system at each other computer system;
under control of each object management system at each other computer system,
receiving the broadcast notification of the received action;
updating the application data based on the received broadcast notification of the received action; and
notifying the application programs at that computer system that the application data was updated; and
under control of each application program at each other computer system, processing the received notification.
19. A method for sharing application data among a plurality of application programs at multiple computer systems, each application program having application data stored in a synchronized data area corresponding to that application program, each computer system executing an instance of each application program, each computer system having a connection to each other computer system and having an object management system for synchronizing the application data, the method comprising:
under control of the object management system at one computer system,
receiving sent action indications from the instances of the application programs at that computer system and broadcast action indications from object management systems at each connected computer system;
for each received action indication,
updating the application data in the synchronized data area corresponding to the instance of the application program from which the action indication originated based on the action indicated by the received action indication;
notifying the instance of the application program corresponding to the updated synchronized data area at that computer system that the application data was updated; and
when the received action indication originated from the instance of the application program at that computer system, broadcasting the received action indication to each object management system at each connected computer system.
20. The method of
claim 19
wherein after the step of broadcasting the received action indication, further comprising:
under control of the object management system at each other computer system,
receiving the broadcast action indication from the other object management system;
updating the application data in the synchronized data area corresponding to the instance of the application program from which the action indication originated based on the action indicated by each received action indication; and
notifying the instance of the application program corresponding to the updated synchronized data area at that computer system that the application data was updated.
21. The method of
claim 19
wherein after the step of notifying the instance of the application program, further comprising:
under control of the instance of the application program,
receiving a notification from the object management system that the application data has been updated; and
processing the received notification.
22. A system for managing application data for an application program shared among a plurality of computer systems, each computer system executing an instance of the application program, each computer system having a connection to each other computer system and having an input device, the system comprising:
under control of the instance of the application program at one computer system,
receiving local actions to be performed on the application data from a user using the input device and receiving remote actions from an instance of the application program executing at another computer system;
updating the application data based on the received actions; and
when a local action is received, broadcasting the local action to the other instance of the application program at the other computer system, wherein the other computer system receives the broadcast local action as a remote action.
23. The system of
claim 22
, further comprising:
under control of each instance of the application program at each other computer system,
receiving the broadcast action from the other application program; and
updating the application data at that computer system based on the received action.
24. The method of
claim 22
wherein after the updating of the application data based on the action, generating a display based on the updated application data.
25. A method for enabling a new computer system to join in sharing application data for an application program shared among a plurality of other computer systems, each computer system having a connection to each other computer system, each computer system that is sharing the application program having an instance of the application program and having a synchronized data area containing data output by the instance of the application program, the method comprising:
under control of the instance of the application program at the new computer system,
broadcasting a join message to each instance of the application program at each other computer system indicating that the new computer system is to share the application program;
receiving from each other instance of the application program at each other computer system a node identification that identifies that computer system;
selecting one of the computer systems for which a node identification has been received;
sending a request to the instance of the application program at the selected computer system for a copy of the data in the synchronized data area; and
upon receiving the copy of the data from the instance of the application program at the selected computer system, generating a display based on the received copy of the data so that the new computer system joins in the sharing of the application program.
26. The method of
claim 25
wherein the selecting of one of the computer systems selects a first computer system from which the node identification was received.
27. The method of
claim 25
wherein each computer system has a queue for maintaining actions to be performed on the data in the synchronized data area, and wherein after sending a request, the instance of the application program at the new computer system receives actions from each instance of the application program at each other computer system and adds each received action to the queue and wherein after receiving the copy of the data, the instance of the application program at the new computer system processes each action in the queue.
28. A system for sharing an application program among a plurality of computer systems, each computer system having a connection to each other computer system, the system comprising:
an object management system at one computer system for updating data output by an instance of the application program at that computer system and notifying the instance of the application program that the data was updated; and
an instance of the application program at that computer system for:
generating an action to be performed on the data;
sending an action indication to the object management system indicating the generated action;
receiving a notification from the object management system that the data was updated with the action indicated by the sent action indication; and
generating a display based on the updated data.
29. The system of
claim 28
, further comprising:
an object management system at each other computer system for:
receiving the broadcast action indication from the object management system at the other computer system;
updating data at that computer system based on the action indicated by the received action indication; and
notifying an instance of the application program at that computer system that the data was updated; and
an instance of the application program at each other computer system for:
receiving the notification from the object management system at that computer system; and
generating a display based on the updated data.
30. A system for managing application data for an application program shared among a plurality of computer systems, each computer system having a connection to each other computer system and having an input device, the system comprising:
an object management system at each computer system for:
receiving action indications from an instance of the application program executing at that computer system and from each object management system at each other computer system, the action indications indicating actions to be performed on the application data;
updating the application data based on the action indicated by each received action indication;
notifying the instance of the application program that the application data was updated; and
when a received action indication is received from the instance of the application program at that computer system, broadcasting the action indication to each object management system at each other computer system.
31. The system of
claim 30
, further comprising:
an object management system at each other computer system for:
receiving the broadcast action indication from the other object management system;
updating the application data at that computer system based on the action indicated by each received action indication; and
notifying the instance of the application program at that computer system that the application data was updated.
32. A system for enabling a new computer system to join in sharing an application program with a plurality of other computer systems, each computer system having a connection to each other computer system, each computer system that is sharing the application program having an instance of the application program and having a synchronized data area containing data output by the instance of the application program, the system comprising:
at the new computer system, an object management system for:
transmitting a join message to the other computer systems, indicating that the new computer system is to share the application program;
receiving from each other computer system a node identification that identifies that computer system;
selecting one of the computer systems from which a node identification has been received;
sending a request to the selected computer system for a copy of the data in the synchronized data area; and
receiving a copy of the data from the selected computer system; and
an instance of the application program at the new computer system for generating a display based on the received copy of the data so that the new computer system joins in the sharing of the application program.
33. The system of
claim 32
, further comprising:
a queue for maintaining action indications, each action indication indicating an action to be performed on the data in the synchronized data area; and
the object management system at the new computer system for:
receiving action indications from each object management system at each other computer system;
adding each received action indication to the queue; and
processing each action indication in the queue.
34. A computer-readable storage medium containing computer instructions that cause a computer system to:
receive at an instance of an application program an action to be performed on application data;
send an action indication to an object management system indicating the received action, the object management system for updating the application data and notifying the instance of the application program that the application data was updated;
receive a notification from the object management system that the application data was updated with the action indicated by the sent action indication; and
generate a display based on the updated application data.
35. The computer-readable storage medium of
claim 34
wherein the instructions cause the computer system to receive a notification from the object management system that the application data was updated with an action indicated by an action indication received from a connected computer system.
36. A computer-readable storage medium containing computer instructions that cause a computer system to:
receive sent action indications from an instance of an application program at that computer system and broadcast action indications from object management systems at connected computer systems, each connected computer system having an instance of the application program, each instance of the application program having application data, each action indication indicating an action to be performed on the application data;
update the application data based on the action indicated by each received action indication;
notify the instance of the application program that the application data was updated; and
broadcast the received action indication to each object management system at each connected computer system when the received action indication is received from the instance of the application program at that computer system.
37. The computer-readable storage medium of
claim 36
wherein the instructions cause the computer system to generate a display based upon the updated application data.
38. A computer-readable storage medium containing computer instructions that cause a computer system to:
broadcast a join message to a plurality of connected computer systems, the join message indicating that the computer system is to share an application program with the other computer systems, each computer system having an instance of the application program, the output of the instance of the application program being contained in a synchronized data area;
receive a node identification from each other computer system that identifies that computer system;
select one of the computer systems for which a node identification has been received;
send a request to the selected computer system requesting a copy of the data in the synchronized data area;
receive the requested data from the selected computer system; and
generate a display based on the received copy of the data so that the new computer system joins in the sharing of the application program.
39. The computer-readable storage medium of
claim 38
wherein the instructions cause the computer system to select a first computer system from which the node identification is received.
40. A computer-readable storage medium containing a data structure, comprising:
a plurality of synchronized data areas, each synchronized data area corresponding to an application program that is shared among a plurality of computer systems, the synchronized data area containing data output by the corresponding application program; and
a control section for identifying each synchronized data area.
US09/742,583 1996-05-24 2000-12-21 Method and system for managing data while sharing application programs Abandoned US20010000811A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US09/742,583 US20010000811A1 (en) 1996-05-24 2000-12-21 Method and system for managing data while sharing application programs

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/653,765 US6199116B1 (en) 1996-05-24 1996-05-24 Method and system for managing data while sharing application programs
US09/742,583 US20010000811A1 (en) 1996-05-24 2000-12-21 Method and system for managing data while sharing application programs

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US08/653,765 Continuation US6199116B1 (en) 1996-05-24 1996-05-24 Method and system for managing data while sharing application programs

Publications (1)

Publication Number Publication Date
US20010000811A1 true US20010000811A1 (en) 2001-05-03

Family

ID=24622216

Family Applications (3)

Application Number Title Priority Date Filing Date
US08/653,765 Expired - Lifetime US6199116B1 (en) 1996-05-24 1996-05-24 Method and system for managing data while sharing application programs
US09/186,668 Expired - Lifetime US6574674B1 (en) 1996-05-24 1998-11-04 Method and system for managing data while sharing application programs
US09/742,583 Abandoned US20010000811A1 (en) 1996-05-24 2000-12-21 Method and system for managing data while sharing application programs

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US08/653,765 Expired - Lifetime US6199116B1 (en) 1996-05-24 1996-05-24 Method and system for managing data while sharing application programs
US09/186,668 Expired - Lifetime US6574674B1 (en) 1996-05-24 1998-11-04 Method and system for managing data while sharing application programs

Country Status (1)

Country Link
US (3) US6199116B1 (en)

Cited By (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030189601A1 (en) * 2002-04-03 2003-10-09 Microsoft Corporation Application sharing single document sharing
US20050024389A1 (en) * 1995-07-05 2005-02-03 Microsoft Corporation Method and system for transmitting data for a shared application
US20050033811A1 (en) * 2003-08-07 2005-02-10 International Business Machines Corporation Collaborative email
US20050234943A1 (en) * 2004-04-20 2005-10-20 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
US20050257153A1 (en) * 2002-04-05 2005-11-17 Microsoft Corporation Application sharing user interface improvements
US20060017994A1 (en) * 2003-06-10 2006-01-26 Fujitsu Limited Image registration apparatus, display control apparatus, and image server
US20060184550A1 (en) * 2000-11-02 2006-08-17 Canon Kabushiki Kaisha Information processing apparatus and method, and computer readable memory
US20060282548A1 (en) * 2005-05-30 2006-12-14 Canon Kabushiki Kaisha Collaboration support system and control method thereof
US20070156689A1 (en) * 2005-09-01 2007-07-05 Microsoft Corporation Per-user application rendering in the presence of application sharing
US20070240160A1 (en) * 2006-03-31 2007-10-11 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US7293243B1 (en) 2002-05-22 2007-11-06 Microsoft Corporation Application sharing viewer presentation
US20080059557A1 (en) * 2006-03-31 2008-03-06 Desantis Peter N Executing programs based on user-specified constraints
US7356563B1 (en) 2002-06-06 2008-04-08 Microsoft Corporation Methods of annotating a collaborative application display
US20100125550A1 (en) * 2008-11-17 2010-05-20 Fujitsu Limited Computer-readable medium storing data sharing program, data sharing method, and data sharing processor
US7765261B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium and signals for supporting a multiple-party communication on a plurality of computer servers
US7765266B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium, and signals for publishing content created during a communication
US7950046B2 (en) 2007-03-30 2011-05-24 Uranus International Limited Method, apparatus, system, medium, and signals for intercepting a multiple-party communication
US7954043B2 (en) 2002-12-02 2011-05-31 International Business Machines Corporation Concurrent editing of a file by multiple authors
US20110258566A1 (en) * 2010-04-14 2011-10-20 Microsoft Corporation Assigning z-order to user interface elements
US8060887B2 (en) 2007-03-30 2011-11-15 Uranus International Limited Method, apparatus, system, and medium for supporting multiple-party communications
US20110296432A1 (en) * 2010-05-25 2011-12-01 Microsoft Corporation Programming model for collaborative distributed systems
US20110320407A1 (en) * 2010-06-23 2011-12-29 Microsoft Corporation Shared data collections
US8495220B2 (en) 2008-11-17 2013-07-23 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US8510448B2 (en) 2008-11-17 2013-08-13 Amazon Technologies, Inc. Service provider registration by a content broker
US8521885B1 (en) 2009-03-27 2013-08-27 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US8521851B1 (en) 2009-03-27 2013-08-27 Amazon Technologies, Inc. DNS query processing using resource identifiers specifying an application broker
US8533293B1 (en) 2008-03-31 2013-09-10 Amazon Technologies, Inc. Client side cache management
US8543702B1 (en) 2009-06-16 2013-09-24 Amazon Technologies, Inc. Managing resources using resource expiration data
US8577992B1 (en) 2010-09-28 2013-11-05 Amazon Technologies, Inc. Request routing management based on network components
US8583776B2 (en) 2008-11-17 2013-11-12 Amazon Technologies, Inc. Managing content delivery network service providers
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US8627211B2 (en) 2007-03-30 2014-01-07 Uranus International Limited Method, apparatus, system, medium, and signals for supporting pointer display in a multiple-party communication
US8626950B1 (en) 2010-12-03 2014-01-07 Amazon Technologies, Inc. Request routing processing
US8639817B2 (en) 2008-03-31 2014-01-28 Amazon Technologies, Inc. Content management
US8676918B2 (en) 2010-09-28 2014-03-18 Amazon Technologies, Inc. Point of presence management in request routing
US8702505B2 (en) 2007-03-30 2014-04-22 Uranus International Limited Method, apparatus, system, medium, and signals for supporting game piece movement in a multiple-party communication
US8713156B2 (en) 2008-03-31 2014-04-29 Amazon Technologies, Inc. Request routing based on class
US8732309B1 (en) 2008-11-17 2014-05-20 Amazon Technologies, Inc. Request routing utilizing cost information
US8756341B1 (en) 2009-03-27 2014-06-17 Amazon Technologies, Inc. Request routing utilizing popularity information
US8756513B1 (en) 2002-04-23 2014-06-17 Microsoft Corporation Document viewing mechanism for document sharing environment
US8788671B2 (en) 2008-11-17 2014-07-22 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US8819283B2 (en) 2010-09-28 2014-08-26 Amazon Technologies, Inc. Request routing in a networked environment
US8924528B1 (en) 2010-09-28 2014-12-30 Amazon Technologies, Inc. Latency measurement in resource requests
US8930513B1 (en) 2010-09-28 2015-01-06 Amazon Technologies, Inc. Latency measurement in resource requests
US8938526B1 (en) 2010-09-28 2015-01-20 Amazon Technologies, Inc. Request routing management based on network components
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US9003040B2 (en) 2010-11-22 2015-04-07 Amazon Technologies, Inc. Request routing processing
US9009286B2 (en) 2008-03-31 2015-04-14 Amazon Technologies, Inc. Locality based content distribution
US9021129B2 (en) 2007-06-29 2015-04-28 Amazon Technologies, Inc. Request routing utilizing client location information
US9021128B2 (en) 2008-06-30 2015-04-28 Amazon Technologies, Inc. Request routing using network computing components
US9021127B2 (en) 2007-06-29 2015-04-28 Amazon Technologies, Inc. Updating routing information based on client location
US9026616B2 (en) 2008-03-31 2015-05-05 Amazon Technologies, Inc. Content delivery reconciliation
US9083743B1 (en) 2012-03-21 2015-07-14 Amazon Technologies, Inc. Managing request routing information utilizing performance information
US9130756B2 (en) 2009-09-04 2015-09-08 Amazon Technologies, Inc. Managing secure content in a content delivery network
US20150256638A1 (en) * 2014-03-05 2015-09-10 Ricoh Co., Ltd. Fairly Adding Documents to a Collaborative Session
US9135048B2 (en) 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage
US9154551B1 (en) 2012-06-11 2015-10-06 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9237114B2 (en) 2009-03-27 2016-01-12 Amazon Technologies, Inc. Managing resources in resource cache components
US9246776B2 (en) 2009-10-02 2016-01-26 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9253211B2 (en) 2006-03-31 2016-02-02 Amazon Technologies, Inc. Managing communications between computing nodes
US9251235B1 (en) * 2013-09-11 2016-02-02 Amazon Technologies, Inc. Log-based synchronization
US9251112B2 (en) 2008-11-17 2016-02-02 Amazon Technologies, Inc. Managing content delivery network service providers
US9288153B2 (en) 2010-08-26 2016-03-15 Amazon Technologies, Inc. Processing encoded content
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US9391949B1 (en) 2010-12-03 2016-07-12 Amazon Technologies, Inc. Request routing processing
US9400593B2 (en) 2004-09-14 2016-07-26 Nicholas T. Hariton Distributed scripting for presentations with touch screen displays
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US9479476B2 (en) 2008-03-31 2016-10-25 Amazon Technologies, Inc. Processing of DNS queries
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US9628554B2 (en) 2012-02-10 2017-04-18 Amazon Technologies, Inc. Dynamic content delivery
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US9787775B1 (en) 2010-09-28 2017-10-10 Amazon Technologies, Inc. Point of presence management in request routing
US9792584B2 (en) 2000-06-16 2017-10-17 Nicholas T. Hariton Remote real time co-authoring of internet based multimedia collaborative presentations
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US9872087B2 (en) 2010-10-19 2018-01-16 Welch Allyn, Inc. Platform for patient monitoring
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
WO2020259268A1 (en) * 2019-06-28 2020-12-30 华为技术有限公司 Information sharing method, platform, and computing device
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US10956446B1 (en) 2013-09-11 2021-03-23 Amazon Technologies, Inc. Log-based synchronization with inferred context
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
CN113742328A (en) * 2021-09-07 2021-12-03 北京百度网讯科技有限公司 Application data cleaning method, device, equipment, storage medium and program product
US11290418B2 (en) 2017-09-25 2022-03-29 Amazon Technologies, Inc. Hybrid content request routing system
US11604667B2 (en) 2011-04-27 2023-03-14 Amazon Technologies, Inc. Optimized deployment based upon customer locality

Families Citing this family (132)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560656B1 (en) * 1998-02-26 2003-05-06 Sun Microsystems, Inc. Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system
US6832223B1 (en) 1996-04-23 2004-12-14 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6938263B2 (en) 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
US6185611B1 (en) * 1998-03-20 2001-02-06 Sun Microsystem, Inc. Dynamic lookup service in a distributed system
US6421704B1 (en) 1998-03-20 2002-07-16 Sun Microsystems, Inc. Method, apparatus, and product for leasing of group membership in a distributed system
US6182083B1 (en) 1997-11-17 2001-01-30 Sun Microsystems, Inc. Method and system for multi-entry and multi-template matching in a database
US6393497B1 (en) * 1998-03-20 2002-05-21 Sun Microsystems, Inc. Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system
US6446070B1 (en) * 1998-02-26 2002-09-03 Sun Microsystems, Inc. Method and apparatus for dynamic distributed computing over a network
US6728737B2 (en) 1996-10-11 2004-04-27 Sun Microsystems, Inc. Method and system for leasing storage
US5832529A (en) 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
US6237009B1 (en) 1996-10-11 2001-05-22 Sun Microsystems, Inc. Lease renewal service
US6704907B1 (en) 1997-03-24 2004-03-09 Nippon Telegraph And Telephone Corporation Digital contents editing method and apparatus thereof
US6917962B1 (en) 1997-10-22 2005-07-12 Brokercom Inc. Web-based groupware system
CN1298503A (en) * 1998-02-26 2001-06-06 太阳微系统公司 Dynamic lookup service in a distributed system
JP2002505473A (en) 1998-02-26 2002-02-19 サンマイクロシステムズ インコーポレーテッド Method and system for identifying remote methods with deterministic hash
US6604127B2 (en) 1998-03-20 2003-08-05 Brian T. Murphy Dynamic lookup service in distributed system
US7043529B1 (en) * 1999-04-23 2006-05-09 The United States Of America As Represented By The Secretary Of The Navy Collaborative development network for widely dispersed users and methods therefor
US6763371B1 (en) * 1999-05-10 2004-07-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for collaborative communication in a communication network
US6859821B1 (en) * 1999-07-19 2005-02-22 Groove Networks, Inc. Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
US7127674B1 (en) * 1999-11-30 2006-10-24 International Business Machines Corporation System and method for managing documents having formula based documents links
US7057635B1 (en) * 2000-01-27 2006-06-06 Atheros Communications, Inc. High-speed RF link for a multi-user meeting
US7249155B1 (en) * 2000-02-09 2007-07-24 International Business Machines Corporation Method for processing a request to multiple instances of a server program
US6877027B1 (en) * 2000-02-19 2005-04-05 Hewlett-Packard Development Company, L.P. System and method for providing synchronization verification of multiple applications across remote systems
US6850967B1 (en) * 2000-02-19 2005-02-01 Hewlett-Packard Development Company, L.P. System and method for ensuring transparent sychronization of multiple applications across remote systems
US6809749B1 (en) 2000-05-02 2004-10-26 Oridus, Inc. Method and apparatus for conducting an interactive design conference over the internet
US6920497B1 (en) 2000-07-31 2005-07-19 The Boeing Company Contacting a broadcast channel
US6732147B1 (en) * 2000-07-31 2004-05-04 The Boeing Company Leaving a broadcast channel
US6829634B1 (en) 2000-07-31 2004-12-07 The Boeing Company Broadcasting network
US6701344B1 (en) 2000-07-31 2004-03-02 The Boeing Company Distributed game environment
US6714966B1 (en) 2000-07-31 2004-03-30 The Boeing Company Information delivery service
US6910069B1 (en) 2000-07-31 2005-06-21 The Boeing Company Joining a broadcast channel
AU2001287421A1 (en) * 2000-08-21 2002-03-04 Thoughtslinger Corporation Simultaneous multi-user document editing system
US7200869B1 (en) * 2000-09-15 2007-04-03 Microsoft Corporation System and method for protecting domain data against unauthorized modification
US7069334B2 (en) 2000-12-27 2006-06-27 Intel Corporation Image restoration and reconfiguration support for crashed devices
US7069298B2 (en) * 2000-12-29 2006-06-27 Webex Communications, Inc. Fault-tolerant distributed system for collaborative computing
US20030167418A1 (en) * 2000-12-29 2003-09-04 Min Zhu Fault-tolerant server for collaborative computing
US7130883B2 (en) * 2000-12-29 2006-10-31 Webex Communications, Inc. Distributed network system architecture for collaborative computing
US7203755B2 (en) * 2000-12-29 2007-04-10 Webex—Communications, Inc. System and method for application sharing in collaborative setting
US20030167302A1 (en) * 2000-12-29 2003-09-04 Min Zhu Scalable distributed network system for collaborative computing
US6901448B2 (en) * 2000-12-29 2005-05-31 Webex Communications, Inc. Secure communications system for collaborative computing
US20030164853A1 (en) * 2000-12-29 2003-09-04 Min Zhu Distributed document sharing
US6925645B2 (en) * 2000-12-29 2005-08-02 Webex Communications, Inc. Fault tolerant server architecture for collaborative computing
US7296275B2 (en) * 2001-01-04 2007-11-13 Sun Microsystems, Inc. Method and system for passing objects in a distributed system using serialization contexts
US6950820B2 (en) * 2001-02-23 2005-09-27 International Business Machines Corporation Maintaining consistency of a global resource in a distributed peer process environment
US7353252B1 (en) * 2001-05-16 2008-04-01 Sigma Design System for electronic file collaboration among multiple users using peer-to-peer network topology
US7716086B2 (en) * 2001-08-31 2010-05-11 Gateway, Inc. Electronic retail order communication
US8239271B2 (en) * 2001-09-04 2012-08-07 Ncr Corporation Methods and apparatus for managing sequencing of data received from devices in a retail point of sale system
US7756969B1 (en) 2001-09-07 2010-07-13 Oracle America, Inc. Dynamic provisioning of identification services in a distributed system
US20030051029A1 (en) * 2001-09-07 2003-03-13 Reedy Dennis G. Dynamic provisioning of sevice components in a distributed system
US7660887B2 (en) 2001-09-07 2010-02-09 Sun Microsystems, Inc. Systems and methods for providing dynamic quality of service for a distributed system
GB0123321D0 (en) * 2001-09-27 2001-11-21 Hewlett Packard Co Computer apparatus for causing display and manipulation of pictorial image synchronously with remote computer apparatus
WO2003071420A2 (en) * 2002-02-22 2003-08-28 Koninklijke Philips Electronics N.V. A method, a computer system and a computer program product for of sharing an activity between a first user and a second user
US8392502B2 (en) * 2002-04-12 2013-03-05 Alcatel Lucent System and method for effecting conference calling
US7454760B2 (en) 2002-04-22 2008-11-18 Rosebud Lms, Inc. Method and software for enabling n-way collaborative work over a network of computers
US7010576B2 (en) * 2002-05-30 2006-03-07 International Business Machines Corporation Efficient method of globalization and synchronization of distributed resources in distributed peer data processing environments
US7546372B2 (en) * 2002-07-11 2009-06-09 Ibeam Systems, Inc. System and method for providing to multiple user computers concurrent telephonic access to multiple remote devices
US20040064458A1 (en) * 2002-10-01 2004-04-01 Richard Hagarty Deletion objector for determining whether or not to delete an object from an application
US7328243B2 (en) * 2002-10-31 2008-02-05 Sun Microsystems, Inc. Collaborative content coherence using mobile agents in peer-to-peer networks
US7668763B1 (en) 2002-11-25 2010-02-23 Xcm Development, Llc Tax return outsourcing and systems for protecting data
US7616208B2 (en) * 2002-12-18 2009-11-10 Genesys Conferencing Ltd. Method and system for application broadcast
US20040158814A1 (en) * 2003-02-06 2004-08-12 Tracey David Christopher Structured objects
US8239233B1 (en) 2003-07-17 2012-08-07 Xcm Development, Llc Work flow systems and processes for outsourced financial services
US7792874B1 (en) 2004-01-30 2010-09-07 Oracle America, Inc. Dynamic provisioning for filtering and consolidating events
US7849452B2 (en) * 2004-04-23 2010-12-07 Waratek Pty Ltd. Modification of computer applications at load time for distributed execution
US7844665B2 (en) * 2004-04-23 2010-11-30 Waratek Pty Ltd. Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers
US20050257219A1 (en) * 2004-04-23 2005-11-17 Holt John M Multiple computer architecture with replicated memory fields
US20050262513A1 (en) * 2004-04-23 2005-11-24 Waratek Pty Limited Modified computer architecture with initialization of objects
US20060095483A1 (en) * 2004-04-23 2006-05-04 Waratek Pty Limited Modified computer architecture with finalization of objects
US7707179B2 (en) * 2004-04-23 2010-04-27 Waratek Pty Limited Multiple computer architecture with synchronization
US20070011234A1 (en) * 2004-07-29 2007-01-11 Xcm Development, Llc Computer conferencing system and features
US7702730B2 (en) 2004-09-03 2010-04-20 Open Text Corporation Systems and methods for collaboration
US7711681B2 (en) * 2004-11-05 2010-05-04 Accenture Global Services Gmbh System for distributed information presentation and interaction
US20120287226A1 (en) 2004-12-06 2012-11-15 Baloga Mark A Multi-Use Conferencing Space, Table Arrangement and Display Configuration
US8407944B2 (en) * 2004-12-06 2013-04-02 Steelcase Inc. Multi-use conferencing space, table arrangement and display configuration
US7506334B2 (en) * 2005-02-25 2009-03-17 Microsoft Corporation Common, multi-version interface that allows a distributed sybsystem to communicate with multiple versions of the distributed subsystem
US8028299B2 (en) * 2005-04-21 2011-09-27 Waratek Pty, Ltd. Computer architecture and method of operation for multi-computer distributed processing with finalization of objects
JP4042759B2 (en) * 2005-05-17 2008-02-06 コニカミノルタビジネステクノロジーズ株式会社 DATA FILE MANAGEMENT DEVICE, DATA FILE MANAGEMENT PROGRAM, AND RECORDING MEDIUM CONTAINING THE PROGRAM
US8010894B2 (en) * 2005-05-18 2011-08-30 Microsoft Corporation Memory optimizing for re-ordering user edits
US7908325B1 (en) 2005-06-20 2011-03-15 Oracle America, Inc. System and method for event-based collaboration
US7761670B2 (en) * 2005-10-25 2010-07-20 Waratek Pty Limited Modified machine architecture with advanced synchronization
US7581069B2 (en) * 2005-10-25 2009-08-25 Waratek Pty Ltd. Multiple computer system with enhanced memory clean up
US7958322B2 (en) * 2005-10-25 2011-06-07 Waratek Pty Ltd Multiple machine architecture with overhead reduction
US7849369B2 (en) * 2005-10-25 2010-12-07 Waratek Pty Ltd. Failure resistant multiple computer system and method
US7660960B2 (en) * 2005-10-25 2010-02-09 Waratek Pty, Ltd. Modified machine architecture with partial memory updating
US8015236B2 (en) * 2005-10-25 2011-09-06 Waratek Pty. Ltd. Replication of objects having non-primitive fields, especially addresses
US20070100828A1 (en) * 2005-10-25 2007-05-03 Holt John M Modified machine architecture with machine redundancy
US8209620B2 (en) 2006-01-31 2012-06-26 Accenture Global Services Limited System for storage and navigation of application states and interactions
US20070288850A1 (en) * 2006-06-09 2007-12-13 Microsoft Corporation Application sharing
US7676582B2 (en) * 2006-06-30 2010-03-09 Microsoft Corporation Optimized desktop sharing viewer join
US20080126572A1 (en) * 2006-10-05 2008-05-29 Holt John M Multi-path switching networks
US20100054254A1 (en) * 2006-10-05 2010-03-04 Holt John M Asynchronous data transmission
WO2008040076A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Contention resolution with echo cancellation
WO2008040080A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Silent memory reclamation
WO2008040078A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Synchronization with partial memory replication
US20080140973A1 (en) * 2006-10-05 2008-06-12 Holt John M Contention detection with data consolidation
US20080126506A1 (en) * 2006-10-05 2008-05-29 Holt John M Multiple computer system with redundancy architecture
US20080140762A1 (en) * 2006-10-05 2008-06-12 Holt John M Job scheduling amongst multiple computers
US20080120478A1 (en) * 2006-10-05 2008-05-22 Holt John M Advanced synchronization and contention resolution
US20080133869A1 (en) * 2006-10-05 2008-06-05 Holt John M Redundant multiple computer architecture
US20080114853A1 (en) * 2006-10-05 2008-05-15 Holt John M Network protocol for network communications
WO2008040064A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Switch protocol for network communications
WO2008040084A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Cyclic redundant multiple computer architecture
US20100121935A1 (en) * 2006-10-05 2010-05-13 Holt John M Hybrid replicated shared memory
US20080120477A1 (en) * 2006-10-05 2008-05-22 Holt John M Contention detection with modified message format
US7958329B2 (en) * 2006-10-05 2011-06-07 Waratek Pty Ltd Hybrid replicated shared memory
US20080140856A1 (en) * 2006-10-05 2008-06-12 Holt John M Multiple communication networks for multiple computers
US8473564B2 (en) * 2006-10-05 2013-06-25 Waratek Pty Ltd. Contention detection and resolution
US20080151902A1 (en) * 2006-10-05 2008-06-26 Holt John M Multiple network connections for multiple computers
US20080120475A1 (en) * 2006-10-05 2008-05-22 Holt John M Adding one or more computers to a multiple computer system
US20080140970A1 (en) * 2006-10-05 2008-06-12 Holt John M Advanced synchronization and contention resolution
US20080133688A1 (en) * 2006-10-05 2008-06-05 Holt John M Multiple computer system with dual mode redundancy architecture
CN101548268B (en) * 2006-10-05 2014-05-21 瓦拉泰克有限公司 Advanced contention detection
US8095616B2 (en) * 2006-10-05 2012-01-10 Waratek Pty Ltd. Contention detection
US8316190B2 (en) * 2007-04-06 2012-11-20 Waratek Pty. Ltd. Computer architecture and method of operation for multi-computer distributed processing having redundant array of independent systems with replicated memory and code striping
US8539480B2 (en) * 2007-04-09 2013-09-17 Sugarcrm Inc. Multi-instance “shadow” system and method for automated resource redundancy reduction across dynamic language applications utilizing application of dynamically generated templates
US8054382B2 (en) * 2007-05-21 2011-11-08 International Business Machines Corporation Apparatus, method and system for synchronizing a common broadcast signal among multiple television units
US9374379B1 (en) 2007-06-26 2016-06-21 Aol Inc. Application unlock
US7937663B2 (en) * 2007-06-29 2011-05-03 Microsoft Corporation Integrated collaborative user interface for a document editor program
US8156146B2 (en) 2007-09-28 2012-04-10 Xcerion Aktiebolag Network file system
US8074581B2 (en) 2007-10-12 2011-12-13 Steelcase Inc. Conference table assembly
US7917584B2 (en) * 2007-10-22 2011-03-29 Xcerion Aktiebolag Gesture-based collaboration
CN101952815A (en) * 2007-10-22 2011-01-19 埃克斯里昂股份公司 Cooperation based on attitude
US8230349B2 (en) 2007-12-31 2012-07-24 Honeywell International Inc. Intra operator forensic meta data messaging
US10631632B2 (en) 2008-10-13 2020-04-28 Steelcase Inc. Egalitarian control apparatus and method for sharing information in a collaborative workspace
US20140361954A1 (en) 2013-06-07 2014-12-11 Lewis Epstein Personal control apparatus and method for sharing information in a collaboration workspace
US10884607B1 (en) 2009-05-29 2021-01-05 Steelcase Inc. Personal control apparatus and method for sharing information in a collaborative workspace
US20110029988A1 (en) * 2009-08-03 2011-02-03 Qualcomm Incorporated Methods and apparatus for facilitating application inter-communications
TWI474186B (en) * 2011-11-18 2015-02-21 Inst Information Industry Electronic device and method for collaborating editing by a plurality of mobile devices
US10244080B2 (en) * 2013-03-15 2019-03-26 VCE IP Holding Company LLC Accessing multiple converged IT infrastructures
EP3411807A1 (en) 2016-02-02 2018-12-12 Activewrite, Inc. Document collaboration and consolidation tools and methods of use
CN107979748A (en) * 2016-10-21 2018-05-01 中强光电股份有限公司 Projector, optical projection system and image projecting method
US10264213B1 (en) 2016-12-15 2019-04-16 Steelcase Inc. Content amplification system and method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649102A (en) * 1993-11-26 1997-07-15 Hitachi, Ltd. Distributed shared data management system for controlling structured shared data and for serializing access to shared data

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6224763A (en) * 1985-07-25 1987-02-02 Fujitsu Ltd Schedule display system for recording screen
US4882687A (en) 1986-03-31 1989-11-21 Schlumberger Technology Corporation Pixel processor
US4975690A (en) * 1988-11-07 1990-12-04 Ibm Corporation Method for concurrent data entry and manipulation in multiple applications
US5255361A (en) 1988-12-19 1993-10-19 International Business Machines Corporation Method of and system for updating a display unit
US4953159A (en) * 1989-01-03 1990-08-28 American Telephone And Telegraph Company Audiographics conferencing arrangement
US5206934A (en) 1989-08-15 1993-04-27 Group Technologies, Inc. Method and apparatus for interactive computer conferencing
US5210825A (en) 1990-04-26 1993-05-11 Teknekron Communications Systems, Inc. Method and an apparatus for displaying graphical data received from a remote computer by a local computer
KR100220042B1 (en) * 1990-06-07 1999-09-01 가부시키가이샤 히타치 세이사쿠쇼 Presentation supporting method and apparatus therefor
EP0475581A3 (en) 1990-08-30 1993-06-23 Hewlett-Packard Company Method and apparatus for window sharing between computer displays
US5673394A (en) * 1990-10-31 1997-09-30 Microsoft Corporation Method of sharing memory between an operating system and an application program
US5745711A (en) * 1991-10-23 1998-04-28 Hitachi, Ltd. Display control method and apparatus for an electronic conference
US5565911A (en) * 1991-11-13 1996-10-15 Sony Corporation Teleconference system with improved resolution of transmitted picture
CA2077061C (en) * 1991-11-22 1998-04-21 Mark J. Baugher Scheduling system for distributed multimedia resources
JP3200932B2 (en) * 1992-03-24 2001-08-20 株式会社日立製作所 Electronic dialogue system
US5392400A (en) * 1992-07-02 1995-02-21 International Business Machines Corporation Collaborative computing system using pseudo server process to allow input from different server processes individually and sequence number map for maintaining received data sequence
US5515491A (en) * 1992-12-31 1996-05-07 International Business Machines Corporation Method and system for managing communications within a collaborative data processing system
US5649104A (en) * 1993-03-19 1997-07-15 Ncr Corporation System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers
JP3386182B2 (en) * 1993-05-31 2003-03-17 富士通株式会社 Display system, its server device, and its terminal device
US5689641A (en) * 1993-10-01 1997-11-18 Vicor, Inc. Multimedia collaboration system arrangement for routing compressed AV signal through a participant site without decompressing the AV signal
US5452299A (en) * 1993-10-14 1995-09-19 Intel Corporation Optimized transfer of large object data blocks in a teleconferencing system
US5408470A (en) * 1993-10-14 1995-04-18 Intel Corporation Deferred synchronization of distributed objects
US5565886A (en) 1993-11-01 1996-10-15 Microsoft Corporation Method and system for rapidly transmitting multicolor or gray scale display data having multiple bits per pixel to a display device
CA2134620A1 (en) * 1993-11-05 1995-05-06 Arul Menezes System and method for exchanging computer data processing capabilities
US5583993A (en) * 1994-01-31 1996-12-10 Apple Computer, Inc. Method and apparatus for synchronously sharing data among computer
US5973724A (en) * 1995-02-24 1999-10-26 Apple Computer, Inc. Merging multiple teleconferences
US5724508A (en) * 1995-03-09 1998-03-03 Insoft, Inc. Apparatus for collaborative computing
JP2859559B2 (en) * 1995-05-26 1999-02-17 インターナショナル・ビジネス・マシーンズ・コーポレイション Computer network system, computer system, and clipboard control method
US5874960A (en) * 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
US5784568A (en) * 1995-08-31 1998-07-21 Intel Corporation Multi-party audio chat system which allows individual user utterances to be staged separately to render received utterances in order
US5717863A (en) * 1995-09-27 1998-02-10 Intel Corporation Method and apparatus for managing pc conference connection addresses
US5717879A (en) * 1995-11-03 1998-02-10 Xerox Corporation System for the capture and replay of temporal data representing collaborative activities
US5740161A (en) * 1995-11-08 1998-04-14 Intel Corporation Method and apparatus for synchronizing viewed information in a conferencing environment
US5867156A (en) * 1995-11-08 1999-02-02 Intel Corporation Automatic viewport display synchronization during application sharing
JP3821170B2 (en) * 1996-07-26 2006-09-13 富士ゼロックス株式会社 Method for managing collaborative work information and collaborative work support system
US6091408A (en) * 1997-08-13 2000-07-18 Z-Axis Corporation Method for presenting information units on multiple presentation units
GB2324175B (en) * 1997-04-10 2002-07-31 Ibm Personal conferencing system
US6115027A (en) * 1998-02-23 2000-09-05 Hewlett-Packard Company Synchronized cursor shared among a number of networked computer systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649102A (en) * 1993-11-26 1997-07-15 Hitachi, Ltd. Distributed shared data management system for controlling structured shared data and for serializing access to shared data

Cited By (272)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7404014B2 (en) 1995-07-05 2008-07-22 Microsoft Corporation Method and system for transmitting and determining the effects of display orders from shared application between a host and shadow computer
US20050024389A1 (en) * 1995-07-05 2005-02-03 Microsoft Corporation Method and system for transmitting data for a shared application
US20060168356A1 (en) * 1995-07-05 2006-07-27 Microsoft Corporation Method and system for transmitting data for a shared application
US9792584B2 (en) 2000-06-16 2017-10-17 Nicholas T. Hariton Remote real time co-authoring of internet based multimedia collaborative presentations
US10592863B2 (en) 2000-06-16 2020-03-17 Nicholas T. Hariton Method and apparatus for remote real time co-authoring of internet based multimedia collaborative presentations
US20060184550A1 (en) * 2000-11-02 2006-08-17 Canon Kabushiki Kaisha Information processing apparatus and method, and computer readable memory
US20030189601A1 (en) * 2002-04-03 2003-10-09 Microsoft Corporation Application sharing single document sharing
US7530022B2 (en) 2002-04-03 2009-05-05 Microsoft Corporation Application sharing single document sharing
US7487457B2 (en) 2002-04-03 2009-02-03 Microsoft Corporation Application sharing single document sharing
US7418664B2 (en) * 2002-04-03 2008-08-26 Microsoft Corporation Application sharing single document sharing
US20060136837A1 (en) * 2002-04-03 2006-06-22 Microsoft Corporation Application sharing single document sharing
US7595798B2 (en) 2002-04-05 2009-09-29 Microsoft Corporation Application sharing user interface improvements
US20050257165A1 (en) * 2002-04-05 2005-11-17 Microsoft Corporation Application sharing user interface improvements
US7721223B2 (en) 2002-04-05 2010-05-18 Microsoft Corporation Application sharing user interface improvements
US20050257153A1 (en) * 2002-04-05 2005-11-17 Microsoft Corporation Application sharing user interface improvements
US20060190839A1 (en) * 2002-04-05 2006-08-24 Microsoft Corporation Application sharing user interface improvements
US7414638B2 (en) 2002-04-05 2008-08-19 Microsoft Corporation Application sharing user interface improvements
US8756513B1 (en) 2002-04-23 2014-06-17 Microsoft Corporation Document viewing mechanism for document sharing environment
US8082517B2 (en) * 2002-05-22 2011-12-20 Microsoft Corporation Application sharing viewer presentation
US7293243B1 (en) 2002-05-22 2007-11-06 Microsoft Corporation Application sharing viewer presentation
US20080034320A1 (en) * 2002-05-22 2008-02-07 Microsoft Corporation Application sharing viewer presentation
US7356563B1 (en) 2002-06-06 2008-04-08 Microsoft Corporation Methods of annotating a collaborative application display
US7954043B2 (en) 2002-12-02 2011-05-31 International Business Machines Corporation Concurrent editing of a file by multiple authors
US20060017994A1 (en) * 2003-06-10 2006-01-26 Fujitsu Limited Image registration apparatus, display control apparatus, and image server
US20080263155A1 (en) * 2003-08-07 2008-10-23 International Business Machines Corporation Collaborative Email With Delegable Authorities
US20050033811A1 (en) * 2003-08-07 2005-02-10 International Business Machines Corporation Collaborative email
US20090083384A1 (en) * 2003-08-07 2009-03-26 International Business Machines Corporation Collaborative Email With Hierachical Signature Authority
US10860784B2 (en) 2003-08-07 2020-12-08 Paypal, Inc. Collaborative email with hierarchical signature authority
US8606855B2 (en) 2003-08-07 2013-12-10 Ebay Inc. Collaborative email with hierachical signature authority
US9886428B2 (en) 2003-08-07 2018-02-06 Paypal, Inc. Collaborative email with hierarchical signature authority
US20050234943A1 (en) * 2004-04-20 2005-10-20 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
US7818679B2 (en) * 2004-04-20 2010-10-19 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document through a plurality of computer systems
EP1589722A1 (en) * 2004-04-20 2005-10-26 Microsoft Corporation Method, system, and apparatus for enabling near real time collaboration on an electronic document
US9400593B2 (en) 2004-09-14 2016-07-26 Nicholas T. Hariton Distributed scripting for presentations with touch screen displays
US10133455B2 (en) 2004-09-14 2018-11-20 Nicholas T. Hariton Distributed scripting for presentations with touch screen displays
US8019817B2 (en) * 2005-05-30 2011-09-13 Canon Kabushiki Kaisha Collaboration support system and control method thereof
US20060282548A1 (en) * 2005-05-30 2006-12-14 Canon Kabushiki Kaisha Collaboration support system and control method thereof
US20070156689A1 (en) * 2005-09-01 2007-07-05 Microsoft Corporation Per-user application rendering in the presence of application sharing
US7991916B2 (en) 2005-09-01 2011-08-02 Microsoft Corporation Per-user application rendering in the presence of application sharing
US7792944B2 (en) 2006-03-31 2010-09-07 Amazon Technologies, Inc. Executing programs based on user-specified constraints
US10348770B2 (en) 2006-03-31 2019-07-09 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US20070240160A1 (en) * 2006-03-31 2007-10-11 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US10791149B2 (en) 2006-03-31 2020-09-29 Amazon Technologies, Inc. Network-accessible service for executing virtual machines using client-provided virtual machine images
US20080059557A1 (en) * 2006-03-31 2008-03-06 Desantis Peter N Executing programs based on user-specified constraints
US11539753B2 (en) 2006-03-31 2022-12-27 Amazon Technologies, Inc. Network-accessible service for executing virtual machines using client-provided virtual machine images
WO2007126837A3 (en) * 2006-03-31 2008-10-02 Amazon Tech Inc Managing execution of programs by multiple computing systems
US8190682B2 (en) 2006-03-31 2012-05-29 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US20100312871A1 (en) * 2006-03-31 2010-12-09 Amazon Technologies, Inc. Executing Programs Based on User-Specified Constraints
US9621593B2 (en) 2006-03-31 2017-04-11 Amazon Technologies, Inc. Managing execution of programs by multiple computing systems
US9253211B2 (en) 2006-03-31 2016-02-02 Amazon Technologies, Inc. Managing communications between computing nodes
US8010651B2 (en) * 2006-03-31 2011-08-30 Amazon Technologies, Inc. Executing programs based on user-specified constraints
US8060887B2 (en) 2007-03-30 2011-11-15 Uranus International Limited Method, apparatus, system, and medium for supporting multiple-party communications
US10180765B2 (en) 2007-03-30 2019-01-15 Uranus International Limited Multi-party collaboration over a computer network
US9579572B2 (en) 2007-03-30 2017-02-28 Uranus International Limited Method, apparatus, and system for supporting multi-party collaboration between a plurality of client computers in communication with a server
US7765261B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium and signals for supporting a multiple-party communication on a plurality of computer servers
US8702505B2 (en) 2007-03-30 2014-04-22 Uranus International Limited Method, apparatus, system, medium, and signals for supporting game piece movement in a multiple-party communication
US7950046B2 (en) 2007-03-30 2011-05-24 Uranus International Limited Method, apparatus, system, medium, and signals for intercepting a multiple-party communication
US7765266B2 (en) 2007-03-30 2010-07-27 Uranus International Limited Method, apparatus, system, medium, and signals for publishing content created during a communication
US8627211B2 (en) 2007-03-30 2014-01-07 Uranus International Limited Method, apparatus, system, medium, and signals for supporting pointer display in a multiple-party communication
US10963124B2 (en) 2007-03-30 2021-03-30 Alexander Kropivny Sharing content produced by a plurality of client computers in communication with a server
US9021127B2 (en) 2007-06-29 2015-04-28 Amazon Technologies, Inc. Updating routing information based on client location
US9992303B2 (en) 2007-06-29 2018-06-05 Amazon Technologies, Inc. Request routing utilizing client location information
US9021129B2 (en) 2007-06-29 2015-04-28 Amazon Technologies, Inc. Request routing utilizing client location information
US10027582B2 (en) 2007-06-29 2018-07-17 Amazon Technologies, Inc. Updating routing information based on client location
US10797995B2 (en) 2008-03-31 2020-10-06 Amazon Technologies, Inc. Request routing based on class
US9571389B2 (en) 2008-03-31 2017-02-14 Amazon Technologies, Inc. Request routing based on class
US9887915B2 (en) 2008-03-31 2018-02-06 Amazon Technologies, Inc. Request routing based on class
US8756325B2 (en) 2008-03-31 2014-06-17 Amazon Technologies, Inc. Content management
US8713156B2 (en) 2008-03-31 2014-04-29 Amazon Technologies, Inc. Request routing based on class
US9894168B2 (en) 2008-03-31 2018-02-13 Amazon Technologies, Inc. Locality based content distribution
US9954934B2 (en) 2008-03-31 2018-04-24 Amazon Technologies, Inc. Content delivery reconciliation
US11909639B2 (en) 2008-03-31 2024-02-20 Amazon Technologies, Inc. Request routing based on class
US11451472B2 (en) 2008-03-31 2022-09-20 Amazon Technologies, Inc. Request routing based on class
US11194719B2 (en) 2008-03-31 2021-12-07 Amazon Technologies, Inc. Cache optimization
US9888089B2 (en) 2008-03-31 2018-02-06 Amazon Technologies, Inc. Client side cache management
US8930544B2 (en) 2008-03-31 2015-01-06 Amazon Technologies, Inc. Network resource identification
US8639817B2 (en) 2008-03-31 2014-01-28 Amazon Technologies, Inc. Content management
US10157135B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Cache optimization
US9621660B2 (en) 2008-03-31 2017-04-11 Amazon Technologies, Inc. Locality based content distribution
US9544394B2 (en) 2008-03-31 2017-01-10 Amazon Technologies, Inc. Network resource identification
US10771552B2 (en) 2008-03-31 2020-09-08 Amazon Technologies, Inc. Content management
US9009286B2 (en) 2008-03-31 2015-04-14 Amazon Technologies, Inc. Locality based content distribution
US11245770B2 (en) 2008-03-31 2022-02-08 Amazon Technologies, Inc. Locality based content distribution
US10158729B2 (en) 2008-03-31 2018-12-18 Amazon Technologies, Inc. Locality based content distribution
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US9026616B2 (en) 2008-03-31 2015-05-05 Amazon Technologies, Inc. Content delivery reconciliation
US9479476B2 (en) 2008-03-31 2016-10-25 Amazon Technologies, Inc. Processing of DNS queries
US9407699B2 (en) 2008-03-31 2016-08-02 Amazon Technologies, Inc. Content management
US8533293B1 (en) 2008-03-31 2013-09-10 Amazon Technologies, Inc. Client side cache management
US10645149B2 (en) 2008-03-31 2020-05-05 Amazon Technologies, Inc. Content delivery reconciliation
US9332078B2 (en) 2008-03-31 2016-05-03 Amazon Technologies, Inc. Locality based content distribution
US10305797B2 (en) 2008-03-31 2019-05-28 Amazon Technologies, Inc. Request routing based on class
US8601090B1 (en) 2008-03-31 2013-12-03 Amazon Technologies, Inc. Network resource identification
US9208097B2 (en) 2008-03-31 2015-12-08 Amazon Technologies, Inc. Cache optimization
US10554748B2 (en) 2008-03-31 2020-02-04 Amazon Technologies, Inc. Content management
US10530874B2 (en) 2008-03-31 2020-01-07 Amazon Technologies, Inc. Locality based content distribution
US9210235B2 (en) 2008-03-31 2015-12-08 Amazon Technologies, Inc. Client side cache management
US10511567B2 (en) 2008-03-31 2019-12-17 Amazon Technologies, Inc. Network resource identification
US9912740B2 (en) 2008-06-30 2018-03-06 Amazon Technologies, Inc. Latency measurement in resource requests
US9608957B2 (en) 2008-06-30 2017-03-28 Amazon Technologies, Inc. Request routing using network computing components
US9021128B2 (en) 2008-06-30 2015-04-28 Amazon Technologies, Inc. Request routing using network computing components
US8732309B1 (en) 2008-11-17 2014-05-20 Amazon Technologies, Inc. Request routing utilizing cost information
US9251112B2 (en) 2008-11-17 2016-02-02 Amazon Technologies, Inc. Managing content delivery network service providers
US9734472B2 (en) 2008-11-17 2017-08-15 Amazon Technologies, Inc. Request routing utilizing cost information
US11115500B2 (en) 2008-11-17 2021-09-07 Amazon Technologies, Inc. Request routing utilizing client location information
US9444759B2 (en) 2008-11-17 2016-09-13 Amazon Technologies, Inc. Service provider registration by a content broker
US11283715B2 (en) 2008-11-17 2022-03-22 Amazon Technologies, Inc. Updating routing information based on client location
US8495220B2 (en) 2008-11-17 2013-07-23 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US9451046B2 (en) 2008-11-17 2016-09-20 Amazon Technologies, Inc. Managing CDN registration by a storage provider
US10523783B2 (en) 2008-11-17 2019-12-31 Amazon Technologies, Inc. Request routing utilizing client location information
US9026556B2 (en) * 2008-11-17 2015-05-05 Fujitsu Limited Computer-readable medium storing data sharing program, data sharing method, and data sharing processor
US11811657B2 (en) 2008-11-17 2023-11-07 Amazon Technologies, Inc. Updating routing information based on client location
US8510448B2 (en) 2008-11-17 2013-08-13 Amazon Technologies, Inc. Service provider registration by a content broker
US9590946B2 (en) 2008-11-17 2017-03-07 Amazon Technologies, Inc. Managing content delivery network service providers
US10742550B2 (en) 2008-11-17 2020-08-11 Amazon Technologies, Inc. Updating routing information based on client location
US10116584B2 (en) 2008-11-17 2018-10-30 Amazon Technologies, Inc. Managing content delivery network service providers
US8788671B2 (en) 2008-11-17 2014-07-22 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US8583776B2 (en) 2008-11-17 2013-11-12 Amazon Technologies, Inc. Managing content delivery network service providers
US9787599B2 (en) 2008-11-17 2017-10-10 Amazon Technologies, Inc. Managing content delivery network service providers
US20100125550A1 (en) * 2008-11-17 2010-05-20 Fujitsu Limited Computer-readable medium storing data sharing program, data sharing method, and data sharing processor
US9515949B2 (en) 2008-11-17 2016-12-06 Amazon Technologies, Inc. Managing content delivery network service providers
US9985927B2 (en) 2008-11-17 2018-05-29 Amazon Technologies, Inc. Managing content delivery network service providers by a content broker
US10230819B2 (en) 2009-03-27 2019-03-12 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US8756341B1 (en) 2009-03-27 2014-06-17 Amazon Technologies, Inc. Request routing utilizing popularity information
US10574787B2 (en) 2009-03-27 2020-02-25 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US9083675B2 (en) 2009-03-27 2015-07-14 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US8521885B1 (en) 2009-03-27 2013-08-27 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US8521851B1 (en) 2009-03-27 2013-08-27 Amazon Technologies, Inc. DNS query processing using resource identifiers specifying an application broker
US9191458B2 (en) 2009-03-27 2015-11-17 Amazon Technologies, Inc. Request routing using a popularity identifier at a DNS nameserver
US10264062B2 (en) 2009-03-27 2019-04-16 Amazon Technologies, Inc. Request routing using a popularity identifier to identify a cache component
US10601767B2 (en) 2009-03-27 2020-03-24 Amazon Technologies, Inc. DNS query processing based on application information
US8996664B2 (en) 2009-03-27 2015-03-31 Amazon Technologies, Inc. Translation of resource identifiers using popularity information upon client request
US10491534B2 (en) 2009-03-27 2019-11-26 Amazon Technologies, Inc. Managing resources and entries in tracking information in resource cache components
US8688837B1 (en) 2009-03-27 2014-04-01 Amazon Technologies, Inc. Dynamically translating resource identifiers for request routing using popularity information
US9237114B2 (en) 2009-03-27 2016-01-12 Amazon Technologies, Inc. Managing resources in resource cache components
US8543702B1 (en) 2009-06-16 2013-09-24 Amazon Technologies, Inc. Managing resources using resource expiration data
US10783077B2 (en) 2009-06-16 2020-09-22 Amazon Technologies, Inc. Managing resources using resource expiration data
US10162753B2 (en) 2009-06-16 2018-12-25 Amazon Technologies, Inc. Managing resources using resource expiration data
US8782236B1 (en) 2009-06-16 2014-07-15 Amazon Technologies, Inc. Managing resources using resource expiration data
US10521348B2 (en) 2009-06-16 2019-12-31 Amazon Technologies, Inc. Managing resources using resource expiration data
US9176894B2 (en) 2009-06-16 2015-11-03 Amazon Technologies, Inc. Managing resources using resource expiration data
US10135620B2 (en) 2009-09-04 2018-11-20 Amazon Technologis, Inc. Managing secure content in a content delivery network
US9712325B2 (en) 2009-09-04 2017-07-18 Amazon Technologies, Inc. Managing secure content in a content delivery network
US10785037B2 (en) 2009-09-04 2020-09-22 Amazon Technologies, Inc. Managing secure content in a content delivery network
US9130756B2 (en) 2009-09-04 2015-09-08 Amazon Technologies, Inc. Managing secure content in a content delivery network
US10218584B2 (en) 2009-10-02 2019-02-26 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9893957B2 (en) 2009-10-02 2018-02-13 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US9246776B2 (en) 2009-10-02 2016-01-26 Amazon Technologies, Inc. Forward-based resource delivery network management techniques
US10506029B2 (en) 2010-01-28 2019-12-10 Amazon Technologies, Inc. Content distribution network
US11205037B2 (en) 2010-01-28 2021-12-21 Amazon Technologies, Inc. Content distribution network
US9495338B1 (en) 2010-01-28 2016-11-15 Amazon Technologies, Inc. Content distribution network
US20110258566A1 (en) * 2010-04-14 2011-10-20 Microsoft Corporation Assigning z-order to user interface elements
US8775958B2 (en) * 2010-04-14 2014-07-08 Microsoft Corporation Assigning Z-order to user interface elements
US20110296432A1 (en) * 2010-05-25 2011-12-01 Microsoft Corporation Programming model for collaborative distributed systems
US8799922B2 (en) * 2010-05-25 2014-08-05 Microsoft Corporation Programming model for collaborative distributed systems
US9104715B2 (en) * 2010-06-23 2015-08-11 Microsoft Technology Licensing, Llc Shared data collections
EP2585955A4 (en) * 2010-06-23 2017-08-30 Microsoft Technology Licensing, LLC Shared data collections
US20110320407A1 (en) * 2010-06-23 2011-12-29 Microsoft Corporation Shared data collections
WO2011163001A2 (en) 2010-06-23 2011-12-29 Microsoft Corporation Shared data collections
US9288153B2 (en) 2010-08-26 2016-03-15 Amazon Technologies, Inc. Processing encoded content
US10958501B1 (en) 2010-09-28 2021-03-23 Amazon Technologies, Inc. Request routing information based on client IP groupings
US8819283B2 (en) 2010-09-28 2014-08-26 Amazon Technologies, Inc. Request routing in a networked environment
US8577992B1 (en) 2010-09-28 2013-11-05 Amazon Technologies, Inc. Request routing management based on network components
US10015237B2 (en) 2010-09-28 2018-07-03 Amazon Technologies, Inc. Point of presence management in request routing
US9253065B2 (en) 2010-09-28 2016-02-02 Amazon Technologies, Inc. Latency measurement in resource requests
US9787775B1 (en) 2010-09-28 2017-10-10 Amazon Technologies, Inc. Point of presence management in request routing
US8676918B2 (en) 2010-09-28 2014-03-18 Amazon Technologies, Inc. Point of presence management in request routing
US9794216B2 (en) 2010-09-28 2017-10-17 Amazon Technologies, Inc. Request routing in a networked environment
US11108729B2 (en) 2010-09-28 2021-08-31 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US11336712B2 (en) 2010-09-28 2022-05-17 Amazon Technologies, Inc. Point of presence management in request routing
US10079742B1 (en) 2010-09-28 2018-09-18 Amazon Technologies, Inc. Latency measurement in resource requests
US9191338B2 (en) 2010-09-28 2015-11-17 Amazon Technologies, Inc. Request routing in a networked environment
US9185012B2 (en) 2010-09-28 2015-11-10 Amazon Technologies, Inc. Latency measurement in resource requests
US10931738B2 (en) 2010-09-28 2021-02-23 Amazon Technologies, Inc. Point of presence management in request routing
US10097398B1 (en) 2010-09-28 2018-10-09 Amazon Technologies, Inc. Point of presence management in request routing
US9106701B2 (en) 2010-09-28 2015-08-11 Amazon Technologies, Inc. Request routing management based on network components
US9800539B2 (en) 2010-09-28 2017-10-24 Amazon Technologies, Inc. Request routing management based on network components
US8924528B1 (en) 2010-09-28 2014-12-30 Amazon Technologies, Inc. Latency measurement in resource requests
US9712484B1 (en) 2010-09-28 2017-07-18 Amazon Technologies, Inc. Managing request routing information utilizing client identifiers
US8930513B1 (en) 2010-09-28 2015-01-06 Amazon Technologies, Inc. Latency measurement in resource requests
US8938526B1 (en) 2010-09-28 2015-01-20 Amazon Technologies, Inc. Request routing management based on network components
US9497259B1 (en) 2010-09-28 2016-11-15 Amazon Technologies, Inc. Point of presence management in request routing
US9003035B1 (en) 2010-09-28 2015-04-07 Amazon Technologies, Inc. Point of presence management in request routing
US11632420B2 (en) 2010-09-28 2023-04-18 Amazon Technologies, Inc. Point of presence management in request routing
US10778554B2 (en) 2010-09-28 2020-09-15 Amazon Technologies, Inc. Latency measurement in resource requests
US9160703B2 (en) 2010-09-28 2015-10-13 Amazon Technologies, Inc. Request routing management based on network components
US9407681B1 (en) 2010-09-28 2016-08-02 Amazon Technologies, Inc. Latency measurement in resource requests
US10225322B2 (en) 2010-09-28 2019-03-05 Amazon Technologies, Inc. Point of presence management in request routing
US9872087B2 (en) 2010-10-19 2018-01-16 Welch Allyn, Inc. Platform for patient monitoring
US9930131B2 (en) 2010-11-22 2018-03-27 Amazon Technologies, Inc. Request routing processing
US9003040B2 (en) 2010-11-22 2015-04-07 Amazon Technologies, Inc. Request routing processing
US10951725B2 (en) 2010-11-22 2021-03-16 Amazon Technologies, Inc. Request routing processing
US9391949B1 (en) 2010-12-03 2016-07-12 Amazon Technologies, Inc. Request routing processing
US8626950B1 (en) 2010-12-03 2014-01-07 Amazon Technologies, Inc. Request routing processing
US11604667B2 (en) 2011-04-27 2023-03-14 Amazon Technologies, Inc. Optimized deployment based upon customer locality
US9628554B2 (en) 2012-02-10 2017-04-18 Amazon Technologies, Inc. Dynamic content delivery
US10021179B1 (en) 2012-02-21 2018-07-10 Amazon Technologies, Inc. Local resource delivery network
US9083743B1 (en) 2012-03-21 2015-07-14 Amazon Technologies, Inc. Managing request routing information utilizing performance information
US9172674B1 (en) 2012-03-21 2015-10-27 Amazon Technologies, Inc. Managing request routing information utilizing performance information
US10623408B1 (en) 2012-04-02 2020-04-14 Amazon Technologies, Inc. Context sensitive object management
US11729294B2 (en) 2012-06-11 2023-08-15 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US10225362B2 (en) 2012-06-11 2019-03-05 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US11303717B2 (en) 2012-06-11 2022-04-12 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9154551B1 (en) 2012-06-11 2015-10-06 Amazon Technologies, Inc. Processing DNS queries to identify pre-processing information
US9525659B1 (en) 2012-09-04 2016-12-20 Amazon Technologies, Inc. Request routing utilizing point of presence load information
US10542079B2 (en) 2012-09-20 2020-01-21 Amazon Technologies, Inc. Automated profiling of resource usage
US9323577B2 (en) 2012-09-20 2016-04-26 Amazon Technologies, Inc. Automated profiling of resource usage
US10015241B2 (en) 2012-09-20 2018-07-03 Amazon Technologies, Inc. Automated profiling of resource usage
US9135048B2 (en) 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage
US10205698B1 (en) 2012-12-19 2019-02-12 Amazon Technologies, Inc. Source-dependent address resolution
US10645056B2 (en) 2012-12-19 2020-05-05 Amazon Technologies, Inc. Source-dependent address resolution
US9294391B1 (en) 2013-06-04 2016-03-22 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9929959B2 (en) 2013-06-04 2018-03-27 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US10374955B2 (en) 2013-06-04 2019-08-06 Amazon Technologies, Inc. Managing network computing components utilizing request routing
US9251235B1 (en) * 2013-09-11 2016-02-02 Amazon Technologies, Inc. Log-based synchronization
US10956446B1 (en) 2013-09-11 2021-03-23 Amazon Technologies, Inc. Log-based synchronization with inferred context
US20150256638A1 (en) * 2014-03-05 2015-09-10 Ricoh Co., Ltd. Fairly Adding Documents to a Collaborative Session
US9794078B2 (en) * 2014-03-05 2017-10-17 Ricoh Company, Ltd. Fairly adding documents to a collaborative session
US10091096B1 (en) 2014-12-18 2018-10-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10097448B1 (en) 2014-12-18 2018-10-09 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10033627B1 (en) 2014-12-18 2018-07-24 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US10728133B2 (en) 2014-12-18 2020-07-28 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11381487B2 (en) 2014-12-18 2022-07-05 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11863417B2 (en) 2014-12-18 2024-01-02 Amazon Technologies, Inc. Routing mode and point-of-presence selection service
US11297140B2 (en) 2015-03-23 2022-04-05 Amazon Technologies, Inc. Point of presence based data uploading
US10225326B1 (en) 2015-03-23 2019-03-05 Amazon Technologies, Inc. Point of presence based data uploading
US9887931B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US9819567B1 (en) 2015-03-30 2017-11-14 Amazon Technologies, Inc. Traffic surge management for points of presence
US9887932B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Traffic surge management for points of presence
US10469355B2 (en) 2015-03-30 2019-11-05 Amazon Technologies, Inc. Traffic surge management for points of presence
US11461402B2 (en) 2015-05-13 2022-10-04 Amazon Technologies, Inc. Routing based request correlation
US9832141B1 (en) 2015-05-13 2017-11-28 Amazon Technologies, Inc. Routing based request correlation
US10180993B2 (en) 2015-05-13 2019-01-15 Amazon Technologies, Inc. Routing based request correlation
US10691752B2 (en) 2015-05-13 2020-06-23 Amazon Technologies, Inc. Routing based request correlation
US10616179B1 (en) 2015-06-25 2020-04-07 Amazon Technologies, Inc. Selective routing of domain name system (DNS) requests
US10097566B1 (en) 2015-07-31 2018-10-09 Amazon Technologies, Inc. Identifying targets of network attacks
US9742795B1 (en) 2015-09-24 2017-08-22 Amazon Technologies, Inc. Mitigating network attacks
US10200402B2 (en) 2015-09-24 2019-02-05 Amazon Technologies, Inc. Mitigating network attacks
US9794281B1 (en) 2015-09-24 2017-10-17 Amazon Technologies, Inc. Identifying sources of network attacks
US9774619B1 (en) 2015-09-24 2017-09-26 Amazon Technologies, Inc. Mitigating network attacks
US10270878B1 (en) 2015-11-10 2019-04-23 Amazon Technologies, Inc. Routing for origin-facing points of presence
US11134134B2 (en) 2015-11-10 2021-09-28 Amazon Technologies, Inc. Routing for origin-facing points of presence
US10049051B1 (en) 2015-12-11 2018-08-14 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10257307B1 (en) 2015-12-11 2019-04-09 Amazon Technologies, Inc. Reserved cache space in content delivery networks
US10348639B2 (en) 2015-12-18 2019-07-09 Amazon Technologies, Inc. Use of virtual endpoints to improve data transmission rates
US10666756B2 (en) 2016-06-06 2020-05-26 Amazon Technologies, Inc. Request management for hierarchical cache
US11463550B2 (en) 2016-06-06 2022-10-04 Amazon Technologies, Inc. Request management for hierarchical cache
US10075551B1 (en) 2016-06-06 2018-09-11 Amazon Technologies, Inc. Request management for hierarchical cache
US11457088B2 (en) 2016-06-29 2022-09-27 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US10110694B1 (en) 2016-06-29 2018-10-23 Amazon Technologies, Inc. Adaptive transfer rate for retrieving content from a server
US10516590B2 (en) 2016-08-23 2019-12-24 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US9992086B1 (en) 2016-08-23 2018-06-05 Amazon Technologies, Inc. External health checking of virtual private cloud network environments
US10033691B1 (en) 2016-08-24 2018-07-24 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10469442B2 (en) 2016-08-24 2019-11-05 Amazon Technologies, Inc. Adaptive resolution of domain name requests in virtual private cloud network environments
US10469513B2 (en) 2016-10-05 2019-11-05 Amazon Technologies, Inc. Encrypted network addresses
US11330008B2 (en) 2016-10-05 2022-05-10 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10505961B2 (en) 2016-10-05 2019-12-10 Amazon Technologies, Inc. Digitally signed network address
US10616250B2 (en) 2016-10-05 2020-04-07 Amazon Technologies, Inc. Network addresses with encoded DNS-level information
US10372499B1 (en) 2016-12-27 2019-08-06 Amazon Technologies, Inc. Efficient region selection system for executing request-driven code
US11762703B2 (en) 2016-12-27 2023-09-19 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10831549B1 (en) 2016-12-27 2020-11-10 Amazon Technologies, Inc. Multi-region request-driven code execution system
US10938884B1 (en) 2017-01-30 2021-03-02 Amazon Technologies, Inc. Origin server cloaking using virtual private cloud network environments
US10503613B1 (en) 2017-04-21 2019-12-10 Amazon Technologies, Inc. Efficient serving of resources during server unavailability
US11075987B1 (en) 2017-06-12 2021-07-27 Amazon Technologies, Inc. Load estimating content delivery network
US10447648B2 (en) 2017-06-19 2019-10-15 Amazon Technologies, Inc. Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP
US11290418B2 (en) 2017-09-25 2022-03-29 Amazon Technologies, Inc. Hybrid content request routing system
US10592578B1 (en) 2018-03-07 2020-03-17 Amazon Technologies, Inc. Predictive content push-enabled content delivery network
US11362986B2 (en) 2018-11-16 2022-06-14 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US10862852B1 (en) 2018-11-16 2020-12-08 Amazon Technologies, Inc. Resolution of domain name requests in heterogeneous network environments
US11025747B1 (en) 2018-12-12 2021-06-01 Amazon Technologies, Inc. Content request pattern-based routing system
WO2020259268A1 (en) * 2019-06-28 2020-12-30 华为技术有限公司 Information sharing method, platform, and computing device
CN113742328A (en) * 2021-09-07 2021-12-03 北京百度网讯科技有限公司 Application data cleaning method, device, equipment, storage medium and program product

Also Published As

Publication number Publication date
US6199116B1 (en) 2001-03-06
US6574674B1 (en) 2003-06-03

Similar Documents

Publication Publication Date Title
US6574674B1 (en) Method and system for managing data while sharing application programs
US6182108B1 (en) Method and system for multi-threaded processing
US6314114B1 (en) Distributed resource management
US5557725A (en) Method and system for switching between users in a conference enabled application
EP1437656A2 (en) System and method for distributed multimodal collaboration using a tuple-space
US5949414A (en) Window control with side conversation and main conference layers
US6412034B1 (en) Transaction-based locking approach
US6859821B1 (en) Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
JP3846666B2 (en) Shared screen controller
EP0362105B1 (en) Method for processing program threads of a distributed application program by a host computer and an intelligent work station in an SNA LU 6.2 network environment
US7483981B2 (en) Scalable virtual partitioning of resources
US5408470A (en) Deferred synchronization of distributed objects
US20030085923A1 (en) Method and apparatus for conducting a collaboration session in which screen displays are commonly shared with participants
US20020016788A1 (en) Method and apparatus for multi-user awareness and collaboration
US20040268363A1 (en) System and method for interprocess communication
US6697901B1 (en) Using secondary resource masters in conjunction with a primary resource master for managing resources that are accessible to a plurality of entities
CN1331052C (en) Method and apparatus for managing resource contention in a multisystem cluster
GB2316508A (en) Intertask communication
JP2002505467A (en) Dynamic reference service in distributed systems
US5799314A (en) System and method of controlling mapping of data buffers for heterogenous programs in digital computer system
US7590618B2 (en) System and method for providing location profile data for network nodes
EP0772114B1 (en) Apparatus and method for programming a job ticket in a document processing system
US5218713A (en) Distributed data management mechanism for handling a data stream
JP2002505553A (en) Diversity token based control
JP3462064B2 (en) Distributed simulation system

Legal Events

Date Code Title Description
AS Assignment

Owner name: PICTURE TEL CORPORATION, MASSACHUSETTS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DATA CONNECTION LIMITED;REEL/FRAME:014468/0052

Effective date: 19960722

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:DATA CONNECTION LIMITED;REEL/FRAME:014468/0052

Effective date: 19960722

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001

Effective date: 20141014