Method of background downloading of information from a computer network6769019Abstract Information is conventionally downloaded from a computer network to a computer operated, by a user, such as when the user is surfing the Internet. Downloading of information is enhanced by downloading addictional information selected by the user during idle times when the conventionally downloaded information is not being downloaded. The additional information may comprise web pages or other information previously selected by the user, which is downloaded in the background during the idle times. A graphic user interface is provide for accepting user selections of the addictional information, which may be displayed in a browser connected to the graphic user interface. The additional information is cached at the user's computer and can be displayed at time selected by the user. Claims What is claimed is: Description FIELD OF THE INVENTION
TABLE 1
Entity Name Description Attributes
Browser 62 A Web browser in the Browser Type + Browser
user's machine like Host Name + Browser
Netscape Navigator or Host Address + Host Port
Internet Explorer #
User 304 The user of the invention None
Invention Web The server providing the SMN Host Name + SMN
Server 302 advertising banners and Host Address + SMN Port
receiving/processing Q- #
Tracks data
Requested Web The server contacted by Server Host Name +
Server 306 the invention for Server Host Address +
background download Server Port #
Invention The container segment of None
Interface 404 the invention responsible
for collecting user-
generated stimuli.
Invention The kernel of the
Engine 400 invention consisting of
HTTP Clients responsible
for background download/
Q-Tracks info upload and
resource managers.
The handshaking signals associated with the process of inter-entity communication of the modules shown in FIG. 9 are described in Table 2 below.
TABLE 2
Signal Name Description
Br_url _req 312 URL request issued by the browser client
Br_cache_data 314 Cached Data sent to the browser by Invention
Engine for display
Ad_bnr_req 324 Request from the Invention Interface to the
Invention Web Server for advertising banners
Q_trk_send 326 Upload the Q-Tracks info from the Invention
engine to the Invention Web Server
Ad_bnr_send 328 Advertising banners sent from the Invention
Web Server to the Invention Interface
page_req 330 URL request from the Invention Engine to the
Requested Web Server
page_sent 332 The hypertext document sent by the Requested
Web Server to the Invention Engine
url_req 320 Forwarding the URL request by the interface to
the Invention Engine to activate the BITE
Client
piw_req 322 Forwarding the Q-Links display request by the
Invention Interface to the Invention Engine for
data retrieval from the cache followed by
transmission to the browser.
d_d_req 316 Reception of the "drag-and-drop" event fired
by the user.
piw_data_req 318 Reception of the Q-Links display request fired
by the user.
The key element of the invention is a BITE Client 408, which is HTTP 1.1 compliant software and instrumental in executing the background download process. The flow diagram for the model along with a host of structures interacting with the BITE Client 408 is shown in FIG. 10. When the process is activated by a drag-&-drop (D&D) request, the BITE Client 408 checks for an idle TCP connection, waits in a loop for a free slot, connects to the requested Web Server, fetches data, and stores the data in the invention's hard drive cache with proper file structure. The invention essentially consists of two major components with the following specifications: The first component is an Invention Interface 404. This component is the implementation of the user interface acting as a container onto which users can D&D hyperlinks. The container carries the sole responsibility of trapping all user interactions with the system and invokes the appropriate entity based on the user-generated stimulus. The second component is an Invention Engine 400. This component is the cross-platform implementation, and is the integral component of the invention. Its primary responsibility is to interact with the Invention Interface 404 to take relevant actions based on the requests passed by this component. The following is a summary of the handshaking signals between the Invention Interface 404 and the Invention Engine 400: Drag and Drop Request; Get Drop Status; Manual deletion request (URL); Flag/Unflag URL (URL); Invoke auto-deletion; Update Preference file; Get local cache path for Q-Link (URL); Get the list of Q-Links; Get ImageMap URL list; Put ImageMap URL list; and, Give Cache Full Alert. The functionalities of the Invention Interface 404 are as follows: The Invention Interface 404 collects stimulus from the browser 62 in the form of D&D hyperlinks and invokes background download. Upon the receipt of a URL request for secondary downloading, the Invention Interface 404 determines the nature of the request string as one of the following: Text Link, Image Link, Image Map (as discussed in greater detail below). In the event it detects the request as an image map (i.e. a graphic containing multiple links), the Invention Interface 404 collects the array of URLs embedded in the element, displays the list to the user for selection, and passes the selected URLs onto a Queue Manager 406. The Invention Interface 404 also tracks user movements for generating Q-Tracks information both for Q-Links, and Q-Touch pages (as discussed in greater detail below). The Invention Interface 404 gathers delete requests from the user. The user is given the option to manually delete the contents associated with a link downloaded in the background. If no manual deletions are performed, the Invention Interface 404 checks for the "Cache Full" condition before issuing a secondary request. If a "Cache Full" alert is received from the Cache Manager 410, the container prompts the user to adopt one of four options to clean up the existing cache. If no "Cache Full" alert is received, the Cache Manager 410 invokes an automatic deletion process to delete a set of links based on a FIFO algorithm (as discussed in greater detail below). The Invention Interface 404 receives stimuli from the user for display of cached Q-Links in the open instance of the browser 62. When the user selects a link from the Q-Links list 261 (FIG. 8) displayed in the Maximized Graphical Interface 251 (FIG. 8), the Invention Interface 404 produces the local cache path for the specified link by consulting the contents of the log file maintained by a Cache Manager 410. The Invention Interface 404 interacts with the BITE Client 408 for invoking background downloads. The Invention Interface 404 interacts with the Cache Manager 410 for retrieving data from the cache to display in the browser 62. The cached data may include a Q-Link or an advertising banner. The Invention Interface 404 interacts with the Browser 62 for "Help" and other Invention Interface buttons (see FIG. 16). The Invention Interface also interacts with a Q-Tracks Task Manager 412 for archiving Q-Tracks information. The BITE Client 408 is a HTTP 1.1 complaint client capable of generating HTTP requests to Web servers 306 (see the process in FIG. 9, 330) for enabling background downloading. The BITE Client 408 enables background downloading by passing the HTTP Request to an Invention Gateway 402. When the BITE Client 408 receives data from the requested Web server it invokes the Cache Manager 410 for their storage 430. The BITE Client 408 consults a Connection Manager 418 to get the status of the primary connection 428. If the primary connection is active, it suspends the BITE operation, waits in a loop for a free TCP connection, and resumes the background download once the primary request has been completely served. The BITE Client 408 consults the Queue Manager 406 for receiving URL requests 432 from the user. The BITE Client 408 waits in a loop for new URL requests 432. The Cache Manager 410 is the basic memory manager entity in the whole design which interfaces with all HTTP Clients for storage of data. All background data is downloaded to a cache on the hard drive of the user's computer. The Cache Manager 410 performs all Cache Management-related tasks, such as storing data in appropriate paths, logging, deleting files, etc. The Cache Manager 410 stores the resources obtained from the requested Web Server in a unique local path of the user's machine. The Cache Manager 410 maintains a log book of mapping between the downloaded URL (entry in Q-Links list) and the local path in the cache on the hard drive of the machine. The Cache Manager 410 deletes all files associated with a given download (URL) once a delete request is passed to it. The Cache Manager 410 also keeps track of the total hard drive consumption of the Cache 420. It sends a "Cache Full" alert once the total storage exceeds a certain threshold. The Cache Manager 410 also indirectly interacts with the BITE Client 408, a Q-Tracks Client 434, and a Q-Touch Client 438. The Q-Touch information is stored within the Cache 420 according to the Cache Manager 410. The Q-Tracks information is also stored within the Cache 420 according to the Cache Manager 410. Whenever a secondary download request is initiated by the user, the Invention Interface 404 consults the Cache Manager 410 (via the Queue Manager 406 and the BITE Client 408) to determine the feasibility of the new download, i.e., whether the current cache consumption is within the threshold of the total cache capacity. If a "Cache Full" condition is detected, the invention prompts the user with the following options for enabling the current download: 1. Cancel all flags in Q-Links list; 2. Go through Q-Links and cancel selected flags; 3. Increase your storage limit; 4. Ignore the message. The algorithm for detecting "Cache Full" is given below: if (currentCacheSize>=(totalCacheSize-CACHE_THRESHOLD)) {return cacheFull; }else return cacheLeft; If the user selects option 1, cancel all flags in Q-Links list, the Cache Manager 410 invokes its auto-deletion mechanism to generate cache space for accommodating the new download. The CACHE_THRESHOLD is defined as the minimum residual memory kept as a safety margin. The NORM_CACHE_RESIDUE is defined as the maximum memory that can be released through auto-deletion. The steps in the algorithm for auto-deletion are given below: 1. Generate a list of Unflagged URLs from Q-Links list; 2. Sort the URLs based on the "Last View Time" field stored in the cache log file in descending order of magnitude, i.e., the first element of the list contains the URL which was Least Recently Viewed (LRV); 3. Delete all the files associated with the first element of the list; 4. Compute the current cache size, compute the quantity (total cache size B current cache size) and check whether it exceeds NORM_CACHE_RESIDUE; 5. If the answer to (4) is "No", goto step (3); 6. Else stop. The parameter NORM_CACHE_RESIDUE is kept for fine-tuning the auto-deletion algorithm to maintain a value which is neither too large or too small. A large value for the parameter will result in deletion of more Q-Link URLs than the user might have desired. A smaller value, on the contrary, will result in frequent "Cache Full" messages, and would have an unsettling effect on the user. The Queue Manager 406 gets D&D requests from the Invention Interface 404 and stores them in the queue to be used exclusively in connection with BITE downloading. The Queue Manager 406 interacts with the Invention Interface 404 and the BITE Client 408. The Connection Manager 418 is the priority resolver for the whole system. Once it receives any connection request from any client (the term "client" is also used in its more technical mode to describe the individual components of the invention that issue HTTP requests over the network 56), it checks the status of other connections to find a free slot in the hierarchy. Once available, it checks whether any other connection with higher priority exists at that moment. If no, the connection is established. Once established, the connection is maintained until another request of higher priority arrives, at which point the previous connection is suspended to allow the new request to be processed. The priority scheme for the Connection Manager is as follows in descending order of priority: 1. Primary download request issued by the browser 62; 2. BITE download request activated by D&D; 3. Advertising banner downloads from the Invention Web Server 302; 4. Q-Touch page download for "Q-Touch 1"; 5. Q-Touch page download for "Q-Touch 2"; 6. Q-Touch page download for "Q-Touch 3"; 7. Q-Tracks information upload from the invention to the Invention Web Server 302. The Invention Gateway 402, as shown in FIG. 10, sits at the topmost level of the architecture and is responsible for routing all HTTP requests. All requests issued from all clients (the term "client" is also used in its more technical mode to describe the individual components of the invention that issue HTTP requests over the network 56), are routed through this entity for connection with the Requested Web Server 306, as shown in FIG. 9. The Invention Gateway accepts HTTP requests from the clients (the term "client" is also used in its more technical mode to describe the individual components of the invention that issue HTTP requests over the network 56), and passes the Request Header to the Requested Web Server 306. After receiving a block of data from the Requested Web Server 306, it tunnels the information to the appropriate client (the term "client" is also used in its more technical mode to describe the individual components of the invention that issue HTTP requests over the network 56), without manipulating it in any way, thereby ensuring no additional delay in the communication path. A Task Management System 422, as depicted in FIG. 10, is one of the key elements in the whole design of the invention. In contrast with the functionalities of the primary (Browser 62) and secondary (BITE 408) download agents, the network operations for the remaining clients--the Q-Tracks Client 434 and the Q-Touch Client 438--are not invoked by the user explicitly. The operations are only activated automatically when there is need to do so. As an example, the Q-Touch Client 438 invokes a download procedure for retrieving a Q-Touch page from a Requested Web Server 306, as seen in FIG. 9, only after the passage of a pre-determined period of time or other sets of parameters (as discussed in greater detail below). The Task Management System 422 is an entity which continuously runs in the background to check whether there exists any need for activating a data transfer process. If yes, it consults the Connection Manager 418 to resolve priority of downloads and invokes the relevant client (the term "client" is also used in its more technical mode to describe the individual components of the invention that issue HTTP requests over the network 56) responsible for the data transfer. The Task Management System 422 also interacts with the Q-Tracks Client 434, as shown in FIG. 10, for uploading user interaction data to the Invention Web Server 302. The Task Management System 422 also interacts with the Q-Touch Client 438 for periodically downloading the three favorite Web pages as specified by the user. The Task Management System 422 interacts with the Connection Manager 418. The basic components associated with the Task Management System 422 are a Task Scheduler 416, a Q-Touch Task Manager 414 and the Q-Tracks Task Manager 412 for the Q-Touch Client 438 and the Q-Tracks Client 434. The Task Scheduler 416 is a built-in entity in the Task Management System 422 whose sole responsibility is to communicate with the Connection Manager 418 to gather the status of the primary and the secondary connections, as depicted in FIG. 10 at 428. If both the connections are idle at any point of time, it polls the Task Managers associated with each HTTP Client other than BITE (Q-Touch, and Q-Tracks [438 & 434 respectively]) The basic flow of a Task Manager is shown in FIG. 11. At the time of the activation of the invention, a Task Manager determines the necessity for any network activity for the set of clients 500 under its supervision (Q-Touch, and Q-Tracks Task Managers 414 & 412, respectively). The functionality of the two Client Task Managers is depicted in FIGS. 6 and 7. The Q-Touch Task Manager 414 and the Q-Tracks Task Manager 412 can be described by the following steps: Client Task Managers 500 are invoked by the Task Scheduler 416 when the TCP line is free; They consult a Client Status File 502 to fetch the Date Time Stamp (DTS) when the "Last Download" has occurred 510. They compute the current time interval as (Current DTS--Last DTS) and compare the result with a preset threshold (the preset thresholds for each of the clients are as follows: Q-Touch Task Manager 414--at the beginning of each session and with content update; and, Q-Tracks Task Manager 412--every 36 hours). If the interval exceeds the threshold, the appropriate Client Task Manager (either the Q-Touch Task Manager 414 or the Q-Tracks Task Manager 424) issues a network activity. The Client Task Manager in question checks with the Connection Manager 418 in a loop for higher priority requests. If it detects any, the ongoing network activity is suspended and the other request is served. The suspended activity will resume only when all other higher priority requests have completed their service. In order to determine if a content change has occurred for Q-Touch updating, the Q-Touch Task Manager 414 has an additional set of routines it must perform. In addition to consulting the Client Status File 502 to check the "Last Download," it detects the "Last-Update" Date-Time stamp from the Requested Server 306 associated with the Q-Touch page. HTTP standards provide a mechanism to extract the Header information from the Requested Web Server 306 in the form of a "HEAD" request. A typical response from a Web server is shown below: HTTP/1.0 200 OK Server: Netscape Enterprise/2.01 Date: Wed, 03 Dec 1997 15:24:56 GMT Last-Modified: Wed, 03 Dec 1997 14:12:43 GMT Content-type: text/html Content-length: 15236 By comparing this "Last-Update" information with the "Last Download" stamp in the Client Status File 502 for the particular Q-Touch page, the application can detect the necessity to update the content from the Web server. However, not all Web servers provide the information in the "HEAD" request, resulting in design of additional fall-back action block to decide whether or not to update the Q-Touch page. HTTP standards also supply a facility by which the invention can explicitly request the "Last Update" information by looking into the Requested Web Server's 306 "If-Modified-Since" field. But even this field is sometimes inadequately maintained. In the instance that neither the "HEAD" request nor the "If-Modified-Since" request yields the information necessary to compute the difference between the "Last Update" and "Last Download," the invention adopts a final default mechanism to issue a "GET" request to fetch just the textual content of the requested page. If the size of the text file received differs from the size of the text file in the previously downloaded version, then it will proceed to issue a "GET" request for the entire page, based on the likelihood of a content update given that different text now exists on that page since the Last Download. As the downloading process of the system is preemptive and priority based, it follows that upon arrival of a higher priority request in the queue, the current process in service will be suspended until the other request has completed its service. The majority of HTTP clients (the term "client" is also used in its more technical mode to describe the individual components of the invention that issue HTTP requests over the network 56) operating in the system are invoked by the Task Management System 422, and they execute at a priority level lower than the primary and secondary clients. The user, however, is not aware of the other background downloads initiated and fulfilled by clients controlled by the Task Management System 422. Therefore, at the point of exiting from the application, it is likely that there will be pending processes belonging to one of those clients. A Process Manager is responsible for making sure that any pending requests which the system may have initiated are wrapped up before exiting the application, or are completed during the next session. It follows therefore that the Process Manager is a separate entity from the rest of the Invention Engine 400 which is invoked only when the user exits the application. The Process Manager is the entity which performs the following tasks: The Process Manager tracks a pending job, i.e., the last network activity which was suspended due to the user exiting the invention (the "Quit" operation); It identifies the HTTP Client associated with a pending job; It invokes a pending job when a suitable time slot is acquired; The Process Manager identifies the list of pending resources which need to be downloaded to complete a job and issues further HTTP requests, if any, to download the pending resources. III. Advertising Management System An Advertising Management System (AMS) of the invention essentially provides the opportunity for companies to advertise products and services on the interface of the system. The invention includes a platform where ad banner display, rotation, scheduling, metering, targeting etc. are integrated with the basic Web accelerator unit, without interfering with download requests issued by other clients (the term "client" is also used in its more technical mode to describe the individual components of the invention that issue HTTP requests over the network 56) The development of the AMS creates a unique networking environment between the end user and the Invention Web Server 302, enabling the seamless transfer of user-targeted advertising banners. The AMS provides online network delivery of user registration information to an Invention Back End. The information which is provided includes: user e-mail address with validation; Zip Code; state; country; non-disclosure flag; gender; age; browser choice. The AMS generates a unique profile and ID for the user of the invention. The AMS permits the background delivery of ad banners to the interface container at regular intervals of 2 minutes (thereby ensuring non-interruption of content viewing). The AMS allows for the transmission of ad interaction information from the client to Back End. The AMS delivers an advertiser's Web page to the open instance of browser following a click on the ad banner. The AMS provides for the default delivery of ad banners from a predefined storage area on the user's hard disk in the case of network failure/bottleneck during fetching of an ad from across the network. The AMS also can target ad banners based on demographic information and on web "surfing" patterns. The communication layer of the AMS between the invention client (the term "client" is used here to describe the software associated with the invention the resides on the user's machine) and its Web Server 302 is HTTP 1.1 compliant. The client side implementation is a cross-platform application and can work under any hardware environment (the term "client" is used here to describe the software associated with the invention that resides on the user's machine). The handshaking protocol between the client (the term "client" is used here to describe the software associated with the invention that resides on the user's machine) and Web Server 302 assumes the existence of a database server with the following parameters: a Valid Internet Address; a repository for ad banners, demographic information, and click information; an interface for designing a schedule for serving ads to the invention, and for presenting tables and graphs based on data reported back from the invention client (the term "client" is used here to describe the software associated with the invention that resides on the user's machine) to the Invention Web Server 302 regarding ad banner interactions. As shown in FIG. 12, an Ad banner fetch request is generated by the system timer at a regular interval of 2 minutes. An Ad Fetcher Thread 708 receives an interrupt from a Thread Timer 710. On reception of the interrupt, the Ad Fetcher Thread 708 issues an HTTP request 712 to the Invention Web Server 302 for an ad banner from its repository. The Invention Web Server 302 retrieves an ad banner from its local repository based on user-specific scheduling/targeting parameters. The Invention Web Server 302 sends ad banner data 714 to the Ad Fetcher Thread 708 of the invention client (the term "client" is used here to describe the software associated with the invention that resides on the user's machine). The client (the term "client" is used here to describe the software associated with the invention that resides on the user's machine), after receiving the banner over the network, stores the image file (usually animated GIF format, but all graphics formats are supported) in its preset directory, known as the Next Ad Cache 718. A Banner Display Manager 704 receives notification of the need to acquire a new ad banner from the Thread Timer 710, and then acquires the next banner from the Next Ad Cache 718. The Banner Display Manager 704 passes the ad to the Invention Interface 404 for display of the ad banner in the interface for the next two minute time slot. When the user clicks on a banner displayed in the Invention Interface 404, the Invention Interface 404 detects the event. On detection, it retrieves a Campaign ID) (CID) associated with the banner file. It transmits (722) the click information with CID as its parameter to the Invention Web Server 302 by invocation of a server specific CGI (common gateway interface). The Invention Web Server 302, upon receipt of the click information, stores it in the appropriate database table, and when requested by an advertiser via the Invention Web Server 302 interface, can produce tables and graphs detailing user response to the ad(s). As the network matures, this information will also be manipulated by the Invention Web Server 302 to target subsequent ad banners according to users' "surfing" patterns. The AMS design consists of two entities: the invention's ad management system 702 at the client end (the term "client" is used here to describe the software associated with the invention that resides on the user's machine), and an ad management database on the Invention's Web Server 302. FIG. 13 illustrates the handshaking protocols between these two entities, ensuring reliable data transfer, and the adoption of default activities in the event of network congestion/failure. The pseudocode for the protocol illustrated in FIG. 13 is described below. The parameters involved in the algorithm are presented in Table 3:
TABLE 3
Invention local repository (Default Ad :SMQ_LOCAL_REPOS
Cache)
Number of ad banners in the Default Ad :SMQ_AFS_SIZE (Set to
Cache 10)
File labeling for default ad banners :ad0 through ad9
CGI fired to fetch the ad banner URL :CGI_BANNER_REQUEST
from Back End
CGI fired to notify the Back End about :CGI_CLICK_INPUT
click on banner
Campaign ID for the advertiser 0 :AD_CID
Signal for successful execution of CGI :CGI_SUCCESS
Signal for failure in executing the CGI :CGI_FAILURE
Signal for successful fetching of ad banner :FETCH_SUCCESS
Signal for failure in fetching the ad banner :FETCH_FAILURE
Table 4 contains the methodology of the pseudocode.
TABLE 4
If(Timer detects end of present time slot)
Fire CGI_BANNER_REQUEST to the Invention back end;
If(CGI_SUCCESS)
Extract the ad banner URL from the response data;
Make HTTP request to Back end for fetching the ad banner file;
If(FETCH_FAILURE)
Generate a random number from 0-SMQ_AFS_SIZE (say i);
Choose the default ad banner as ad(i) under SMQ_LOCAL_REPOS;
Put it under the holding ad banner directory;
END.
Else if(FETCH_SUCCESS)
Store the ad banner under the holding ad banner directory;
END.
Else if(CGI_FAILURE)
Choose the same action block described above for
FETCH_FAILURE;
END.
END.
The client-side of the ad management system is implemented in the Java programming language. The AMS runs in parallel with the BITE Engine 408, responsible for serving the D&D requests, at an overall lower priority than the BITE Engine 408. The AMS is implemented as two cascaded components working in tandem. The first component is a listener module, which receives interrupts from the Thread Timer 710 every 120 seconds. Upon receipt of the interrupt, it invokes the second component, the Ad Fetcher Thread 708. The Ad Fetcher Thread 708 then fires the CGI labeled as CGI_BANNER_REQUEST, to the Invention Web Server 302. If it does not receive any response from the Invention Web Server 302 within a preset interval (25% of a 120-second slot), it times out the request. After timing the request out, it reverts back to the default action block and fetches an ad banner from the local ad banner repository (Default Ad Cache 706), labeled as SMQ_LOCAL_REPOS. If it receives a valid response from the Invention Web Server 302 in the predefined slot, it extracts the image URL from the data. It then issues an HTTP request to the server for fetching the ad banner over the network, following the same timeout policy as the handling of an HTTP request. After fetching the ad banner, it stores the image file in the Next Ad Cache 718. The Banner Display Manager picks up the image file from the Next Ad Cache 718 banner directory for display on the Invention Interface 404. As indicated in FIG. 12, the AMS works in parallel with the BITE Engine 400 at a lower priority. This mechanism ensures that the download times for D&D requests will not be affected in any appreciable way. IV. Q-Tracks The Q-Tracks Manager 802 is the entity of the invention that communicates with the Invention Web Server 302 to facilitate the delivery, measurement and reporting of interaction with the Q-Link and Q-Touch pages. The gathering of this information is important so as to allow content providers to gain access to data on how users are viewing their Web pages once they have been brought down from the Requested Web Server 306 into the cache on the user's hard drive 36 (where content provider server logs are no longer capable of tracking interaction since this interaction is taking place in the remote environment on the user's computer 12). In addition, as the popularity of the invention grows, Q-Tracks data will be used to target advertising based not just on users' demographic information, but also on their surfing patterns. The basic flow of events along with relevant entities is illustrated in FIG. 14. The Q-Tracks Manager 802 traps user-generated stimuli to produce interaction information on how the user views Q-Links pages and Q-Touch pages. The Q-Tracks Manager 802 keeps track of the following events issued by the Invention Interface 404 and the Invention Gateway 402: Drag and Drop request (Invention Interface 404); Q-Link Local Path request (Invention Interface 404); Further HTTP Request from the browser after displaying the Q-Link (Invention Gateway 402); and, Links activated from the current Q-Link displayed in the browser (Invention Gateway 402). By keeping track of the above mentioned set of events, the Q-Tracks Manager 802 collects the following information and stores them in separate Q-Tracks log files for Q-Links and Q-Touch pages: (1) Date Time Stamp of D&D' ed Q-Link; (2)Time Stamp of Q-Link/Q-Touch Page View Start; (3) Date Time Stamp of Q-Link/Q-Touch Page View End; (4) Links activated from Q-Link/Q-Touch Page (one layer only). This information is periodically sent to the Invention Web Server 302 which analyzes the data and provides statistics to various authorized groups (such as the content providers that host the pages) via its interface, and uses the data for targeting advertising. As described above, the invention controls the content downloaded to the user's computer by adopting a sophisticated priority schedule, and then assigning all HTTP requests with a slot in the hierarchy. The invention allocates bandwidth to the highest priority item. The priority schedule is as follows: 1. Primary download request issued by the browser 62; 2. BITE download request activated by D&D; 3. Advertising banner downloads from the Invention Web Server 302; 4. Q-Touch page download for "Q-Touch 1"; 5. Q-Touch page download for "Q-Touch 2"; 6. Q-Touch page download for "Q-Touch 3"; 7. Q-Tracks information upload from the invention to the Invention Web Server 302. If the invention is downloading or uploading information, and a request is made by a higher priority item to use the bandwidth, the invention stops the exchange of data and allows the higher priority item to have access to the connection. When the higher priority data exchange is completed the lower priority item resumes its data exchange. V. Prioritization FIG. 15 is a representative flowchart for the Prioritizing Process. When the user drags-&-drops a link (Step 600) the HTTP request is passed through the Queue Manager 406 (Step 602) to the BITE Client 408 (Step 604) and is prepared for downloading. The invention then performs a test (Step 606) to determine whether a higher priority item is using the bandwidth. If a higher priority item is using the bandwidth then the invention will loop to re-perform the test in Step 606 until the data transfer of the higher priority item is complete. When it is complete, and if in a repeat of the test in Step 606 no higher priority item is using the bandwidth, the invention establishes a secondary link between the client and the Requested Web Server (Step 608) (if a lower priority item is transferring data, then it is stopped to let the higher priority item perform a transfer. Upon completion the lower priority item will resume its transfer). Once a connection with the Requested Web Server is established, the invention performs the test at Step 610 to again check to see if an item of higher priority is in the queue. If a higher priority item does exist, the invention loops the suspended request until no other higher priority item remains. Once no other higher priority item remains, the data associated with the requested URL is then downloaded in packets (as discussed below) from the Requested Web Server 306 (Step 612). Between each packet of data, the invention performs the test at Step 614 to again check to see if an item of higher priority is in the queue. If a higher priority item does exist, the invention loops the suspended request until no other higher priority item remains. Once no other higher priority item remains, the invention continues to download the suspended data from the previously requested URL, proceeding in the same data packet manner with constant checks for higher priority items. If the invention does not receive a higher priority request in any of the tests at Step 614, then the download continues uninterrupted until completion in Step 616. Once the download of the data for the requested URL is complete, the invention passes the downloaded data to the Cache Manager 410 (Step 618) and resets the BITE connections for subsequent requests. It should be noted that FIG. 15 is used to depict the invention's priority schedule. The diagram does not display certain elements and interactions detailed in other areas of this specification. The HTTP request issued by the BITE Client 408 and routed through the Invention Gateway 402 fetches the hypertext document (.html file) associated with the requested URL. After the file has been fetched from the Web Server 302 or 306, the HTML Resource Parser parses the file to generate a list of resources embedded in the file. Once the resource list has been prepared by the parser, the client starts issuing further HTTP requests to the server for fetching them. The current implementation aims at parsing the html file to extract the following resources: Images in .gif format; Images in .jpg format; and, Applet classes with extension class. The HTML Title Parser accepts the html file fetched from the server, and searches for <title>tag in the file to extract the Title information of the document. Once extracted, the URL of the document and its title will be displayed in the Q-Links list. A Client does not check the status of the primary connection once it has issued its own URL request. Hence, any primary request made during this timeframe will be delayed for microseconds until the secondary connection for a packet of data has been established or a network error has occurred. During the process of data transfer between the Requested Web Server 306 and the BITE Client 408, the primary connection status is checked after receiving a packet of data from the server. Any primary request made in this time frame will remain queued for microseconds until the packet has been received. VI. Operational Modules The operational modules associated with the BITE Client 408 are listed in Table 5 below with a description of their respective functionality and interfaces:
TABLE 5
Name Parameter Description
Public void urlRequest is the Internet The function forms the ker-
downloadUrl- address of the file which nel of the BITE Client 408
ToCache needs to be downloaded in entity which is responsible
(String the background and is of for forwarding the HTTP
urlRequest) the form of: http://machine: request to the Invention
Port Number/filename. Gateway, fetching blocks of
data from the Requested
Web Server, checking the
status of the primary
connection after every
logical step, invoking the
Cache Manager for data
storage, updating all the
appropriate log files, reset-
ting the secondary status bit
after completion of down-
load, and then entering the
"listen" mode for more
HTTP requests from the
Queue Manager.
Private String urlRequest is the Internet The module parses the
serverName address of the file which parameter to extract the
(String needs to be downloaded in server name. If the
urlRequest) the background and is of urlRequest is of the form
the form of: http://machine: of: http://serverName:Port
Port Number/filename. number/filename, it parses
the string and returns
serverName.
Private int urlRequest is the Internet The module parses the
serverPort address of the file which parameter to extract the
(String needs to be downloaded in server port number. If the
urlRequest) the background and is of urlRequest is of the form
the form of: http://machine: of: http://serverName:Port
Port Number/filename. number/filename, it parses
the string and returns
serverPort.
Private String urlRequest is the Internet The module parses the
serverUrl address of the file which parameter to extract the file
(String needs to be downloaded in name in the server. If the
urlRequest) the background and is of urlRequest is of the form
the form of: http://machine: of: http://serverName:Port
Port Number/filename. number/filename, it parses
the string and returns
filename.
The operational modules associated with the Cache Manager 410 are described in Table 6:
TABLE 6
Name Parameter Description
public String URL of the background The module generates a
makeRoot- download. Returns local unique local cache path for
Directory path under which the the requested background
(String url) contents of the URL will be download and updates a log
stored. file which stores the unique
mapping between the URL
and its cache path.
public void The triplet stored in the The module updates the
updateCache- cache log corresponding to cache log by appending the
Log(String the background download. existing log file with the
path, String url, param 1: local cache path new entry corresponding to
int memory) param 2: corresponding the background download.
URL If the URL is supposed to
param 3: Total memory be http://www.intel.com/
consumed by the content of index.html, the local cache
the URL path as
c:.backslash.install.backslash.cache.backslash.
125.46 and the total
memory consumed as
54328 bytes, the log file
will be appended with the
entry http://www.intel.com/
index.html.vertline.
c:.backslash.install.backslash.
cache.backslash.125.46.vertline.54328.
public int The module returns the The module computes the
getCacheSize( ) total memory consumed total memory associated
by the cache. with all download processes
other than the one initiated
by the browser.
public int Returns 1 if the cache is This module calls the func-
isCacheFull( ) full, else returns 0. tion getCacheSize( ),
compares the return value
with the preset Cache
Storage Limit set by the
user and issues alert in case
the value comes within a
predefined threshold.
public void parameter #1 url is the URL Once a signal is generated
deleteCache- of the background down- to delete a previously
LogEntry load, parameter #2 is the downloaded URL, this
(String url, name of the log file which module deletes the entry in
String needs to be consulted. the log file corresponding
logfilename) to the specified URL.
public void parameter #1 url is the URL Once a signal is generated
deleteUrl- of the background to delete a previously
LocalFiles download downloaded URL, this
(String url) module deletes all the files
associated with the URL
and invokes deleteCache-
LogEntry(url) to delete its
entry in the log file.
public String parameter #1 url is the URL This module consults the
getUrlLocal- of a cached file. log file storing the mapping
Path(String between URLs and cache
url) file paths, and generates the
Local Cache path
corresponding to the URL
specified as input
parameter.
public void parameter #1 is an array of After downloading the file
makeDirectory resource files embedded in associated with the
(String[] a given html file, parameter requested URL, the file is
resource, int #2 is the number of parsed to generate a set of
numResource, elements in the array and resource files. The BITE
String parameter #3 is the local Client 408 then issues
rootPath) cache path for the html file. further HTTP requests to
fetch these resource files
and invokes this module to
make proper directory
structure to store all of
them. As an example, say
the file index.html
associated with the URL
http://www.intel.com/index.
html is stored in a local
cache path
c:.backslash.install.backslash.cache.backslash.987.65.backslash.
index.html. Assume that the
html file has the resource
A/prod/product.gif". Then,
this module will create a
directory
c:.backslash.install.backslash.cache.backslash.
987.65.backslash.prod to store the gif
file.
Public void parameter #1 url is the URL This module registers the
updateDTSFile of the background down- date and time correspond-
(String url, load, parameter #2 is the ing to a specific back-
String date stamp when the down- ground download in a cache
downloadDate, load has occurred and log file.
String parameter #3 is
downloadTime) the time stamp.
Public void None. Before the BITE Client 408
autoCache- connects to the Requested
Deletion( ) Web Server, it calls the
isCacheFull( ) routine to
check whether the storage
limit has been exceeded. If
the "Cache Full" condition
is detected, then this
module is automatically in-
voked to clean up space for
accomodating the new
download. The cleaning
up procedure is conducted
in the following fashion:
It finds the array of
unflagged URLs from the
cache log file It sorts the
array of URLs based on the
last view time It deletes
the first n (depending on
space needed) URLs from
the local cache by
invoking the module
deleteUrlCacheFile(url)
Public String parameter #1 url is the URL This module returns either
getUrlDate- of the background down- the date or the time stamp
Time(String load, parameter #2 is 0 for corresponding to the
url, int getting date and 1 for time. specified URL.
dateTimeFlag) The return parameter is a
string containing either date
or time depending upon the
value of the second input
parameter.
The operational modules associated with the Queue Manager 406 are described in Table 7 below.
TABLE 7
Name Parameter Description
public String[] parameter #1 is the path for This module returns the
readQueue the log file maintained by array of all queued requests
(String queue manager, parameter to the calling module.
logfilepath, #2 is the name of the log
String file) file which needs to be
consulted. The return
parameter is the array of
elements stored in the log
file (all the D&D requests
issued by the interface and
queued for future services)
public void parameter #1 url is the URL This module is invoked by
putRequest of the background the interface for queuing a
(String url) download request.
public void parameter #1 title of an This module receives the
putTitleData html page. title of an html document,
(String title) generates a tuple of the
form URL .vertline. Title and stores
it in a title log file.
public String None. This module is invoked by
getRequest( ) the BITE Client 408 to read
the top of the queue. It re-
turns null if the queue
is empty.
public void None. This module is invoked by
served- the BITE Client 408 after
Request( ) completing a background
download process. On
activation, it removes the
topmost element of the
current stack.
The operational modules associated with the Task Manager 422 are listed below in Table 8:
TABLE 8
Name Parameter Description
int Return parameter is 1 if line If both the primary and
isLineFree( ) free, else 0. secondary connections are
idle, the module returns 1,
else 0.
int 1 if ad download is This module calls
isAdDownload possible, else 0. isLineFree( ). If it returns 1,
( ) ad download is possible and
it returns 1. Else returns 0.
int 1 if Q-Tracks information This module consults the
isStatUpload( ) upload is possible, else 0. priority list for requests,
returns 1 if it is possible to
invoke Q-Tracks info
upload, else returns 0.
int 1 if Q-Touch page down- This module consults the
isSubscriber- load is possible, else 0. priority list for requests,
Download( ) returns 1 if it is possible to
invoke Q-Touch page
download, else returns 0.
int 1 if ad banner download is This module consults the ad
canAdDown- necessary, else 0. task manager's log file for
load( ) extracting DTS for last ad
download, checks whether
the time interval has
exceeded the preset limit.
Returns 1 if it is
necessary to invoke Ad
download, else returns 0.
int 1 if Q-Tracks upload is This module consults the
canStatUpload necessary, else 0. Statistics task manager's
( ) log file for extracting DTS
for last statistics info
upload, checks whether the
time interval has exceeded
the preset limit.
Returns 1 if it is necessary
to invoke stat. Info upload,
else returns 0.
Int 1 if Q-Touch site download This module consults the
canSubscriber- is necessary, else 0. Q-Touch task manager's
Download( ) log file for extracting DTS
for last download, checks
whether the time interval
has exceeded the preset
limit. Returns 1 if its
necessary to invoke new
download, else returns 0.
Public void parameter #1 is the instance This module updates the ad
updateAdLog of the current day. task manager's log file with
(Day newDay) the timestamp of the new
download.
Public void parameter #1 is the instance This module updates the
updateStatLog of the current day. stat. task manager's log file
(Day newDay) with the timestamp of the
new upload.
Public void parameter #1 is the instance This module updates the
updateSubsLog of the current day. subscriber task manager's
(Day newDay) log file with the timestamp
of the new download.
int getTime- parameter #1 is the instance This module computes the
Interval(Day of the start day. time interval (in days)
startDay) between the input para-
meter and the instance of
the current daystamp.
The operational modules associated with the Connection Manager 418 are shown in Table 9.
TABLE 9
Name Parameter Description
public int param #1: link status (0 for The module gets the status
getLinkInfo(int reset, 1 for set), return of the link specified by the
linkPosition) parameter is the link input parameter. Returns 1
number (0 for primary, 1 if the status is busy, else 0.
for secondary, 2 for ad)
public void param #1: link status (0 for The module modifies the
modifyLink- reset, 1 for set), param #2: status of the link specified
Info(int link number (0 for primary, by the input parameter
linkStatus, int 1 for secondary, 2 for ad)
linkPosition)
public void None. Sets the primary connection
setPrimaryInfo status in the connection
( ) manager's log file.
public void None. Resets the primary
resetPrimary- connection status.
Info( )
The operational modules associated with the Invention Gateway 402 are the HTTP Connection and the HTTP Response. The HTTP Connection implements http protocol requests; it contains most of HTTP/1.1 and is unconditionally compliant. Redirections are automatically handled, and authorization requests are recognized and handled via an authorization handler. Only full HTTP/1.0 and HTTP/1.1 requests are generated. HTTP/1.1, HTTP/1.0 and HTTP/0.9 responses are recognized. There are several methods for each request type; however the general forms are: Head ( file [, form-data [, headers]]; Head (file [, query [, headers]]); Get ( file [, form-data [, headers]]); Get (file [, query [, headers]]; Post (file [, data [, headers]]); Put ( file [, data [, headers ]]); Delete (file [, headers]); Options (file [, headers]); and Trace ( file [, headers]). The HTTP Response consists of the following elements: (1) public final int getStatusCode( ) throws IOException which gives the status code for this request. These are grouped as follows: 1xx--Informational (new in HTTP/1.1); 2xx--Success; 3xx--Redirection; 4xx--Client Error; 5xx--Server Error. (2) public String getHeader(String hdr) throws IOException, retrieves the field for a given header: @param hdr the header name; @return the value for the header, or null if non-existent; @exception IOException if any exception occurs on the socket. (3), public synchronized byte [ ] getData( ) throws IOException: @return an array containing the data (body) returned. If no data was returned then it is set to a zero: -length array; exception IOException If any io exception occurred while reading the data. VII. System Log Files The system is composed of several System Log Files. The System Configuration file contains the user's choice about the Cache Storage size, default browser configuration and other similar user options. The Cache Log file contains the list of downloaded URLs in the cache maintaining the following format: Downloaded URL .vertline. Local Cache Path .vertline. Total Memory consumed. The Cache DTS file contains the date time stamp for all the downloads in the following format: Downloaded URL .vertline. Day Stamp for download .vertline. Date Stamp for download .vertline. Last Viewed Date stamp .vertline. Last Viewed Time stamp. The Queue file contains the URLs of all the queued request. The Title file contains a list of titles corresponding to all the downloaded URLs in the following format: Downloaded URL .vertline.0 Title of the document .vertline. Status of download. The Connection Status file contains the connection status for all the HTTP Clients in the system in descending order of priority as: primary connection status .vertline. secondary connection status .vertline. ad download status .vertline. Q-Tracks info upload status .vertline. Subscriber download status .vertline. SMN download status .vertline. Co-brand download status. The Ad Status file contains the day time stamp for the last ad banner download in the following format: Day of last download .vertline. Time of last download. The Q-Tracks Status file contains the day time stamp for the last Q-Tracks info upload in the following format: Day of last download .vertline. Time of last download. The Subscriber Status file contains the day time stamp for the last subscriber's site download in the following format: Day of last download .vertline. Time of last download. The SMN Status file contains the day time stamp for the last SMN info download in the following format: Day of last download .vertline. Time of last download. The Co-Brand Status file contains the day time stamp for the last co-brand download in the following format: Day of last download .vertline. Time of last download. The invention's user interface (Invention Interface 404) provides a container 333 (FIG. 14) onto which the user can drag-and-drop (D&D) hyperlinks from the browser. The system then downloads the page associated with the link in the background. The pages of these D&D'ed links are stored in the invention's Cache 420 on the user's hard drive, and are presented as Q-Links in a list 261 on the Invention Interface 404. The user can click on the title or address of any of these Q-Links to display it in the open instance of the browser 62. The Invention Interface 404 also has an ad display area for banner advertisements. Whenever the user clicks on the ad banner he/she is connected across the Internet, and a Web page for the corresponding advertiser is displayed in the open instance of the browser 62. There are two files maintained by the software for Configuration Information. First, is the INI File, used by the Interface Container 333. Second, is the Preferences File used by the Invention Interface 404. The Interface Container 333 is responsible for reading the configuration information from the INI File, and also changing any entry in the INI File and Preferences File whenever there is any change in the system configuration of the invention. The Invention Interface 404 reads the current configurations from the Preferences File. The following information is kept in the INI file: an SMN logo URL; About smQ URL, Search button/Licensee Web site URL; Q-Touch Page #1; Q-Touch Page #2; Q-Touch Page #3, default URL; Storage preferences/cache size; Default Browser, Internet Explorer/Netscape; MultiLink option (YES/NO), for drag and drop of the Image maps :default is YES; Cue Cards (ON/OFF), default is ON; and, User ID. The following information is kept in the Preferences File maintained by the Invention Interface 404 are: Cache size; Q-Touch Page #1; Q-Touch Page #2; Q-Touch Page #3; About smQ URL; Search/Marketing Partner URL; Help URL; User ID. The Configuration Manager is responsible for maintaining the configurations of the system. The configurations are written in the INI File. It is read by the Configuration Manager from this INI File when the system starts. In the event of a change in the configuration (by the user), the Configuration Manager writes the changed configuration to the INI File. It also writes the configurations to a "Preferences" File maintained by the Invention Interface 404 at the start of the session, and when there is a change in configuration. The Configuration Manager reads the original configuration from the INI file at the beginning. It also writes the configuration in the "Preferences" file maintained by the Invention Interface 404. The Configuration Manager changes the configuration based on user input. The Configuration Manager writes the changed configuration into the INI file. It also writes the changed configuration to the "Preferences" file maintained by the Invention Interface 404. The operational modules of the Configuration Manager are described below: Public char* readFromINI(char* pszIndex) module reads the configuration information from the INI File. It has the following Parameter: pszIndex: pointer to the Index in the INI file, whose value is to be read. Its return is the value of the Index read from the INI File. Public void writeToPreference ( ) module writes the following configuration information to the Preference File: cache size; Q-Touch Page #1; Q-Touch Page #2; Q-Touch Page #3; About smQ URL; Search/Marketing Partner URL; Help URL; and, User ID. Public void writeToINI (char* pszIndex ) module writes to the INI File. It has the following parameters: pszIndex: Index of the INI File to change. Public Set/Get functions module sets and gets different configuration information. VIII. Program Activation In order to drag-&-drop hyperlinks from the browser 62 to initiate a background download, the invention is activated by the user in a fashion similar to activating other computer programs. This is determined by the operating system, thus, under Windows the user would left click 75 twice in rapid succession (commonly referred to as "double-click") on the icon of the program. The invention checks whether an instance of the browser 62 is already existing at the point of invocation and if it fails to detect its presence, it automatically launches an instance of that browser specified by the user through "Browser Choice" selection during registration. In addition to the standard activation procedure, the user may activate the invention by double-clicking on the icon of their Web browser, which implicitly activates the invention upon invocation of the browser. This ensures that the Invention Interface 404 is always ready to received D&D hyperlinks from the browser, and also ensures maximum viewership for the advertising in the Invention Interface 404. The implementation of this so-called Bi-Directional Launching mechanism requires the existence of a separate module called QListener, which is activated once the user turns on his/her computer. QListener exists as a background process running at all times, and its deactivation can only be accomplished by uninstalling the entire invention from the hard drive, and restarting the system. In order to provide Bi-Directional Launching, the QListener module interacts with both the invention and the browser 62. The QListener is invoked at the time of system boot. Upon its activation, it checks for the presence of a browser in the system by conducted a search through all the active applications. This search is repeatedly conducted at a polling interval that it does not put additional load on system resources (every 10 seconds). If it detects the presence of a browser in the system, it checks for the existence of the invention. If the invention is active at that point, it goes back to its "polling" mode. If the invention is not active at the point, it invokes an instance of the invention by activating the corresponding executable. QListener then returns to "polling" mode. If the user invokes additional instances of browser, the module limits the number of active instances of the invention to one. If the module detects no browser in the system but does detect an instance of the invention (which happens only in rare circumstances), it deactivates the current instance of the invention and returns to "polling" mode. The activation of the invention by double-clicking on the corresponding icon, however, is not handled by or affected by the QListener module. The polling duration of the QListener module has been preset to ten seconds. The significance of the chosen interval can be explained by observing the average delay between activation of the browser and subsequent display of the default web page. It has been noted that this delay is close to the aforementioned duration for a machine with standard configuration, ensuring that smQ is launched (in case it did not exist previously) before the user can initiate his/her browsing session. The mechanism employed by QListener to detect the presence of browser is as follows: It investigates the list of active processes (as presented by the Task manager for a Windows 95/NT system) and searches for such applications entitled "Microsoft Internet Explorer" and/or "Netscape." The module reverts back to the default "polling" state if it finds no applications of those names. If applications of those names are found, the detection is followed by initiation of the invention. It has been experimentally deduced that the additional system load generated by the 10-second polling of the QListener module is less than 1%, both in terms of CPU and memory consumption, and would not be noticed by the user. The QListener module described above solves the problem of not loading the system with such a system memory and CPU-intensive application as the invention. QListener is a tiny program, which will eventually invoke the entire application of the invention upon receipt of appropriate stimulus in the form of browser activation. Based on the methodology of the above design, the flow of events for Bi-Directional Launching can be categorically listed as: Load the QListener module on system boot; QListener continues to exist till the next reboot, and polls the status of browser; QListener is designed such that the polling exercise does not weigh down the system i.e., it should not slow down other running applications or make the user aware of its existence; The polling duration should be ascertained such that the Invention Interface 404 becomes visible within the start-up activity of the browser; To minimize additional load, QListener only monitors the "title" field of all the running applications; Once such a browser application is detected, QListener launches invention application; If the user invokes a second browser, QListener will detect the presence of a running instance of the invention, and will not launch a second instance; The invention will be closed once the browsing session is terminated by the user; QListener will remain in the polling state, looking for initiation of a subsequent browsing session; The standard activation of the invention by double-clicking on its icon remains is unaffected by bi-directional launching; The QListener application is invisible both in the Task Bar and in System Tray, but its presence can be detected from the Task Manager by pressing Ctrl-Alt-Del; If the user terminates QListener by eliminating it from the Task Manager, it will be activated again the next time the computer is turned on; If the user terminates QListener while the invention is active, Q-Listener will reactivate itself in the same session; If the user removes QListener in a given session, the only way to activate the invention is by double-clicking on the icon of the invention. IX. Drag-&-Drop Operations The flowchart in FIG. 16 illustrates the Drag-&-Drop operations of the invention. The method begins at step 79 as a current Web page is being displayed on the browser 62 and the Invention Interface 404 "floats" above the window of the browser 62 (see FIG. 6). It is assumed that this Web page has embedded therein one or more links, each of which are associated with a different Web page. In step 80, the user clicks and holds the left mouse button 75 (FIG. 3) (or equivalent single click and hold left mouse function process on their pointing device) on the link he/she wishes to view in the future. The user drags the link on to the Invention Interface 404 and then releases the left mouse button 75 (or the equivalent). At step 82, a test is made to determine whether the link is valid. If it is not valid, an error message is displayed to the user at step 84. If the link is valid, the method continues at step 86 where the invention determines the type of link which has been selected. If the link is associated with the file transfer protocol (ftp link) then at step 88 the invention displays the user a message advising that the link is a large ftp link which is best not downloaded using the invention. The user is prompted at step 90 to continue or to exit the drag and drop routine. If the user decides that he/she does not want to download this ftp link, then the invention disregards the link and exits the drag-and-drop routine 92. If the user decides that he/she still wishes to download this ftp link, then the invention continues to step 96. If the link in step 86 is either an http link, then the invention continues to step 96. The invention then performs a test in Step 97 to determine if the cache is full. If the test in step 97 determines that the cache is full, then the invention, in step 124, displays the option list 148 as displayed in FIG. 17. The invention determines that the cache is full if the cache residue falls below a predetermined threshold. If it is necessary to make room for new Web pages, the invention will automatically delete links and Web pages in the order of the oldest link and associated Web page, to the newest link and associated Web page (FIFO). The cache can be full if the user "flagged" Q-Links, as described in detail below, so that the invention will not automatically erase old Q-Links to make room for new Q-Links and there is not sufficient room to download the newly selected Q-Links. The user then selects what he/she would like to do, as shown in step 126. If the User selects "A" 150, the invention invokes the Q-Links Manager 128 to "unflag" all Q-Links and the invention deletes cached Q-Links by date to make room for the newly selected Q-Links. The invention then, at step 134, returns to the main in flow to perform the http link type test at 98. If the user, at step 126, selects "B" 152 the invention invokes the Q-Links Manager, at step 130, to display the maximized graphical user interface 251 containing the Q-Links list 261. As discussed below, the user can then select which cached Q-Links to delete. The invention deletes the cached Q-Links and continues to the http link type test at 96. If the user at step 126, selects "C" 154, the invention invokes the Configuration Manager to display, at step 132, the storage preferences message depicted in 230, as depicted in FIG. 18. The user is given the option of changing the cache storage space in the drop down list 244. In step 131, the user is given the option of how many megabytes (MB) of storage space to choose from the drop down list. The user then can select "CANCEL" 236 which closes the display without making any changes to the storage preferences, and returns to step 124. If the user selects "APPLY" 234, the invention makes the change but keeps the storage preferences dialog box 230 open, and awaits further input from the user. If the user selects "OK" 232, the invention makes the change selected from the drop down list, closes the dialog box 230, and returns to the Interface Manager http link type test at step 98. Finally, if the user selects "D" 156 in step 126, the invention exits this sub-routine and returns to the maximized invention interface 251 or the minimized invention interface 245. The invention then performs the test in step 98 to decide on the type of http link. If the link is a text link or an image link, then, at step 249, the link is forwarded to the BITE client for background downloading (see FIG. 15, step 604). For the D&D of text links, the Invention Interface 404 receives the URL information without the need for additional computation. The scenario is not the same for image links, as the Invention Interface 404 only receives the "image name" and not the implicit URL behind the image. The image D&D recognition mechanism of the invention addresses the problem of URL detection from the image, enabling the system to handle all kinds of D&D requests from the browser. Initially the design for URL recognition for image D&D is limited to Microsoft Internet Explorer (MSIE) browsers, although this functionality will be extended to other browser platforms as technology matures. The caching mechanism for MSIE involves the usage of four cache directories, labeled from cache1 through cache4, under c:.backslash.windows.backslash.temporary internet files.backslash.. Under each of the four cache directories, there are two Log files, MM256.DAT and MM2048.DAT. The log files contain the mapping between the resources stored in the browser cache and their corresponding URLs. The invention has been designed to read the contents of these files. Every entry is located at a fixed offset, and can be extracted in text form, however the application is not allowed to edit the file when MSIE is in active state. Whenever the user D&D's an image link from the browser, the Invention Interface 404 cannot immediately receive the URL behind the image. Instead, it passes the pathname of the gif file in the cache, e.g. c:.backslash.windows.backslash.temporary internet files.backslash.cache2.backslash.xyz.gif. The user can D&D images onto the Invention Interface 404 under two situations: (1) when the page displayed in the browser has been fetched over a primary connection, and (2) when the page displayed in the browser has been fetched from the invention's Cache 420 upon activation of one of the Q links. Under condition (1), the information passed on to the interface points to the local path of the image in browser's cache. On the other hand, under condition (2), the information passed on to the interface points to the local cache path maintained by the invention. For (2), the application can detect the source of the gif file in the following fashion: The pathname will essentially contain the installation path of the invention, which would be substantially different from that of browser's cache path. The invention stores the URL in cache by assigning it a unique ID (in the form of xxx.yyy). All the files kept under the directory will have the structure Installation Path.backslash.classes.backslash.cache.backslash.xxx.yyy.backslash.. By trivial manipulation, the application can get an idea about the local path for the html file, essentially by extracting the unique ID from the pathname of the image dropped. However, the parsing task is more difficult under scenario (1) when the html file had been fetched over the network as a primary connection by the browser, and not as a secondary request by BITE. From the pathname of the image dropped, the application can extract the cache path for the image resource. In the earlier example, it is obvious that xyz.gif resides in the browser's cache under directory cache2. Through the mapping mechanism, the application can get an idea about the URL of the image resource by scanning through the entries of MM256/2048.DAT. As an example, we will use the image resource URL <http://www.smQ.con/smn/xyz.gif>. The invention can draw the conclusion that the html file under consideration has been fetched from the site http://www.smQ.com. The search process now gets narrowed down to the domain of all html files downloaded from the above-mentioned site. The search criteria now looks like: (a)Scan the MM256.DAT under cache1 through cache4. (b)Is the entry a text file? (c)If the answer to (b) is yes, does it belong to www.smQ.com? (d)If the answer to (c) is yes, does it contain the image name xyz.gif? (e) If the answer to (d) is yes, then that is the end of the search. The html file is now parsed to find out the URL behind the image name. The recognized URL behind the image has been detected If this event flow breaks down at any point, then the user is displayed a message saying that the invention is unable to recognize the particular object D&D'ed. If the result of the test in step 98 is an image map (i.e. a graphical object containing more than one URL), then the Configuration Manager is initiated in step 104. A test is performed, at step 106, to determine if the invention's MultiLink Option is activated. The MultiLink Option allows the invention to display a listing of all URLs associated with an image map. If the test in step 106 for the MultiLink Option is "No," then the user is prompted to change the MultiLink Option at step 108 with the MultiLink Objects dialog box similar to that displayed in FIG. 19. If the user decides not to change the option, he/she selects the appropriate button 146, and the invention exits the D&D routine at 92. If the User wants to change the MultiLink Option, then the user selects the appropriate button 144 and the Configuration Manager changes the option in step 112 and the invention continues to step 110. If the test performed in step 106 is "Yes," or if the user selects to change the MultiLink Option in step 112, then the invention requests, in step 110, the list of URLs associated with the image map. The interface then displays the list of URLs in step 114. The user then selects the URLs he/she wants for background downloading in step 116. After selecting the URLs in step 116 the user, in step 120, selects either "OK" or "CANCEL." If the user selects "CANCEL," then the invention exits the D&D routine 92. If the user selects "OK" in step 120, the requested links are forwarded, in step 122 to the BITE client for background downloading (see 249). If the result of the test in step 98 is a Duplicate URL, then the user is displayed a prompt asking whether he/she wants the link to be downloaded again. If the user does want the Link downloaded again, then he/she selects the "YES" and the link is then forwarded, in step 249 to the BITE client for background downloading. If the user does not want to download the link again then he/she selects the "NO", and the invention then exits the D&D routine 92. If any other errors occur within D&D flow process, the system displays appropriate error messages 93, and the program will exit the drag and drop routine 92. The functionalities of the Drag and Drop Manager are to accept valid hyperlinks. Valid hyperlinks are text links, image links, image maps, and ftp text links. The Drag and Drop Manager passes the hyperlink to the Interface Manager 96, and the Interface Manager 96 returns the status. The return status can be: IMAGE_OK; IMAGEMAP_OK; TEXT_LINK_OK; DUPLICATE_URL; IMAGEMAP_ERROR; IMAGE_ERROR; TEXT_LINK_ERROR; CACHE_FULL_ERROR; If status=IMAGE_MAP_OK, the Interface Manager 96 checks the Multi-Link option. If this option is set or changed by the user to set it, then the Interface Manager 96 gets the list of URLs for the image map. The user selects url/URLs from this list of URLs and the Interface Manager 96 passes these URLs to the Engine. If status=DUPLICATE_URL, the Interface Manager 96 checks whether user wants to overwrite it. The Interface Manager 96 informs the Interface Manager of the Engine about the option ( yes/no). The operational modules of the Drag and Drop Manager are listed in Table 10:
TABLE 10
Name Description Parameter Returns
public static BOOL static function pszHyplink: url TRUE (Valid)
is ValidHyplink that validates a of the Hyper- FALSE (Invalid)
( char* pszHyplink) hyperlink link accepted.
accepted by
Drag and Drop
public void Sets the url of pszHyplink: url
setHyplink ( char * the valid link of the valid
pszHyplink) link
public char* Gets the url of url of the valid
getHyplink ( ) the valid link link
public STATUS passes the url STATUS, this is
passHyplinkToEng of the link to the value returned
( ) the Interface by the Engine, on
Manager of the passing the url.
Engine. STATUS can be
of the following
types:
IMAGE_OK
IMAGEMAP.sub.--
OK
TEXT_LINK.sub.--
OK
DUPLICATE.sub.--
URL
IMAGEMAP.sub.--
ERROR
IMAGE.sub.--
ERROR
TEXT_LINK.sub.--
ERROR
CACHE.sub.--
FULL.sub.--
ERROR
public char** Gets the list of array of strings
getMapUrlArray ( ) URLs associat- containing the
ed with the URLs.
image map
X. Q-Links The Q-Links Manager is a sub-module within the Invention Interface 404 (see 128 and 130 in FIG. 16(C)) responsible for displa | ||||||
