A method and apparatus is disclosed for data communication between agents, such as those in an electronic conferencing system. In an electronic conferencing a system wherein data is shared between a plurality of participants during an electronic conference users, a method is disclosed for maintaining consistency of the data among the participants during the electronic conference users. The method of the present invention comprises the following steps: a) each participant in the electronic conferencing system user maintains a local copy of the shared data for the electronic conference during the electronic conference ; b) one of the participants users commences to perform modifications to an associated local copy of the shared data; c) subsequent to the step of commencing modifications, a participant user requests an index for the modifications from an arbitrator participant user, wherein the modifications to the associated local copy of the shared data may continue to be performed; d) the arbitrator participant user responds to the participant user requesting the index for the modifications; and e) a participant user modifies the associated local copy of the shared data according to the index received from the arbitrator participant user and transfers the local modifications to remote participants users. In one embodiment, the users are participants of an electronic conference, and the shared data are the "meeting" data of the electronic conference.
|
0. 16. An apparatus equipped with:
a. modification logic for modifying a local copy of shared data that is to be synchronized with corresponding remote copies; and b. requesting logic that requests for an index for a modification from an external source, upon commencement of said modification, said modification logic further modifying said associated local copy of said shared data according to said requested index, upon receiving said requested index.
0. 24. In a digital system wherein a local copy of shared data is maintained, a method for synchronizing the local copy of the shared data to corresponding remote copies of the shared data, the method comprising the steps of:
a. upon commencing making modification to said local copy of shared data, requesting an index for said modification; b. upon requesting the index, continuing to modify said local copy of shared data; c. receiving said requested index; d. modifying said local copy of shared data according to said received index.
1. In an electronic conferencing system wherein data is shared between a plurality of participants during an electronic conference, a method of maintaining consistency of shared data among said participants during said electronic conference comprising the following steps:
a. each participant of said plurality of participants in said electronic conferencing system maintaining a local copy of said shared data for said electronic conference during said electronic conference; b. one participant of said participants commencing to perform modifications to an associated local copy of said shared data; c. subsequent to commencing modifications, said one participant requesting an index for said modifications from an arbitrator participant, wherein said modifications to said associated local copy of said shared data may continue to be performed; d. said arbitrator participant responding to said one participant with said index for said modifications to said associated local copy of said shared data; e. said one participant of said participants modifying said associated local copy of said shared data according to said index received from said arbitrator participant; and f. transferring said modifications of steps b through e above to a remote participant.
6. In an electronic conferencing system wherein data is shared between a plurality of participants during an electronic conference, an apparatus for maintaining consistency of said data among said participants during said electronic conference comprising:
a. means for maintaining a local copy of said shared data for said electronic conference during said electronic conference, each participant of said plurality of participants in said electronic conferencing system including said means for maintaining; b. means for commencing to perform modifications to an associated local copy of said shared data; c. means for requesting an index for said modifications from an arbitrator participant, wherein said modifications to said associated local copy of said shared data may continue to be performed, one participant of said participants including said means for requesting; d. means for responding to said one participant with said index for said modifications to said associated local copy of said shared data, said arbitrator participant including said means for responding; e. means for modifying said associated local copy of said shared data according to said index received from said arbitrator participant; and f. means for transferring said local modifications to a remote participant.
0. 11. In an electronic conferencing system wherein data is shared between a plurality of participants during an electronic conference, an apparatus for maintaining consistency of said data among said participants during said electronic conference comprising:
a. maintenance logic associated with each of the participants that correspondingly maintains for the participants local copies of said shared data of said electronic conference during said electronic conference; b. modification logic associated with each of the participants for making modifications to the corresponding local copies of said shared data; c. request logic associated with each of the participants that correspondingly request indices for the modifications being made by the participants to their local copies of said shared data, upon commencement of the modifications; d. respond logic associated with at least one of the participants that responds to each of said participant indices requests, said modification logic further modifying the local copies of the shared data according to said requested indices upon received them; and e. transfer logic associated with each of the participants that transfers said modifications to other remote participants upon completing said modifications to the local copies in accordance with the received indices.
3. The method as claimed in
4. The method as claimed in
5. The method as claimed in
8. The apparatus as claimed in
9. The apparatus as claimed in
10. The apparatus as claimed in
0. 12. The apparatus as claimed in
0. 13. The apparatus as claimed in
0. 14. The apparatus as claimed in
0. 15. The apparatus as claimed in
0. 17. The apparatus as claimed in
0. 18. The apparatus as claimed in
0. 19. The apparatus as claimed in
0. 20. The apparatus as claimed in
0. 21. The apparatus as claimed in
e. responding logic that responds to the request for the index to modification being commenced against one of said remote copies of said shared data, the local copy of shared data being a master copy of the shared data.
0. 22. The apparatus as claimed in
e. transfer logic that transfers said local modifications to a remote user having a corresponding remote copy of shared data to be synchronized to the modified local copy of shared data.
0. 23. The apparatus as claimed in
0. 25. The method as claimed in
e. responding to a request for an index for modifications being made to a corresponding remote copy of shared data, the local copy of shared data being a master copy of the shared data.
0. 26. The method as claimed in
e. transferring said modifications to said local copy of shared data to a remote user having a corresponding remote copy of shared data to be synchronized with the modified local copy.
|
1. Field of the Invention
The present invention is related to an exemplary
The present invention relates to methods and apparatus for of the exemplary system n exemplary conference maintains its own data regarding the current state of display of the shared notebook for all users in the conference. In this manner, no individual participant is dependent upon the accessing of a central server for the display of its own information. However, a special participant in the conference is known as the "arbitrator" and the arbitrator maintains an "official version" of a meeting. All other participants are required to keep their versions synchronized with the arbitrator's official copy. A second participant may become an arbitrator either upon its own request or upon the arbitrator desiring to cease participating in the conference. In this case, all other participants are also informed of the change and a new arbitrator can start functioning. In one embodiment of the present invention, the arbitrator of a conference is the original participant that began the meeting.
The arbitrator also acts as a central system upon which annotations in the official copy of the meeting structure are approved. Although users may make changes to their own local copies of the meeting structure in real-time, without authority from the arbitrator, in order for the meeting to be maintained as consistent among all the participants, the arbitrator must make a final decision about the position of certain annotations. The allowing of a single participant to modify its meeting structure without the authority of the arbitrator and the later synchronization of that meeting structure with the other participants in the conference will, for the remainder of this application, be referred to as deferred synchronization.
Associated with each page and annotation class object in the meeting structure is a variable indicating whether the page or annotation has been synchronized with other participants in the conference. This is known as the "blocked" flag and this flag is set true until the page or annotation object has been synchronized with the other participants. In addition, the arbitrator maintains and grants object indices to new objects as they are created and/or modified by a particular agent, thus keeping the entire meeting synchronized among all the participants. The agent then requesting the addition and/or modification of objects receives messages from the arbitrator indicating a new object index, so that the participant may update his local meeting structure to comply with the remaining participants in the meeting. In addition, the blocked flag may then be changed to false indicating that the objects in question are now synchronized and no further communication needs to be performed with the arbitrator for the present time.
For example, one participant may decide to add an annotation to an existing page. Human Interface process 210 detects this request and sends a message to object manager 220 in order to add the annotation. Then a request is sent by the object manager 220 of the requesting participant to the object manger of the arbitrator. In addition, the object manager will add an object to its local meeting structure with the flag indicating that the annotation is "blocked" indicating that the object has not been synchronized with other participants in the meeting. In addition, in the communication to the arbitrator, the participant has indicated its participant index and a request for an object index from the arbitrator. Then the user of the agent may continue operation upon the annotation, until the object index is received back from the arbitrator. Once the object index has been received, the participant may update its meeting structure to comply with the index received back from the arbitrator. A more detailed discussion of this will be shown and discussed with reference to
If, however, it was a command which requires deferred arbitration, that is, timing requirements for meeting synchronization are relaxed and the user may make any modifications to the local meeting structure without the latency incurred by synchronization with other agents and continues at step 603. At step 603 it is determined whether the current command has occurred to change an object which is already "blocked". An object will only be indicated as blocked if it has been determined that the object was previously modified, deleted or added and the object has not yet been synchronized with other participants in the conference. This flag, as already discussed, is only set upon detection of a change, but prior to the assignment of an object index by the arbitrator. If it is not blocked (e.g., this is an initial action upon the object), then at step 604, it is determined whether the request has been detected for a deletion of the object. Deletion requires a specific series of steps, since ownership of all the objects requested to be deleted must be acquired prior to any deletion. This process also requires communication with other participants in the conference as shown on FIG. 6b. First, at step 614, it is determined whether ownership of the object has been obtained. This includes ownership of all the objects and sub-objects. If not, then such ownership is requested from each of the owners of the objects at step 615. If ownership is granted, as detected at step 616, or ownership of the object had already been obtained as detected at 614, then the process may continue back at step 605 illustrated on FIG. 6a. If not, then the delete failed as indicated at step 617, and the process returns at a typical process exit point such as that shown as 620 in FIG. 6a.
At step 605 it has now been determined that the object is one which has previously not been blocked, that is, it has previously been synchronized, and now some sort of change is occurring to the object. Thus, when this occurs, a request must be sent to request an object index for the object in order for the participant to be synchronized with all the other participants. However, the user may continue to make changes and perform other operations even prior to the receipt of the object index from the arbitrator. Thus, changes will therefore be local only, until the later synchronization of the meeting structure of the requesting participant with other participants in the meeting. The requested changes by the user are performed locally only at step 606, making all changes to the meeting structure which are permissible, and the changes are indicated as blocked at step 607. Then, this sub-process within the event loop may be exited at step 620, a typical process exit point.
Process 600 continues through the initial steps, 601, 602 and 603 for blocked objects for which commands have been received. If the object is detected as "blocked", that is a request has been sent to the arbitrator for an object index, however, no response has yet been received the process 600 continues at step 609. Step 609 detects whether the response containing the object index has been received from the arbitrator. If not, then the process proceeds to steps 606, 607 and 620, as already discussed. That is, changes continue to be performed locally and any changes are indicated as blocked until the synchronization with the arbitrator and, thus, the other participants has occurred.
If, however, a response has been received from the arbitrator, then the object index is received at step 610. Then, the participant may update its local meeting structure at step 611 in order to make the participant synchronous with the arbitrator (and thus the other participants in the meeting). In addition, the Human Interface HI layer 210 is informed of this occurrence in order for the participant to update its display. For example, if a page had been added by the participant which the local participant assigned page 4, but the arbitrator now assigns to page 5, the human interface layer 210 detects this change and updates the display accordingly to move the page visually to page 5. For example, in the notebook metaphor shown on the display, a new page "tab" may be created for the page using well-known prior art user-interface commands to associate a new page tab labeled "Page 5" with the locally created page. Then, after its own local meeting structure and display have been modified at step 611, the participant broadcasts any of the blocked changes, that is changed pages or annotations, to the other participants in the conference at step 612 as requested by the participants. Therefore, none of the other participants is synchronous with the current participant until this time. Once this is accomplished, the other participants in the conference may also update their own local meeting structures and associated displays with the appropriate pages and annotations in order to be synchronous with the participant performing the change. Finally, the current operation then may be performed with normal communication at step 613, thus making all the participants synchronous in the conference. Then, at step 620, the process exits at a typical process exit point.
A simple illustration of an exemplary local and an exemplary arbitrator's meeting structures may be illustrate with reference to
Therefore, deferred synchronization of objects for participants in an electronic conference poses substantial advantages over the client/server model of the prior art; because, timing requirements between the client and server are more relaxed. Because full consistency between participants is deferred, local participants may perform such CPU-intensive operations as the modification and creation of annotations in real-time without the latency in coordinating such operations with the server. A further advantage which deferred synchronization of objects has over the client/server model of the prior art is that the synchronization of objects for all participants is provided without using a central data repository as common in the client/server model. This is substantial advantage because the computer conferencing system can be used between personal computers where a network client/server model is not available or practical. The local participant will perform all such changes to its local display and meeting structure, and updates will only be coordinated upon the receipt of a response from the arbitrator assigning an object index. Therefore, the present invention poses substantial advantages over the prior art systems which require full synchronization at all times between all participants in the conference thus incurring substantial latency for synchronization and response delays in the user's interface to the system.
One of the types of object data which may be transferred between users, such as participants in an electronic conference is known as a very Binary Large OBject or "BLOB." A BLOB is an object which would not normally be able to be transmitted during one complete idle cycle of the participant and transport medium. Thus, such objects need to be broken into smaller portions, or packets and transmitted over several idle cycles by a background task. BLOB's typically comprise items such as very large graphic data, OLE annotations or files to be transferred. In other embodiments of the present invention, such BLOB's may include full-motion video objects such as MPEG or JPEG files and/or audio data. Using the methods and apparatus described, the BLOB data is transmitted in packets, the size of each of the packets being dynamically based upon the capabilities of the transport medium, which may dynamically change as the connection between participants change. Therefore, if the speed of the connection between two participants' transport medium changes, the size of packets transmitted by the transmitter is changed. This is done dynamically during transmission time, in order to allow the most efficient use of the transport medium during the transmission of BLOB's. In addition, BLOB transmit requests are queued so that higher-priority BLOB's may be transmitted before lower-priority BLOB's. In this way, a participant who is viewing a first page containing BLOB data who switches pages to a second page also containing BLOB data, the second page, which becomes the current viewing page containing the BLOB(s), becomes reprioritized within the transmitter to be transmitted ahead of the BLOB for the first page. This is done using a reprioritization request from the requester. Then, the out-going transfer queue is re-arranged by the transmitter to effect the desired change of transfer priority. The details of these mechanisms will now be discussed.
First, during a typical an exemplary electronic conference, BLOB data may not necessarily be transmitted to other participants upon creation of a BLOB within a local participant. In other words, transmission of the data for a BLOB may be deferred until a later time at which the transport medium may be idle, or the local participant has some idle processing time. Therefore, during creation of a BLOB, remote participants may be notified that the BLOB data is not contained within the BLOB to be created, and the remote participant(s) only create the object in their local meeting structures for the BLOB absent any data. During later idle periods of either the local participant and/or the remote participants, the BLOB data itself to be contained within the BLOB object in the meeting structure of the remote participants, may be added at such time as is convenient for the two participants. A typical chronology of actions which may be performed during a BLOB creation and transmission is illustrated with reference to FIG. 8.
The steps illustrated with reference to
As already discussed, the exemplary local participant processes requests for the BLOB data at step 805. This will be discussed in more detail with reference to
Process 900 of
Once the transport qualifier has been determined, it is determined at step 903 whether an existing request for data pending indicates receipt of a reprioritization request of an original request for BLOB data. If it is a request for pending data, then it is determined at step 904 whether a partial request is required. That is, if other remote participants request the same BLOB data which has already been requested and which has already started to be transferred, the new requesting participants may receive the BLOB data from the intermediate point at which the request was made, but they will also require any data which had been transferred up until that point. Thus, redundant transfers of data are eliminated by combining nearly simultaneous requests from multiple remote participants. For cases where transfer associated with an original request has not yet started, the subsequent requesting participants are merely added to the distribution list of the original transfer queue entry. Otherwise, if transfer has commenced, in addition to the above, one additional transfer queue entry will be added to account for the data already transferred. If, however, no pending requests exist for the actual BLOB data, then a new transfer queue entry in entered into the participant's transfer queue at step 905, in order to keep track of the BLOB transfer. As previously discussed, the queue entry maintains an OFFSET and SIZE in order to track the transfer for individual requests. At any rate, upon completion of either steps 904 or 905, the data request processing is complete at step 906, after which an actual data BLOB transfer will occur in the background (i.e., during idle processing time), and the process 900 will return to the normal event loop of the executive routine of the local participant.
A more detailed illustration of the process steps taken at step 902 of
At any rate, process 1000 starts at a typical process entry point 1001. Then, at step 1002 it is determined whether a high-speed transport facility is available between the local and requesting participant. If so, then the high-speed transport qualifier is used at step 1003. If, however, the remote and local participants are coupled via a low-speed transport medium as detected at step 1002, then at step 1004, a low-speed transport qualifier is used. At any rate, at step 1005, determination of the transport qualifier is complete and the accompanying process may continue.
The deferred transfer of object data process which was discussed with reference to step 904 of
If, however, a request was not pending for this particular participant, as detected by referencing the participant index for the requesting participant which is associated with the element in the transfer queue, then, at step 1103, the requesting participant is added to the distribution list for the existing transfer queue entry. Therefore, the participant index may be added to the existing transfer queue entry. A corresponding partial request entry may exist for each participant in the distribution list, but it is not required. Requests from multiple participants may have been received prior to commencing associated data transfer and as such only the single transfer queue entry exists. Once data transfer commences, additional requests from new participants will cause a combining with the existing entry and the addition of a partial entry for the data transfer completed at that time. Therefore, if data transfer has already commenced for the particular BLOB as specified in its transfer queue entry at step 1104, then a partial request for the remaining portion of the BLOB must be added into the transfer queue entry. This is performed at step 1105. That is, all the data associated with the BLOB and previously transferred to the other remote participants must be transferred to the current requesting participant upon completion of the current transfer. This is so that this participant may also bring its BLOB current with the other participants' in the conference. If, however, data transfer has not been commenced for this entry, the requesting participant has merely been added to the existing transfer queue entry at step 1103 and step 1104 proceeds to step 1106, the process exit point. The partial request for the portion of an existing transfer entry previously transferred at step 1105 will be illustrated in more detail with reference to FIG. 12. Thus, an additional partial request is added to the transfer queue at step 1105. This will now be discussed with reference to FIG. 12.
The preparation of partial requests will be illustrated with reference to
During transfers of such BLOB data, the exemplary remote participant and the exemplary local participant may be informed of such operations using a progress bar or other user interface feature under control of the Human Interface (HI) layer 210 of the agent during participant idle time. Thus, the user may be informed of intermediate transfers of data for proper system feedback.
Note that the BLOB data transfer mechanism uses a Clear-To-Send or CTS protocol wherein if transfer of data associated with a particular transfer queue entry cannot continue because a recipient is not Clear-To-Send, subsequent transfer queue entries not containing a not Clear-To-Send recipient are considered for transfer. This is performed in order to maximize full potential of the transport medium, during idle times of individual participants. The Clear-to-Send protocol of the present invention is described in more detail in connection with FIG. 18.
Referring now to
P User/participant connection/disconnection processing logic 1312 pertains to re-initialization upon notification of participant connection and flushing of participant-specific information upon participant disconnect notification. Referring now to
Referring to
Referring to
At the time of participant connection/disconnection, optimal transfer sizes are determined for each level of transport throughput (high and low-speed) in use. These sizes remain constant between participant connection and disconnection events. Or put another way, only participant connection and disconnection events affect the optimal transfer size. Note that the optimal transfer size is not a maximum transferable packet size. It's the most optimal size that can be handled to prevent partitioning of the packet. Utilizing this packet size, or smaller, the packet takes the fastest path through the processing logic on both the send and receive ends.
Referring again to
Referring to
As shown in
Referring again to
Thus, in conclusion, an improved method for the transmission of very large object data and the deferred synchronization of user data, such as participants data maintained during an electronic conference has been described. Although the present invention has been described with reference to specific application and embodiments, it can be appreciated by one skilled in the art that may the present invention may be practiced in other data sharing applications, and departures and as well as modifications may be made, and the present invention is only to be construed as limited by the appended claims which follow.
Rothrock, Lewis V., Thessin, Tyler R.
Patent | Priority | Assignee | Title |
7167900, | Jun 29 1999 | Microsoft Technology Licensing, LLC | Methods and systems for managing state changes during an arbitration cycle when multiple computer nodes request changes of shared data |
7194518, | Jun 29 1999 | Microsoft Technology Licensing, LLC | Methods and systems for managing state changes during an arbitration cycle when multiple computer nodes request changes of shared data |
7206810, | Jun 29 1999 | Microsoft Technology Licensing, LLC | Arbitration of state changes |
7219128, | Jun 29 1999 | Microsoft Technology Licensing, LLC | Arbitration of state changes |
7343446, | Feb 15 2001 | Microsoft Technology Licensing, LLC | Concurrent data recall in a hierarchical storage environment using plural queues |
7366738, | Aug 01 2001 | Oracle International Corporation | Method and system for object cache synchronization |
7403969, | May 26 2004 | AT&T Delaware Intellectual Property, Inc. | Network conferencing using method for distributed computing and/or distributed objects to intermediate host for presentation to a communications device |
7587037, | May 26 2004 | AT&T Intellectual Property I, L.P. | Network conferencing using method for distributed computing and/or distributed objects for presentation to a mobile communications device |
7587452, | Apr 23 2004 | AT&T Intellectual Property I, L. P. | Methods, systems, and products for network conferencing |
7694228, | May 26 2004 | AT&T Intellectual Property I, L.P. | Methods, systems, and products for network conferencing |
7730133, | May 26 2004 | AT&T Intellectual Property I, L.P. | Systems, methods, and products for conducting conferences |
8966189, | Mar 18 2011 | Tekla Corporation | Managing integrity of shared data in a manner permitting delayed updates |
9170886, | Oct 09 2012 | International Business Machines Corporation | Relaxed anchor validation in a distributed synchronization environment |
Patent | Priority | Assignee | Title |
4475189, | May 27 1982 | AT&T Bell Laboratories | Automatic interactive conference arrangement |
4509167, | Aug 05 1983 | AT&T Bell Laboratories; American Bell, Inc. | Data conference arrangement |
5195086, | Apr 12 1990 | AT&T Bell Laboratories; AMERICAN TELEPHONE AND TELEGRAPH COMPANY, A CORP OF NEW YORK | Multiple call control method in a multimedia conferencing system |
5195089, | Dec 31 1990 | SUN MICROSYSTEMS INC , 2550 GARCIA AVENUE, MOUTAIN VIEW, CA 94043 A CORP OF DE | Apparatus and method for a synchronous, high speed, packet-switched bus |
5220657, | Dec 02 1987 | Xerox Corporation | Updating local copy of shared data in a collaborative system |
5313459, | Oct 08 1992 | Newton Communications, Inc.; NEWTON COMMUNICATIONS, INC | Private branch exchange system and methods for operating same |
5761739, | Jun 08 1993 | International Business Machines Corporation | Methods and systems for creating a storage dump within a coupling facility of a multisystem enviroment |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 18 1997 | Intel Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Sep 15 2005 | ASPN: Payor Number Assigned. |
Oct 13 2006 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Mar 09 2007 | 4 years fee payment window open |
Sep 09 2007 | 6 months grace period start (w surcharge) |
Mar 09 2008 | patent expiry (for year 4) |
Mar 09 2010 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 09 2011 | 8 years fee payment window open |
Sep 09 2011 | 6 months grace period start (w surcharge) |
Mar 09 2012 | patent expiry (for year 8) |
Mar 09 2014 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 09 2015 | 12 years fee payment window open |
Sep 09 2015 | 6 months grace period start (w surcharge) |
Mar 09 2016 | patent expiry (for year 12) |
Mar 09 2018 | 2 years to revive unintentionally abandoned end. (for year 12) |