Device, arrangement and method for data synchronization in a multi-transmission environment

DE102009044507B4Active Publication Date: 2025-10-30LENOVO (SINGAPORE) PTE LTD
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
DE102009044507
Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
Priority Date
2008-12-04
Filing Date
2009-11-12
Publication Date
2025-10-30
Estimated Expiration
2029-11-12

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

A computer program that, when run on a computer, causes the computer to: a subordinate assembly is notified of a failed transmission operation in response to the failure of a host computer running separately from the subordinate assembly to send an outgoing data element over a first network connection, wherein the subordinate assembly is configured to generate a subordinate transmission operation for the outgoing data element over a second network connection in response to receiving the notification of the failed transmission operation; a new send operation for the outgoing data element on the host computer over the first network connection is generated in response to the failure of the lower order to successfully send the outgoing data element; and The subordinate arrangement notifies of a successful transmission operation in response to the host computer successfully executing the new transmission operation, which sends the outgoing data element over the first network connection.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] The invention relates to maintaining precisely synchronized data in an environment where data can be sent and received via separate media.

[0002] The growth of the personal computer industry has led to a time when many people own multicomputing setups. It's no longer unusual for someone to own a desktop computer, a laptop, and a mobile computing device such as a mobile phone or a personal digital assistant (PDA). Different types of computing devices serve different user needs. For example, a laptop can be a more convenient platform for sending and writing emails, but a mobile phone (such as a smartphone) is often a more versatile tool for emailing because it can use the service provider's wireless network to send and receive messages, resulting in generally wider availability.It is not at all unusual for a user to have reception for a mobile phone and associated access to email, but not access to a network to which the laptop computer can connect.

[0003] The inconvenience of using a smartphone to send emails is so well-known that it has entered our cultural vocabulary in the form of expressions like "Blackberry thumb." Lenovo's Constant Connect avoids these difficulties by allowing users to use their laptop to send emails even when it is not connected to a network. Constant Connect utilizes the laptop's network when it is connected and transmits data from the laptop using the mobile phone's connection when the laptop cannot communicate directly with a compatible network. While this solution allows users to send and receive data regardless of the laptop's network connection, it creates difficulties in maintaining synchronized data.

[0004] The above is, of course, just a simple example of a situation where synchronization problems can arise because data can be transferred to and from the source via multiple routes. For example, in the case of an email client on a laptop computer, duplication can occur if the mobile phone sends the message for the laptop, but the laptop itself sends the message later when connected to a network. Similar problems can occur, causing emails to appear multiple times in the user's inbox on the laptop. Both incoming and outgoing data can be duplicated and appear multiple times in email inboxes.

[0005] Data that is sent and resent multiple times can cause difficulties and frustration for users. Regularly sending and receiving duplicate emails can be frustrating, requiring users to manually track which emails were actually sent first, manually clean up duplicates in the inbox, and repeatedly explain why certain messages were sent twice. This can discourage many users from using a system that offers multiple transmission paths. Furthermore, if the data is informational, such as software fixes and updates, receiving additional copies of executable programs that have already been run can lead to problems, such as errors and failed installations on the receiving system.At the very least, this leads to additional downtime if the computer unnecessarily installs something that has already been installed. US 2003 / 0031124 A1 describes a communication system comprising a first network containing a first source configured to transmit data and a second network containing a destination configured to receive the data. US 2007 / 0223516 A1 describes a method for selecting one from a plurality of systems on a multimode device configured to communicate via a first air interface technology and a second air interface technology. US 2004 / 0023669 A1 describes a system that enables the handover of a wireless transmit and receive unit between a cellular network and a wireless local area network.US 2008 / 0070526 A1 describes a system and method for distributing mobile book messages, comprising generating a plurality of messages by a user via a graphical user interface.

[0006] The preceding description reveals a need for a device, an arrangement, and a method to synchronize data across multiple arrangements. Such a device, arrangement, and method advantageously prevent data duplication.

[0007] The present invention was developed in response to the current state of the art, and in particular to the problems and requirements in the art that have not yet been fully solved. Accordingly, the present invention was developed to provide a device, an arrangement, and a method for data synchronization that overcome many or all of the shortcomings of the prior art.

[0008] A computer-readable storage medium is disclosed that includes a computer-readable data synchronization program which, when executed, causes the host computer to notify a subordinate device (such as a mobile phone, a PDA, or any other network-connected device) of a failed transmission operation on the host computer when the host computer fails to send an outgoing data element over its network connection. In response to receiving the notification of the failed transmission, the subordinate device initiates a subordinate transmission operation for the outgoing data element over a second network connection. In one embodiment, the outgoing data element is an email, and the transmission operation sends the email to a server.In other embodiments, the outgoing data element consists of data, such as a file or folder, that is sent to a remote computer. The outgoing and incoming data elements can also include objects such as calendar events or software updates.

[0009] The computer-readable program also causes the computer to initiate a new transmission for the outgoing data element on the host computer if the child organization fails to successfully send the outgoing data element over its network connection. The computer also notifies the child organization of a successful transmission if the host computer successfully executes the new transmission in such a way that the outgoing data element is sent over the first network connection.

[0010] In certain embodiments, the computer-readable program further causes the host computer to receive an acknowledgment message from the subordinate assembly. The subordinate assembly sends the acknowledgment message when it successfully transmits the outgoing data element. The subordinate assembly is also configured to stop triggering subordinate transmissions for the outgoing data element when it receives notification of a successful transmission from the host computer.

[0011] In certain embodiments, the new transmission process is generated on the host computer when there is a change in the host computer's state or a change in the status of the host computer's network connection. For example, the host computer can change the status from "sleep" to "active." In certain embodiments, before initiating the new transmission process, the host computer verifies that the subordinate arrangement failed to successfully send the outgoing data element.

[0012] In certain embodiments, the host computer marks the outgoing data element as having been sent by the host computer if either the host computer sends the outgoing data element over the first network connection, or the subordinate arrangement sends the outgoing data element over the second network connection.

[0013] In one embodiment, the subordinate assembly is connected to the host computer via a plug-in card, which is separate from and connected to the host computer. The plug-in card can communicate with the subordinate assembly via a Bluetooth connection. In certain embodiments, the plug-in card sends data to and receives data from the subordinate assembly when the host computer is powered off, such as in s3, s4, or s5. In certain embodiments, the computer-readable program is executed on the plug-in card.

[0014] In further embodiments, the host computer determines whether the subordinate assembly has received incoming data elements that the host computer has not received. If so, the host computer receives those incoming data elements from the subordinate assembly that the host computer did not receive. This can be accomplished by obtaining a set of unique identifiers for incoming data elements sent to the host computer, obtaining a set of unique identifiers for incoming data elements sent to the subordinate assembly via the second network connection, and receiving those incoming data elements from the subordinate assembly that have unique identifiers not present in the host computer's set of unique identifiers for incoming data elements.

[0015] Also disclosed is a device for reducing the duplication of data transmissions in a multi-transmission environment. The device includes an output module that notifies the subordinate arrangement of a failed transmission operation on the host computer when the host computer fails to send an outgoing data element over a first network connection. The subordinate arrangement then triggers a subordinate transmission operation that instructs the subordinate arrangement to send the outgoing data element over a second network connection when it receives the notification of the failed transmission operation.

[0016] The device also includes an acknowledgment module that receives an acknowledgment message from the subordinate arrangement when the subordinate arrangement successfully executes the subordinate transmission operation in such a way that the outgoing data element is sent over the second network. A retry module triggers new transmission operations on the host computer for the outgoing data element while the acknowledgment module does not receive the acknowledgment message for the outgoing data element.

[0017] Additionally, a synchronization module provides the child order with a success message indicating that the host computer successfully sent the outgoing email. Upon receiving this success message, the child order stops triggering further child sends for the outgoing data item. The synchronization module can also mark the outgoing data item as sent on the host computer in response to the acknowledgment module receiving the acknowledgment message.

[0018] In certain embodiments, the device includes an input module that obtains a set of unique identifiers for incoming data elements sent to the host computer and compares these unique identifiers with the unique identifiers for incoming data elements sent to the subordinate arrangement. The device then receives from the subordinate arrangement those incoming data elements on the subordinate arrangement that have a unique identifier that is not present in the set of unique identifiers for incoming data elements of the host computer.

[0019] In certain embodiments, the repeat module continues to trigger the new transmission process in response to the host computer detecting a connection to a network, entering a powered-on state, and the expiration of a predetermined waiting period.

[0020] Also disclosed is an arrangement of the present invention comprising a host computer having a first network connection to a first network, and a subordinate arrangement having a second network connection to a second network. The host computer includes a synchronization device comprising an output module, an acknowledgment module, a retry module, and a synchronization module as described above. The subordinate arrangement includes a support device comprising a transmit module, a verification module, and a subordinate retry module.

[0021] In response to receiving a notification of a failed send operation from the outgoing module on the host computer, the send module initiates a child send operation for the outgoing data element on the child array. The verification module sends the confirmation message to the host computer if the child array successfully sends the outgoing data element over the second network. The child retry module resends the outgoing data element on the child array if the child send operation fails and the child array has not received the success message.

[0022] In one embodiment, the re-run module continues to resend the outgoing data element until either the host computer successfully sends the outgoing data element or the acknowledgment module receives the acknowledgment message indicating that the subordinate arrangement has successfully sent the outgoing data element.

[0023] In one embodiment, the output module detects a sending operation from an email user intermediary on a host computer, instructing the host computer to send an outgoing email. The output module copies the outgoing email to the subordinate assembly via a communication link, such as Bluetooth. The output module then monitors for transmission operations and indicates whether the outgoing email transmission on the host computer has either failed or been delayed. In response to the occurrence of a transmission operation, the output module sends a transmission request to the subordinate assembly. Upon receiving the transmission request, the subordinate assembly then attempts to send the outgoing email.

[0024] In such an embodiment, the retry module can be configured to trigger a new send operation in the email user intermediary for the outgoing email on the host computer, even if the acknowledgment module does not yet have the acknowledgment message for the outgoing email. The synchronization module can be configured to provide the subordinate assembly with a success message indicating a successful send operation of the outgoing email by the host computer, and the subordinate assembly, in response to receiving the success message, deletes the outgoing email from a send queue.

[0025] References in this description to features, advantages, or similar expressions do not imply that all of the features and advantages that can be realized with the present invention should be, or are, present in any single embodiment of the invention. Rather, the use of language relating to features and advantages is intended to mean that a particular feature, advantage, or property described in connection with an embodiment is included in at least one embodiment of the present invention. Therefore, the description of features, advantages, and similar expressions in this description may, but need not, refer to the same embodiment.

[0026] Furthermore, the described features, advantages, and properties of the invention can be combined in any suitable way in one or more embodiments. A person trained in the relevant technical field will recognize that the invention can be exercised without one or more of the specific features or advantages of a particular embodiment. In other cases, additional features and advantages may be recognized in certain embodiments that are not present in all embodiments of the invention.

[0027] The present invention provides a solution to ensure improved data synchronization where multiple data paths are available for a single host. These features and advantages of the present invention will become more fully apparent from the following description and the appended claims, or can be learned by carrying out the invention as described herein.

[0028] To facilitate understanding of the advantages of the invention, a more detailed description of the invention briefly described above is provided with reference to specific embodiments illustrated in the attached drawings. It is understood that these drawings represent only typical embodiments of the invention and therefore cannot be considered limiting to the scope of protection of the invention. The invention is described and explained with additional precision and in detail by means of the accompanying drawings, which: Fig. 1 is a schematic block diagram illustrating an embodiment of an arrangement for sending and receiving data using the present invention; Fig. 2 is a schematic block diagram illustrating an additional embodiment of an arrangement for sending and receiving data using the present invention; Fig. 3 is a schematic block diagram illustrating a third embodiment of an arrangement for sending and receiving data using the present invention; Fig. 4 is a schematic block diagram illustrating an embodiment of a synchronization device of the present invention; Fig. 5 is a schematic block diagram illustrating an embodiment of a support device of the present invention; Fig. 6 is a schematic flowchart illustrating an embodiment of a method for synchronizing outgoing data according to the present invention; and Fig. Figure 7 is a schematic flowchart illustrating an embodiment of a method for synchronizing incoming data according to the present invention.

[0029] Many of the functional units described in this description have been designated as modules to emphasize, in particular, their independence from the type of implementation. Modules can include hardware circuits, such as one or more processors with memory, very large-scale integration (VLSI) circuits, gate arrays, programmable logic circuits, and / or discrete components. The hardware circuits can execute hard-wired logic functions, execute computer-readable programs stored in physical memory arrangements, and / or execute programmed functions. The computer-readable programs can perform the functions of the invention when executed by a computer arrangement.

[0030] References in this description to "an embodiment" or similar language mean that a particular feature, structure, or property described in connection with the embodiment is present in at least one embodiment of the present invention. Therefore, occurrences of the phrase "in an embodiment" and similar language in this description may all refer to the same embodiment, but do not necessarily have to.

[0031] Furthermore, the described features, structures, or properties of the invention can be combined in any suitable way in one or more embodiments. The following description provides numerous specific details, such as examples of programming, software modules, user selection, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware components, etc., to provide a thorough understanding of the embodiments of the invention. However, a person trained in the relevant technology will recognize that the invention can be exercised without one or more of the specific details, or with other methods, components, materials, and so on. In other cases, well-known structures, materials, or processes are not shown or described in detail to avoid obscuring aspects of the invention.

[0032] Modules can be stored, for example, on computer-readable storage media. Such media include any medium that a computer can read and from which it can extract instructions and data for execution in a processor. Examples include, but are not limited to, CDs, DVDs, hard disks, magnetic media, optical media, solid-state storage devices, and other media known to those trained in technology.

[0033] Fig. Figure 1 shows an array 100 comprising a server 120, a host computer 102, and a sub-arrangement 110. As shown, the host computer 102 is connected to the server 120 via the first network 130. The host computer 102 is connected to the first network 130 via a first network connection 108. The sub-arrangement 110 is connected to the server via a second network 140. The sub-arrangement 110 is connected to the second network 140 via a second network connection 114. The first network connection 108 and the second network connection 114 can be hardwired network connections (such as Ethernet) or wireless connections implemented via a wireless adapter card. The host computer 102 and the sub-arrangement 110 are connected via a third network connection 116.The third network connection 116 can again be a hardwired network connection or a wireless connection, such as Bluetooth.

[0034] In certain embodiments, the subordinate arrangement 110 and the host computer 102 are connected to the same network (for example, the first network 130) but are linked by separate network connections, such as the first network connection 108 and the second network connection 114. For example, the host computer 102 may have an Ethernet connection to the first network 130, while the subordinate arrangement 110 has a wireless connection to the first network 130. In other embodiments, the host computer 102 and the subordinate arrangement 110 are connected to separate networks, such as the first network 130 and the second network 140.For example, the host computer 102 can be connected to the server 120 via a first network 130, which is managed by a cable or DSL provider, while the subordinate arrangement 110 is connected to the server 120 via a second network 140, which is operated by a national wireless service provider, such as a mobile phone company. The host computer 102 and the subordinate arrangement 110 each have separate physical arrangements to establish the first network connection 108 and the second network connection 114, respectively. The network connections are implemented using separate hardware (that is, the host computer 102 and the subordinate arrangement 110 do not share the same wireless adapter or Ethernet port).

[0035] The host computer 102 can also be a desktop computer, a personal digital assistant (PDA), a laptop computer, or any other electronic device capable of transmitting data to a server 120 over a network connection. The subordinate device 110 can also be a computer, a PDA, a mobile phone, or any other device capable of transmitting data to the server 120 over a network connection. The host computer 102 and the subordinate device 110 have separate physical connections to the server 120, even if they use the same network. For example, the host computer 102 can communicate with the first network 130 over a wireless network connection, and the subordinate device 110 can also communicate over the same wireless network.

[0036] In certain embodiments, the host computer 102 and the subordinate arrangement 110 are physically integrated into the same form factor. In such embodiments, the subordinate arrangement 110 can connect directly to the mainboard of the host computer 102 via a third network connection 116 based on PCI Express. In other embodiments, the subordinate arrangement 110 is a plug-in card that connects to the host computer via well-known communication protocols, such as USB. In still other embodiments, the subordinate arrangement 110 is separate from the host computer 102 and provides a variety of functions, including the functionality described in this application. For example, a mobile phone can connect to the host computer 102 using a network connection 116, which is a Bluetooth connection.In each embodiment, however, the subordinate arrangement 110 provides a separate physical network connection (second network connection 114) which is different from the one provided by the host computer 102 (first network connection 108).

[0037] The host computer 102 also has a communication module 104, which enables the host computer 102 to communicate information over a network. The host computer 102 uses the communication module 104 to send and receive information over the first network connection 108. The subordinate arrangement 110 similarly has a communication module 112, which it uses to send and receive information over the second network connection 114.

[0038] In accordance with the present invention, the host computer 102 comprises a synchronization device 106, which is described in greater detail below. The synchronization device 106 enables data communication between the host computer 102 and the server 120 via multiple transmission paths. For example, if the host computer 102 loses the primary network connection 108 and is therefore unable to communicate with the server 120, the synchronization device 106 enables the sending and receiving of data via the subordinate arrangement 110. When both the host computer 102 and the subordinate arrangement 110 are communicating with the server 120, the synchronization device 106 coordinates the communication in such a way that the host computer 102 and the subordinate arrangement 110 do not send and receive duplicate data.In addition, the synchronization device 106 ensures that incoming and outgoing data are routed through the first available network connection in the event that both the first network connection 108 and the second network connection 114 are out of service for a period of time.

[0039] Fig. Figure 2 shows an example of an arrangement 200 that can benefit from a synchronization device 106 according to the present invention. However, the described embodiment is simply an example of an arrangement 200 that can benefit from the present invention. The present invention is not limited to email as described herein.

[0040] In configuration 200, server 120 is an email server 210, also known as a Mail Transfer Agent (MTA). Email server 210 receives emails for users and coordinates the sending of emails from users to other accounts. When email server 210 receives an email message, it forwards the email message to the host computer 102, which runs email client 202. Email server 210 can be an SMTP server, POP3 server, IMAP server, or a combination thereof. The processes of email server 210 are only of marginal interest for this application; therefore, they will not be described in detail. Of particular importance is that email server 210 communicates incoming email messages to email client 202, which runs on host computer 102, and receives outgoing email messages from email client 202.In the illustrated embodiment, communication between the host computer 102 and the email server 210 takes place via the first network 130. The email server 210 can be, for example, a Microsoft Exchange Server, Sendmail, Postfix, Exim, or another system known in the prior art. In other embodiments, the email server 210 can be a webmail service, such as Hotmail, Gmail, or others.

[0041] The host computer 102 includes an email client 202 and a synchronization device 106. The email client 202 (also known as a mail user agent - MUA) provides an interface to the user of the host computer 102 who sends and receives email. Examples of email clients 202 are Microsoft Outlook, GroupWise, Eudora, Apple Mail, or others known in the prior art. In a preferred embodiment, the email client 202 provides offline capability, allowing the user to read, access, and create emails regardless of the status of the primary network connection 108.

[0042] Also shown in the arrangement 200 is a mobile phone 220 comprising a communication module 112 and a support device 224. In one embodiment, the mobile phone 220 is a Research in Motion (RIM) Blackberry mobile phone 220. However, the mobile phone 220 can be any brand that, in addition to voice communication, also provides data communication via a second network 140. The mobile phone 224 also includes a support device 224 according to the present invention.

[0043] A user can also send and receive email using the mobile phone 220. In one embodiment, the mobile phone 220 receives incoming email from the email server 210 and sends outgoing email to the email server 210 via the second network 140. In certain embodiments, the second network 140 may require additional components to support such communication. For example, a BlackBerry Enterprise Server may be used to enable email communication to and from the mobile phone 220. The mobile phone 220 may also implement its own email client (not shown) to assist the user in easily creating and receiving email messages. The email client on the mobile phone 220 may also have offline capability.

[0044] The mobile phone 220 and the host computer 102 also communicate information via the third network connection 116. In one embodiment, the third network connection 116 is a Bluetooth connection. The communication module 112 of the mobile phone 220 and the communication module 104 of the host computer 102 are configured to enable data sharing between the mobile phone 220 and the host computer 102. In one embodiment, the mobile phone 220 has a Bluetooth connection via a serial port, which defines what appears as a serial port on the host computer 102. Data is then transmitted via the Bluetooth connection to and from the host computer 102 and the mobile phone 220 via a serial port.

[0045] In one embodiment, when a user creates and sends an email using the email client 202, the synchronization device 106 detects the sending process initiated by the email client 202 when the user presses the send button of the email client 202. The sending process instructs the host computer 102 to send the outgoing email via the first network connection 108, which connects the host computer 102 to the email server via the first network 130.

[0046] In one embodiment, the synchronization device 204 copies the outgoing email to the mobile phone 220 via the third network connection 116 at the time the sending process is detected. The synchronization device 204 then monitors for transmission operations on the host computer 102 that indicate that the outgoing email has either failed or been delayed. For example, if the host computer 102 is not connected to a network, a transmission operation may indicate that the email could not be sent because there is no network connection linking the host computer 102 to the email server 120. Alternatively, if the host computer 102 was put into sleep mode before the email was sent, or if there is any kind of failed attempt that prevents the email from being sent, a transmission operation is generated indicating this failed attempt or delay.

[0047] In one embodiment, when the synchronization device 106 detects a transmission operation, it sends a transmission request to the mobile phone 220, instructing the mobile phone 220 to send the outgoing email via the second network connection 114 to the email server 210. As a result, the user can send an email using the host computer 102, even if the first network connection 108 does not establish communication between the host computer 102 and the email server 210. If the host computer 102 is disconnected, or if there is a problem with either the first network 130 or the first network connection 108, the user can still use the host computer 102 to send email. As described above, the email is redirected to the mobile phone 220 in the event of a transmission operation indicating that the sending operation has failed or is delayed.

[0048] In one embodiment, the synchronization device 106 receives an acknowledgment message from the support device 224 on the mobile phone 220 when the mobile phone 220 successfully sends the outgoing email, as instructed by the transmission request. The synchronization device 106 then instructs the email client 202 not to make any further attempts to send the outgoing email. In another embodiment, upon receiving the acknowledgment message, the synchronization device 106 marks the specific email as sent and changes its status from pending to sent. The synchronization device 106 may include a plug-in component for the email client 202 to enable this functionality.

[0049] As a result, successful transmission is documented on the host computer 102 as soon as the outgoing email has been sent via the mobile phone 220. The synchronization device 106 then ensures that the successful transmission is documented by the email client 202, preventing it from re-sending the email once a connection is established via the first network connection 108. Consequently, the outgoing email can be composed and sent from the host computer 102 even when it is not connected to a network. The synchronization device 106 operates to send the outgoing email via the second network connection 114 in a manner that is transparent to the user.The synchronization device 106 also ensures that no duplicates of outgoing emails are sent via the two separate communication paths by marking the outgoing email as sent on the host computer 102 even if it was not sent via the first network connection 108 of the host computer 102.

[0050] However, mobile phone 220 may also be unable to establish a connection to email server 210. Therefore, mobile phone 220 cannot send the outgoing email via the second network connection 114. To ensure that the outgoing email is sent as quickly as possible, the synchronization device 106, in certain embodiments, allows the host computer 102 to continue attempting to send the outgoing email until it has been notified that mobile phone 220 has successfully sent it. In one embodiment, the synchronization device 106 causes the email client 202 to initiate a new sending process for the outgoing email on the host computer 102 until the synchronization device 106 has received the confirmation message indicating that the email has been sent.The synchronization device 106 can cause the email client 202 to perform this action at regular intervals. Additionally, the synchronization device 106 can enable the email client 202 to perform regular resending attempts according to its own rules. For example, the email client 202 can attempt to send an outgoing email when the host computer 102 detects that it is connected to a network via the first network connection 108.

[0051] When host computer 102 successfully sends the outgoing email, synchronization device 106 provides mobile phone 220 with a success message indicating that the outgoing email was successfully sent from host computer 102. Upon receiving the success message, support device 224 deletes the outgoing email from the send queue on mobile phone 220. This ensures that mobile phone 220 does not send a duplicate email when host computer 102 successfully sends the outgoing email.

[0052] In one embodiment, for example, as soon as the user presses the send button of the email client 202, the synchronization device 106 copies the outgoing email to the mobile phone 220 as described above. If the host computer 102 sends the email successfully, the synchronization device 106 instructs the mobile phone 220 to delete the copy of the outgoing email. If the host computer 102 fails to send the outgoing email successfully, the mobile phone 220 attempts to send the outgoing email via the second network connection 114. At this point, the host computer 102 and the mobile phone 220 continue to attempt to send the outgoing email. If one device successfully sends the outgoing email, it notifies the other. At this point, all further attempts to send the outgoing email are terminated, and the outgoing email is marked as sent on the host computer 102.The email can also be marked as sent on the mobile phone 220.

[0053] In one embodiment, the mobile phone 220, unlike waiting for a transmission request from the host computer 102, simply waits for a predetermined duration after receiving a copy of the outgoing email. If, during this time, the mobile phone 220 does not receive a notification from the host computer 102 indicating that the outgoing email has been sent, the mobile phone 220 begins attempting to send the outgoing email via the second network connection 114. Thus, in one embodiment, after a certain period, the mobile phone 220 assumes that the outgoing email has not been sent successfully, unless it is otherwise notified by the synchronization device 106.

[0054] The synchronization device 106 also enables the receipt of incoming emails via multiple paths without duplication. In one embodiment, the synchronization device 106 derives a unique identifier for each incoming email sent to the host computer 102 via the first network connection 108. The synchronization device 106 can, for example, use the day / time / sent email header as the unique identifier. The synchronization device 106 can also use this in combination with other information, such as the sender's subject or some combination thereof, to uniquely identify incoming emails received via the first network connection 108. Those familiar with the technology will understand the various ways in which an email can be uniquely identified.

[0055] The synchronization device 106 compares the set of unique identifiers of incoming emails received via the first network connection 108 with the unique identifiers of incoming emails received via the second network connection 114 by the mobile phone 220. In one embodiment, the support device 224 provides the unique identifiers for the incoming emails received by the mobile phone 220. By comparing the two sets of unique identifiers, the synchronization device 106 determines which incoming emails have been received by the mobile phone 220 but not by the host computer 102. The synchronization device 106 then receives these incoming emails that the mobile phone 220 has received but the host computer 102 has not.

[0056] In one embodiment, the synchronization device 106 causes incoming emails received by the mobile phone 220 to appear in the email client 202 as if they had been received via the first network connection 108. In certain embodiments, the incoming emails received by the mobile phone 220 are a simplified version of what is actually present on the email server 210. Sending such a simplified version can save bandwidth on the second network 140. In such embodiments, the synchronization device 106 can cause the version of the incoming email received by the mobile phone 220 to be replaced with the version received via the first network connection 108, if the incoming email actually arrives via the first network connection 108.

[0057] As a result, the present invention enables a user to send emails using the host computer 102, regardless of the status of the first network connection 108. Both incoming and outgoing emails are received and sent via the first available network connection. In addition, the synchronization device 106 reduces the occurrence of duplications that would occur with the two separate data paths to and from the email server 210.

[0058] Fig. Figure 2 also shows a plug-in card 206 with a cache device 204. The plug-in card 206 can be used to extend the versatility of the present email solution. In certain embodiments where the synchronization device 106 operates in conjunction with the host computer 102, the synchronization device 106 is only functional when the host computer 102 is running. In certain embodiments, this state is referred to as "s0". When the host computer 102 is in the suspend, hibernate, or soft-off state (s3, s4, or s5, respectively), the synchronization device 106 is unavailable and does not provide the described functionality. The host computer 102 also does not maintain the third network connection 116 in such a state.

[0059] The plug-in card 206 is preferably configured to operate independently of the host computer 102. The plug-in card 206 therefore maintains its power supply even when the host computer 102 is unavailable. In certain embodiments, the plug-in card 206 also has its own processor and memory and runs its own separate operating system, enabling it to operate independently of the host computer 102.

[0060] When the host computer 102 is reachable, the synchronization device 106 also writes the information sent to the mobile phone 220 to the plug-in card 206. In one embodiment, the cache device 204 stores only those emails affected by the synchronization device 106; this means that the cache device 204 does not replicate the entire mailbox of the email client 202. Only those emails that are sent or received as described above are stored in the cache device 204. Once the synchronization is complete, the emails are deleted from the cache device 204. In this way, information sent to and received from the mobile phone 220 is also stored in the cache device 204. In one embodiment, when the host computer 102 is reachable, the mobile phone 220 communicates directly with the host computer 102.

[0061] If the host computer 102 is unreachable (as is the case in states s3, s4, and s5), the mobile phone 220 communicates information to the plug-in card 206 via the third network connection 116. This disconnects all connections to the host computer 102 and establishes a connection to the plug-in card 206. Because the plug-in card 206 remains available, the mobile phone 220 can continue transmitting information to it. In this way, the notifications described above can be sent to the plug-in card 206 and stored in the cache device 204. When the host computer 102 returns to online operation, the synchronization device 106 can quickly determine the status of sent and received emails by retrieving this information from the plug-in card 206.

[0062] In one embodiment, the synchronization device 106 operates on the plug-in card 206 instead of on the host computer 102. In other embodiments, the plug-in card 206 is configured to provide the cache device 204 and also to represent the subordinate arrangement 110. The plug-in card 206 can, for example, be equipped with a wireless network connection, so that, in the illustrated embodiment, it can take the place of the mobile telephone 220 with respect to its function. Alternatively, the plug-in card 206 can be used as an alternative connection path to the email server 210.

[0063] In certain embodiments of the arrangement 200, the host computer 102 does not have a plug-in card 206 connected to it. The synchronization device 106 still provides the services described above; however, in such embodiments, the communication and synchronization information cannot be shared while the host computer 102 is unreachable.

[0064] Fig. Figure 3 shows an arrangement 300 in which the host computer 102 and the subordinate arrangement 110 are both connected to the server 120 via the first network 130. However, here the host computer 102 is connected via a first network connection 108, and the subordinate arrangement 100 is connected via a second network connection 114. The first network connection 108 could, for example, be an Ethernet connection, while the second network connection 114 could be a wireless connection.

[0065] While such an embodiment cannot provide the same level of protection as an arrangement that allows the host computer 102 and the subordinate arrangement 110 to communicate over separate networks, the described embodiment can nevertheless be useful. For example, problems in the host computer 102 that prevent data from being sent over the first network connection 108 can be circumvented by allowing data to travel over the second network connection 114. The arrangement 300 still provides increased reliability and stable data communication.

[0066] Fig. Figure 4 illustrates an embodiment of a synchronization device 106 according to the present invention. In the illustrated embodiment, the synchronization device 106 comprises an output module 310, a confirmation module 312, a repetition module 314, and a synchronization module 316.

[0067] The output module 310 notifies the subordinate assembly 110 of a failed transmission operation if the host computer 102 fails to send an outgoing data element over the first network connection 108. The subordinate assembly 110 triggers a subordinate transmission operation on the subordinate assembly 110 when it receives a notification of a failed transmission operation. The subordinate assembly 110 therefore attempts to send the outgoing data element over the second network connection 114.

[0068] In one embodiment, notifying the subordinate assembly 110 includes providing it with an acknowledgment that instructs it to send the outgoing data element. In other embodiments, notifying the subordinate assembly 110 includes providing it with a copy of the outgoing data element, but not providing an indication that the email was sent on the host computer 102. For example, the output module 310 can provide the subordinate assembly 110 with a copy of the outgoing data element.The subordinate device 110 can be configured to attempt to send the outgoing data element if it has not received confirmation that the outgoing data element was sent by the host computer 102 within a prescribed time. Notifying the subordinate device 110 of a failed transmission operation therefore constitutes such an embodiment of negative consent; that is, where, in the absence of notification to the contrary, a failed attempt is assumed.

[0069] In another embodiment, the notification of the subordinate arrangement 110 includes detecting a transmission operation on the host computer 102 and copying the outgoing data element to the subordinate arrangement 110 via the third network connection 116. In such an embodiment, the output module 310 can also be configured to monitor for transmission operations that indicate that the transmission operation for the outgoing data element on the host has either failed or is delayed. Transmission operations can be generated either by the operating system on the host computer 102 or by applications running on the host computer 102.

[0070] In one embodiment, when the output module 310 detects a transmission operation, it sends a transmission request to the subordinate arrangement 110. The subordinate arrangement 110 is configured to send the copy of the outgoing data element via the second network connection 114 when the subordinate arrangement receives the transmission request from the output module 310.

[0071] In one embodiment, the synchronization device 106 also includes an acknowledgment module 312. The acknowledgment module 312 is configured to receive an acknowledgment message from the subordinate arrangement 110 when the subordinate arrangement 110 successfully sends the outgoing data element via the second network connection 114. The acknowledgment message can be a flag, a message (such as XML), a change in the status of the outgoing data element (i.e., a change from not sent to sent), or another notification indicating that the outgoing data element has been sent by the subordinate arrangement 110.

[0072] In one embodiment, the synchronization device 106 also includes a retransmission module 314. The retransmission module 314 triggers a new transmission operation on the host computer 102 for the outgoing data element if the acknowledgment module 312 has not received an acknowledgment message for the outgoing data element transmitted by the subordinate arrangement 110, wherein this acknowledgment message indicates that the outgoing data element has been transmitted. The retransmission module 314 can instruct the host computer 102 to trigger new transmission operations at regular intervals as long as the acknowledgment module 312 has not received the acknowledgment message.Alternatively, the repeat run module 314 can instruct the host computer 102 to initiate new transmissions in response to the host computer 102 detecting a change in network settings (that is, when the host computer 110 detects that it has been connected to a network via the first network connection 108) or a change in the state of the host computer 102 (that is, the host computer 102 switching from s3, s4, or s5 to s0).

[0073] The synchronization device 106 can also include a synchronization module 316, which provides the subordinate arrangement 110 with a success message indicating that the host computer 102 has successfully executed a transmission operation for the outgoing data element. The subordinate arrangement 110 is configured to stop triggering subordinate transmission operations for the outgoing data element when it receives the success message from the synchronization module 316.

[0074] The synchronization module 316 can also be configured to mark the outgoing data element on the host computer as sent when the acknowledgment module 312 receives the acknowledgment message as described above. For example, if the outgoing data element is an email, the synchronization module 316 can instruct the email client 202 to move the outgoing email from an "unread" folder to a "sent" folder. As a result, the user recognizes that the outgoing email has been sent. However, the mechanisms by which the outgoing email was sent (that is, by the child arrangement 110) are not visible to the user. In one embodiment, the synchronization module 316 writes information into the outgoing email metadata indicating that it was sent by the child arrangement 110.

[0075] In one embodiment, the success message and the confirmation message only indicate that the outgoing data element has been successfully sent by the corresponding arrangement, either the host computer 102 or the subordinate arrangement 110. The notifications need not indicate that the outgoing data element has been successfully transferred to the server 120.

[0076] In one embodiment, the synchronization device 106 also includes an input module 318 that manages the reception and synchronization of incoming data elements. In one embodiment, the input module 318 acquires a set of unique identifiers for incoming data elements sent to the host computer 102. The input module 318 compares the set of unique identifiers for the incoming data elements sent to the host computer 102 with unique identifiers for incoming data elements sent to the subordinate arrangement 110.

[0077] Using comparison, the input module 318 determines which incoming data elements have been received by the subordinate arrangement 110 but not by the host computer 102. The input module 318 receives from the subordinate arrangement 110 the incoming data elements that have not been received by the host computer 102. In one embodiment, these incoming data elements received by the subordinate arrangement 110 are flagged or otherwise marked for exchange when the host computer 102 is able to connect to the server 120 via the first network connection 108.

[0078] The Synchronization Device 106 operates in this way to provide multiple paths for sending outgoing data elements and receiving incoming data elements, while ensuring that outgoing and incoming data elements are not duplicated. As a result, the Synchronization Device 106 provides a more stable, versatile, and valuable solution for users, especially those who are constantly on the move.

[0079] Fig. Figure 5 illustrates an embodiment of a support device 224 according to the present invention. The support device 224 is mounted on the subordinate arrangement 110 and coordinated with the synchronization device 106 to provide a secure data transmission arrangement with minimal risk of data duplication. The support device 224 comprises a transmit module 510, a verification module 512, and a subordinate replay module 514.

[0080] The transmit module 510 is configured to send the outgoing data element via the second network connection 114 of the subordinate arrangement 110 when the output module 310 of the synchronization device 106 provides a notification of a failed transmission operation on the host computer 110. In one embodiment, the transmit module 510 generates a subordinate transmission operation that calls the functionality provided by the communication module 112 of the subordinate arrangement 110 to send the outgoing data element. Therefore, if the outgoing data element is not sent via the first network connection 108, the synchronization device 106 and the support device 224 work together to send the outgoing data element via the second network connection 114.

[0081] As described above, the acknowledgment module 312 of the synchronization device 106 receives an acknowledgment message when the subordinate arrangement 110 successfully transmits the outgoing data element. The verification module 512 sends this acknowledgment message to the acknowledgment module 312 when the subordinate arrangement 110 successfully transmits the outgoing data element over the second network connection 114. In one embodiment, the verification module 512 sends the acknowledgment message in response to the transmit module 510 initiating a transmit operation for the outgoing data element, which is then successfully executed.

[0082] The subordinate retransmission module 514 resends the outgoing data element to the subordinate arrangement 110 if the subordinate transmission operation generated by the transmit module 510 fails. In one embodiment, the subordinate retransmission module 514 generates a new subordinate transmission operation for the outgoing data element. The subordinate retransmission module 514 can generate new subordinate transmission operations at a specified interval after the subordinate transmission operation fails if the subordinate arrangement 110 reports a change in its network state, a change in the state of the subordinate arrangement 110, or a combination of the above.Other events besides those mentioned above can also be used to determine when to generate a new subordinate transmission, and the present invention is not limited to any specific events that are used to generate new subordinate transmissions.

[0083] It was described above that the synchronization module 316 provides a success message to the subordinate arrangement 110 when the synchronization device 106 successfully transmits the outgoing data element. In one embodiment, the subordinate retry module 514 verifies, before generating a new subordinate transmit operation, that the subordinate arrangement 110 has not received the success message. The subordinate retry module 514 can simply check to determine whether the success message has been sent, query the synchronization device 106 for the success message, or perform a combination of both. Verifying that the synchronization device 106 has not transmitted the outgoing data element over the first network connection 108 before generating a new subordinate transmit operation helps to ensure a reduction in data duplication.

[0084] Fig. Figure 6 is an exemplary flowchart showing an embodiment of a method 600 for providing a highly available data communication arrangement with a low risk of unintentional data duplication. The left side of the flowchart shows the actions on the host computer 102, and the right side shows the actions on the subordinate arrangement 110. The method 600 begins with the generation 602 of a send operation on the host computer 602. In one embodiment, a user generates the send operation by entering a send instruction on the host computer 102, which instructs the host computer 102 to send the outgoing data element over the first network connection 108. In another embodiment, the host computer 102 or an application running on the host computer 102 generates the send operation for the outgoing data element without receiving any user input.For example, the host computer 102 can be configured to automatically generate a report and send this report to a server 120 at specific intervals.

[0085] After the transmission process has been initiated, output module 310 (604) copies the outgoing data element to the subordinate arrangement 110. As described above, output module 310 can also copy the outgoing data element to the plug-in card 206. In other embodiments, output module 310 copies the outgoing data element to the subordinate arrangement 110 and the plug-in card 206 before the transmission process is initiated.

[0086] In one embodiment, the output module 310 monitors the host computer 102 and determines whether the transmission operation fails or succeeds. The output module 310 can monitor the host computer 102 for transmission operations indicating that the transmission operation for the outgoing data element either failed or could not be executed. If the transmission operation for the outgoing data element is successful, the synchronization module 316 provides a success message to the subordinate arrangement 110. The synchronization module 316 can further mark the outgoing data element on the host computer 102 as transmitted. In response, the transmit module 510 on the subordinate arrangement 110 deletes the data element from the transmission queue on the subordinate arrangement 110.

[0087] If the transmission fails, however, output module 310 (608) notifies the subordinate assembly 110 that the transmission failed. In one embodiment, output module 310 provides a notification to the transmit module 510 on the subordinate assembly 110. In response, output module 510 (618) generates a subordinate transmission on the subordinate assembly 110. The subordinate transmission instructs the subordinate assembly 110 to send the outgoing data element via the second network connection 114.

[0088] In one embodiment, 620, the verification module 512 determines whether the subordinate transmission operation was successful. If the subordinate transmission operation was successful, 628, the verification module 512 notifies the host computer 102. The acknowledgment module 312 receives the acknowledgment message provided by the verification module 512 when the subordinate arrangement 110 successfully performs the subordinate transmission operation. In response, 610, the acknowledgment module 312 determines that the subordinate transmission operation was successful, and 632, the synchronization module 316 marks the data element as transmitted.

[0089] If the subordinate transmission operation was unsuccessful, the subordinate arrangement 110 continues attempting to send the outgoing data element via the second network connection 114. In one embodiment, the subordinate retry module 514 determines before each attempt whether the host computer 102 has successfully transmitted the outgoing data element via the first network connection 108. The subordinate retry module 514 can perform this determination by checking whether the synchronization module 316 has sent a success message indicating that the outgoing data element has been successfully transmitted to the host computer 102. Alternatively, the subordinate retry module 514 can query the host computer 102 and request a status update for the outgoing data element before each new transmission attempt.

[0090] If the host computer 102 successfully sends the outgoing data element, module 630 on the child array 110 deletes the data element from the send queue on the child array 110. At this point, the child array 110 does not make any further attempts, since the outgoing data element was successfully sent. If the child retry module 514 determines (622) that the host computer 102 did not successfully send the outgoing data element, module 624 creates a new child send operation for the outgoing data element.

[0091] If the verification module 512 determines 626 that this new child send operation is successful, the send module 630 deletes the item from the send queue. If the child send operation is unsuccessful, the process of determining whether the host computer 102 has sent the outgoing data item, making an additional attempt to send the outgoing data item, and determining whether the additional attempt is successful is repeated.

[0092] As shown in steps 610, 612, and 614, a similar process takes place on the host computer 102. Similar to the process described in connection with the subordinate assembly 110, the retry module 314 makes additional attempts to send the outgoing data element if the first attempt on the host computer 102 fails. In one embodiment, the retry module 314 generates a new send operation until the acknowledgment module 312 has received the acknowledgment message from the subordinate assembly 110 indicating that the subordinate assembly 110 has successfully sent the outgoing data element over a second network connection 114. In an alternative embodiment, the retry module 314 requests an update before generating a new send operation.

[0093] If the child array 110 successfully sends the outgoing data element, the synchronization module 316 marks the outgoing data element as sent on the host computer 102. If the child array 110 has not yet successfully sent the outgoing data element, the retry module 414 (612) generates a new send attempt for the outgoing data element. If this new send attempt also fails, the process of verifying and re-sending is repeated until either the host computer 102 or the child array 110 sends the outgoing data element. Once the data element has been successfully sent, the synchronization module 316 provides the corresponding notification, and the outgoing data element is marked as sent.

[0094] Fig. Figure 7 shows an exemplary flowchart illustrating an embodiment of a method 700 for receiving incoming data elements according to the present invention. As shown in Fig. Figure 6 shows the left side of the flowchart, activities on the host computer 102, and the right side shows activities on the subordinate arrangement 110.

[0095] The procedure 700 begins with the host computer 102 receiving an incoming data element 702. The input module 318 obtains a unique identifier for the incoming data element 704 as described above. The child arrangement 110 receives 712 incoming data elements and obtains 714 unique identifiers for each incoming data element in a similar manner. The child arrangement 110 then sends 716 the unique identifier to the host computer 102.

[0096] In one embodiment, the input module 318 requests one or more unique identifiers for data elements received by the subordinate assembly 110. The subordinate assembly 110 can also actively send the unique identifiers to the host computer 102. The input module 318 can define what the unique identifier comprises and request the identifying data for incoming data elements on the subordinate assembly 110. For example, the input module 318 can request the day / time / sent email header and the subject line for emails received by the subordinate assembly 110. In such an embodiment, the subordinate assembly 110 requires only limited information regarding the synchronization of incoming data elements, as long as it can respond to requests for data from the host computer 102.

[0097] The input module 318 compares the unique identifiers received by the subordinate arrangement 110 with the unique identifiers for incoming data elements received by the host computer 102. If the subordinate arrangement 110 has incoming data elements that the host computer 102 does not, the input module 318 requests these data elements. In one embodiment, the input module 318 requests data elements that are associated with unique identifiers for incoming data elements received by the subordinate arrangement 110 but not by the host computer 102.

[0098] In response, the subordinate arrangement 110 sends the incoming data elements to the host computer 110. As a result, the host computer 102 is kept up-to-date with incoming data elements, even if it does not have an active network connection, as long as the subordinate arrangement has an active network connection. In addition, the present invention ensures that only those elements not received by the host computer 102 are sent to the host computer 102 by the subordinate arrangement 110. This reduces instances of duplication and makes the arrangement more manageable and secure.

[0099] In one embodiment, the input module 318 marks those incoming data elements received by the subordinate arrangement 110 for replacement when the host computer 102 directly receives these incoming data elements. This can be achieved in one embodiment by maintaining a table of unique identifiers for these incoming data elements received by the subordinate arrangement 110. Upon receiving a data element, the input module 318 derives a unique identifier and compares it with those in the table. If the unique identifier is found in the table, that particular incoming data element is replaced, and the entry is removed from the table.

[0100] The present invention can be embodied in other specific forms without deviating from its spirit or essential characteristics. The described embodiments are to be regarded in all respects as illustrative only and not as limiting. The scope of protection of the invention is therefore characterized rather by the appended claims than by the preceding description. All further developments that are within the scope of meaning and equivalence of the claims are to be included within their scope of protection.

Claims

[1] A computer program which, when executed on a computer, causes the computer to: a subordinate assembly is notified of a failed transmission operation in response to a host computer running separately from the subordinate assembly failing to send an outgoing data element over a first network connection, wherein the subordinate assembly is configured to generate a subordinate transmission operation for the outgoing data element over a second network connection in response to receiving the notification of the failed transmission operation; a new send operation for the outgoing data element on the host computer over the first network connection is generated in response to the failure of the lower order to successfully send the outgoing data element; and The subordinate arrangement notifies of a successful transmission operation in response to the host computer successfully executing the new transmission operation, which sends the outgoing data element over the first network connection. [2] Computer program according to claim 1, further comprising causing the host computer to receive an acknowledgment message from the subordinate arrangement, wherein the subordinate arrangement sends the acknowledgment message in response to the subordinate arrangement successfully sending the outgoing data element. [3] Computer program according to claim 1, wherein the subordinate arrangement is configured to stop generating subordinate transmission operations for the outgoing data element on the second network connection in response to receiving notification of a successful transmission operation from the host computer. [4] Computer program according to claim 1, wherein the new transmission process is further generated in response to either a change in the status of the host computer or a change in the state of the network connection of the host computer. [5] Computer program according to claim 1, further comprising causing the host computer to verify, prior to generating the new transmission process, that the subordinate arrangement has failed to successfully send the outgoing data element. [6] Computer program according to claim 1, further comprising causing the host computer to mark the outgoing data element as sent in response to one of: the host computer sending the outgoing data element over the first network connection and the subordinate arrangement sending the outgoing data element over the second network connection. [7] Computer program according to claim 1, wherein the subordinate arrangement is communicatively connected to the host computer by means of a plug-in card which is separate from and directly connected to the host computer, and wherein the plug-in card is communicatively connected to the subordinate arrangement by means of a Bluetooth connection. [8] Computer program according to claim 7, wherein the plug-in card sends data to the subordinate arrangement and receives data from the subordinate arrangement in response to the host computer being in a powered-off state. [9] Computer program according to claim 1, further comprising causing the host computer to: determines whether the subordinate arrangement has received incoming data elements that the host computer did not receive over the first network connection; and The subordinate arrangement receives the incoming data elements that the host computer has not received. [10] Computer program according to claim 9, further comprising determining whether the subordinate arrangement has received incoming data elements that the host computer has not received: Obtaining a set of unique identifiers for incoming data elements sent to the host computer via the first network connection; Obtaining a set of unique identifiers for incoming data elements sent to the host computer via the second network connection; and Received, from the subordinate arrangement, of incoming data elements that have a unique identifier that is not present in the set of unique identifiers for incoming data elements of the host computer. [11] Computer program according to claim 1, wherein the outgoing data element is of an email, a calendar event, and a software update. [12] Computer program according to claim 1, wherein the subordinate arrangement is connected to the host via a Bluetooth connection. [13] Computer program according to claim 1, wherein the computer-readable program is executed on a member of the group consisting of the host computer and an expansion card. [14] Device for reducing the duplication of data transmissions in a multi-transmission environment, comprising: an output module configured to notify a child assembly of a failed send operation in response to a host computer running separately from the child assembly failing to send an outgoing data element over a first network connection, wherein the child assembly is configured, in response to receiving the notification of the failed send operation, to create a child send operation that instructs the child assembly to send the outgoing data element over a second network connection; an acknowledgment module that is configured to receive an acknowledgment message from the subordinate arrangement in response to the subordinate arrangement successfully executing the subordinate sending operation in such a way that the outgoing data element is sent over the second network; a rerun module that is configured on the host computer to generate a new send operation for the outgoing data element while the acknowledgment module does not have an acknowledgment message for the outgoing data element; and a synchronization module that is configured to provide a success message to the subordinate arrangement indicating a successful sending operation of the outgoing email by the host computer, wherein the subordinate arrangement is configured to cease generating subordinate sending operations for the outgoing data element in response to receiving the success message. [15] Device according to claim 14, wherein the synchronization module is further configured, in response to the confirmation module receiving the confirmation message, to mark the outgoing data element on the host computer as sent. [16] Device according to claim 14, wherein the device further comprises an input module which is configured: to obtain a set of unique identifiers for one or more incoming data elements sent to the host computer; to compare one or more unique identifiers for one or more incoming data elements sent to the subordinate arrangement with the set of unique identifiers for the one or more incoming data elements sent to the host computer; and to receive data elements received by the subordinate arrangement that have a unique identifier that is not present in the set of unique identifiers for incoming data elements of the host computer. [17] Device according to claim 14, wherein the repeat-run module continues to generate the new transmission process in response to one or more of: The host computer detects a connection to a network; The host computer enters a powered-on state; and the expiration of a predetermined waiting period. [18] Device comprising: a host computer that has: a first network connection that connects the host computer to a first network for communication; a first synchronization device which includes: an output module that is configured to notify a subordinate arrangement of a failed transmission operation in response to the host computer's failure to send an outgoing data element over the first network; an acknowledgment module that is configured to receive an acknowledgment message from the subordinate order in response to the subordinate order successfully sending the outgoing data element over a second network; a retry module that is configured to resend the outgoing data element on the host computer in response to the acknowledgment module not receiving the acknowledgment notification for the outgoing data element; and a synchronization module that is configured to provide a success message to the subordinate arrangement in response to a successful transmission of the outgoing data element by the host computer; wherein the subordinate arrangement is executed separately from the host computer and features: a second network connection that connects the subordinate arrangement to the second network for communication; a support device which features: a sending module that is configured to generate a subordinate sending operation for the outgoing data element over the second network in response to receiving a notification of a failed sending operation on the host computer from the output module; a verification module that is configured to send the confirmation message to the host computer in response to the fact that the subordinate arrangement successfully sends the outgoing data element over the second network; a subordinate retry module that is configured to resend the outgoing data element to the subordinate order in response to the subordinate send failure and also in response to the subordinate order not receiving the success message. [19] Device according to claim 18, wherein the repetition module is further configured to continue to send the outgoing data element again until a successful transmission of the outgoing data element by the host computer and receipt of the confirmation message by the confirmation module. [20] Device according to claim 18, further comprising a plug-in card configured to communicate with the host computer via a direct connection and to communicate with the subordinate arrangement. [21] Device according to claim 18, wherein the plug-in card sends data to the subordinate arrangement and receives data from the subordinate arrangement in response to the host computer being in a powered-off state. [22] Device for reducing the duplication of data transmissions in a multi-transmission environment, comprising: an output module that is set up: to detect a sending process of an email user intermediary that runs on a host computer and instructs the host computer to send an outgoing email via an initial network connection that connects the host computer to an initial network; to copy the outgoing email to a subordinate arrangement running separately from the host computer, which is connected to the host computer and is connected to a second network via a second network connection; to monitor for one or more transmission processes that indicate that the sending process of the outgoing email on the host computer has either failed or been delayed; to send a transfer request to the subordinate arrangement in response to the occurrence of one or more transfer operations, wherein the subordinate arrangement is configured to send the outgoing email in response to receiving the transfer request; a confirmation module, configured to receive a confirmation message from the subordinate order in response to the subordinate order successfully sending the outgoing email; and A retry module is set up in which the email user intermediary creates a new sending process for the outgoing email on the host computer while the confirmation module does not have the confirmation message for the outgoing email. [23] Device according to claim 22, further comprising a synchronization module configured to provide a success message to the subordinate arrangement indicating a successful sending operation of the outgoing email by the host computer, wherein the subordinate arrangement is configured to delete the outgoing email from a sending queue in response to receiving the success message. [24] Device according to claim 23, further comprising an input module which is configured as follows: to obtain a set of unique identifiers for one or more incoming emails sent to the host computer; to compare one or more unique identifiers for one or more incoming emails sent to the subordinate arrangement with the set of unique identifiers for the one or more incoming emails sent to the host computer; and to receive emails received by the subordinate order that have a unique identifier that is not in the set of unique identifiers for incoming emails of the host computer.

Citation Information

Patent Citations

  • Inter-working mesh telecommunications networks

    US20030031124A1

  • Handover between a cellular system and a wireless local area network

    US20040023669A1

  • Method and system for n-way synchronization with partial or full content

    US20060018270A1

  • System selection method and arrangement for mobile wireless communication devices

    US20070223516A1

  • Method and system for distributing mobile book messages

    US20080070526A1