Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
This office action is in response to Applicant’s amendment filed on 01/16/2026. Claims 1, 10, and 18 have been amended. Claims 1-20 are pending. Any examiner’s note, objection, or rejection not repeated is withdrawn due to Applicant’s amendment.
Priority
Applicant’s claim for benefit under 35 U.S.C. 119 to U.S. Provisional Application 63344313 filed 05/20/2022 is acknowledged.
Claim Rejections - 35 USC § 112
The following is a quotation of the first paragraph of 35 U.S.C. 112(a):
(a) IN GENERAL.—The specification shall contain a written description of the invention, and of the manner and process of making and using it, in such full, clear, concise, and exact terms as to enable any person skilled in the art to which it pertains, or with which it is most nearly connected, to make and use the same, and shall set forth the best mode contemplated by the inventor or joint inventor of carrying out the invention.
The following is a quotation of the first paragraph of pre-AIA 35 U.S.C. 112:
The specification shall contain a written description of the invention, and of the manner and process of making and using it, in such full, clear, concise, and exact terms as to enable any person skilled in the art to which it pertains, or with which it is most nearly connected, to make and use the same, and shall set forth the best mode contemplated by the inventor of carrying out his invention.
Claims 1-20 are rejected under 35 U.S.C. 112(a) or 35 U.S.C. 112 (pre-AIA ), first paragraph, as failing to comply with the written description requirement. The claim(s) contains subject matter which was not described in the specification in such a way as to reasonably convey to one skilled in the relevant art that the inventor or a joint inventor, or for applications subject to pre-AIA 35 U.S.C. 112, the inventor(s), at the time the application was filed, had possession of the claimed invention.
Regarding Claim 1, the Claim states “a full duration of a second timing wheel” on Lines 18-19. However, there is no description or definition in Applicant’s Specification of this element, a full duration of a second timing wheel. The Specification only mentions in [0082] to “determine whether the timeout associated with timing wheel 676 satisfies the full duration of timeout identified by the timeout value,” i.e., a full duration of a timeout identified by the timeout value, but not the full duration of a timing wheel. For examination, the Examiner is interpreting the Claim as referring to determining that the residual time does not satisfy the full duration of the timeout after using the first timing wheel and requires a second timing wheel, as [0082] of the Specification subsequently states “For instance, if timing wheel is an hour wheel, ticker worker 599 may determine whether the timeout value is an hour, or more than an hour. If the timeout value is more than an hour, the ticker worker 599 determines that there is residual time left for the timeout task.”
Regarding Claim 10, the Claim states “a full duration of a second timing wheel” on Lines 13-14. However, there is no description or definition in Applicant’s Specification of this element, a full duration of a second timing wheel. The Specification only mentions in [0082] to “determine whether the timeout associated with timing wheel 676 satisfies the full duration of timeout identified by the timeout value,” i.e., a full duration of a timeout identified by the timeout value, but not the full duration of a timing wheel. For examination, the Examiner is interpreting the Claim as referring to determining that the residual time does not satisfy the full duration of the timeout after using the first timing wheel and requires a second timing wheel, as [0082] of the Specification subsequently states “For instance, if timing wheel is an hour wheel, ticker worker 599 may determine whether the timeout value is an hour, or more than an hour. If the timeout value is more than an hour, the ticker worker 599 determines that there is residual time left for the timeout task.”
Regarding Claim 18, the Claim states “a full duration of a second timing wheel” on Lines 21-22. However, there is no description or definition in Applicant’s Specification of this element, a full duration of a second timing wheel. The Specification only mentions in [0082] to “determine whether the timeout associated with timing wheel 676 satisfies the full duration of timeout identified by the timeout value,” i.e., a full duration of a timeout identified by the timeout value, but not the full duration of a timing wheel. For examination, the Examiner is interpreting the Claim as referring to determining that the residual time does not satisfy the full duration of the timeout after using the first timing wheel and requires a second timing wheel, as [0082] of the Specification subsequently states “For instance, if timing wheel is an hour wheel, ticker worker 599 may determine whether the timeout value is an hour, or more than an hour. If the timeout value is more than an hour, the ticker worker 599 determines that there is residual time left for the timeout task.”
Any claims not specifically mentioned are rejected due to their dependency on rejected Independent claims.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-2, 4-5, 7-10, 12-13, and 15-19 are rejected under 35 U.S.C. 103 as being unpatentable over Zhou et al. (US 9158331 B2) in view of Kinkade (US 6360329 B1), hereinafter referred to as Zhou and Kinkade, respectively.
Regarding Claim 1, Zhou discloses A system comprising: a non-transitory computer-readable memory having instructions stored thereon; and a processor configured to read the instructions to (Col. 9, Lines 13-16- Device 600 includes one or more processors 610 (e.g., any of microprocessors, controllers, and the like) which process various computer-executable or readable instructions to control the operation of device 600; Col. 9, Lines 28-29- Device 600 also includes computer-readable media 614, such as one or more memory components. Please note that the device 600 corresponds to Applicant’s system, the computer-readable media 614 including memory components which has instructions corresponds to the non-transitory computer-readable memory having instructions, and the processor 610 that processes the instructions corresponds to the processor reading the instructions.):
obtain a task for execution (Col. 5, Lines 58-59-passing the associated callback functions to a separate task for execution. Please note that passing functions to a task for execution corresponds to Applicant’s obtaining a task for execution.);
wherein each of the plurality of slots of the first timing wheel corresponds to an increment of a first period (Col. 5, Lines 19-21- Further, assume each time slot represents a time unit of 4 seconds (e.g. one full rotation of timer wheel 302 takes 12×4=48 seconds). Please note that each slot of timer wheel 302 representing time units such as 4 seconds corresponds to Applicant’s plurality of slots of the first timing wheel corresponding to an increment of a first period, as the timer wheel 302 is a first timing wheel that has multiple slots with each slot corresponding to an increment of a period of the full rotation.);
Zhou does not explicitly disclose determine a timeout associated with a first state of the task; allocate a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout; and when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before an event associated with the first state has been received: deallocate the timeout task from the one of the plurality of slots of the first timing wheel; determine a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel; determine that the residual time satisfies a full duration of a second timing wheel and, in response, allocate the timeout task associated with the first state to one of a plurality of slots of the second timing wheel, wherein each of the plurality of slots of the second timing wheel corresponds to an increment of a second period that is different from the first period.
However, Kinkade discloses determine a timeout associated with a first state of the task (Col. 2, Lines 37-39-a process, event, or other item that needs to be timed is scheduled on a slot on a timing wheel according to the timeout value of the item. Please note that the timeout value of an item such as a process being used to schedule it corresponds to Applicant’s determining a timeout associated with a first state of the task, as it makes a determination with the timeout value, corresponding to a first state, for a process, corresponding to a task.);
allocate a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout (Col. 2, Lines 36-39- Multiple timing wheels are maintained with slots associated with each wheel. In one embodiment, a process, event, or other item that needs to be timed is scheduled on a slot on a timing wheel according to the timeout value of the item. Please note that a process being scheduled on a timing wheel according to the timeout value corresponds to Applicant’s allocating a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout.),
and when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before an event associated with the first state has been received: deallocate the timeout task from the one of the plurality of slots of the first timing wheel (Col. 16, Lines 11-14- In step 66, all the TLEs on the slot pointed to by anchor.sub.13 p are removed from the list anchor and processed, in the same order as they were inserted onto the list (in First-In-First-Out order). Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. Please note that the TLE having expired corresponds to Applicant’s increment corresponding to the one of the plurality of slots of the first timing wheel having expired before an event associated with the first state has been received, as the timeout value has expired in order for the TLE to be expired, and since it has timed out, an event associated with the state of the process has not been received. Furthermore, removing the TLE (timer list element) on the slot from the list anchor corresponds to deallocating the timeout task from one of the plurality of slots of the first timing wheel, as removing an element of the slot that is on the timing wheel corresponds to deallocating the timeout task of the first timing wheel since it is freeing memory.);
determine a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel (Col. 16, Lines 13-16- Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. If not, then the TLE is re-started by computing amount of time remaining for the timer. Please note that computing the amount of time remaining for the TLE with an associated timeout value corresponds to Applicant’s determining a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel, as the remaining time corresponds to the residual time, and the TLE is associated with a slot of the timing wheel.);
determine that the residual time satisfies a full duration of a second timing wheel and, in response (Col. 5, Lines 49-57- Each timing wheel may be considered as providing a partial timing service in terms of a larger unit of time. This is analogous to the way in which the hands of a clock work together, with the "seconds" hand, the "minutes" hand, and the "hours" hand providing timing in a series of units of time. Another analogy is to the wheels of a mechanical digital clock. For example, a digital clock might have an "hours" wheel, a "minutes" wheel, and a "seconds" wheel.; Col. 6, Lines 54-59- each timing wheel, starting with the "fastest turning" wheel, handles timers for time-out values up to some maximum time-out value. The maximum time-out value for a wheel can be computed as the period of the wheel, the amount of time it takes the wheel to complete one full cycle and return to its starting position.; Col. 6, Lines 27-39- The method for moving or performing expiration processing for a timer that has been removed from a slot is shown in Table II, below: 1. Re-compute the timer's timeoutValue as the difference between the timer's expirationTime and the current value of curTime. 2. If the new timeoutValue is 0, then perform the timer-expiration processing for the particular type of timer. 3. If the new timeoutValue is non-zero, then the timer can be re-enqueued on some slot of some timer wheel by re-applying the Timer Start method, using the new value of timeoutValue. Please note that there being multiple wheels analogous to “hours,” “minutes,” and “seconds,” and re-enqueueing the timer on some slot of some timer wheel if the new timeoutValue is non-Zero after removing a timer from a slot of a first wheel corresponds to Applicant’s determining that the residual time satisfying a full duration of a second timing wheel. [0082] of Applicant’s specification states that “Ticker worker 599 may read the timeout value and determine whether the timeout associated with timing wheel 676 satisfies the full duration of timeout identified by the timeout value. For instance, if timing wheel is an hour wheel, ticker worker 599 may determine whether the timeout value is an hour, or more than an hour. If the timeout value is more than an hour, the ticker worker 599 determines that there is residual time left for the timeout task.” It can be inferred from the operation of this cited system that in a situation where there is, for example, a timeoutValue of 1 hour 1 minute, there would be residual time left after using the first timing wheel, the hours wheel, and would require the use of the second minutes wheel to satisfy the full duration of the timeout. ),
allocate the timeout task associated with the first state to one of a plurality of slots of the second timing wheel (Col. 16, Lines 13-16-Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. If not, then the TLE is re-started by computing amount of time remaining for the timer, and re-invoking the Timer Start function. Please note that restarting the TLE and re-invoking the Timer Start function based on the remaining time corresponds to allocating the timeout task associated with the first state to one of a plurality of slots of a second timing wheel based on the residual time, as by restarting the TLE, it is allocated in one of the plurality of slots of a timing wheel based on the remaining time, which could be in the second timing wheel from the multiple timing wheels.)
wherein each of the plurality of slots of the second timing wheel corresponds to an increment of a second period that is different from the first period (Col. 2, Lines 36-37- Multiple timing wheels are maintained with slots associated with each wheel. Please note that since there are multiple timing wheels with slots associated with each, this corresponds to the slots of a second timing wheel corresponding to increments of a second period, as there could be a second wheel with its own period distinct from the first.).
Zhou and Kinkade are both considered to be analogous to the claimed invention because they are in the same field of using timing wheels for processing in computer systems. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhou to incorporate the teachings of to modify the task execution system with slots of a timing wheel corresponding to increments of a period to determine a timeout for the task, allocate the task to a slot, deallocating the task when the increment expires, determine a residual time based on the timeout and the increment, determine that the residual time satisfies a full duration of a second timing wheel, and allocate the task to a second timing wheel based on the residual time, allowing for more efficient operation of the system by requiring less computer time for processing, as described in Kinkade.
Regarding Claim 2, Zhou-Kinkade as described in Claim 1, Kinkade further discloses when the event associated with the first state has been received before the increment corresponding to the one of the plurality of slots of the first timing wheel expires (Col. 3, Lines 22-28- each event is expected to occur within a predetermined amount of time. For example, the process may have sent a packet over a network, and may expect to receive an acknowledgment of receipt of the packet within some amount of time. When the response to the packet is received, the process would typically cancel the timer.; Col. 10, Lines 27-29-the timer is likely to be canceled before it expires, so it's not likely to require any further processing other than the cancellation processing. Please note that canceling the timer before it expires due to receiving an event such as receiving a packet corresponds to Applicant’s event associated with the first state being received before the increment corresponding to the plurality of slots of the first timing wheel expires.), the processor is configured to: deallocate the timeout task from the one of the plurality of slots of the first timing wheel (Col. 16, Lines 11-14- In step 66, all the TLEs on the slot pointed to by anchor.sub.13 p are removed from the list anchor and processed, in the same order as they were inserted onto the list (in First-In-First-Out order). Each TLE is examined to see if it has expired. Please note that removing the TLE (timer list element) on the slot from the list anchor corresponds to deallocating the timeout task from one of the plurality of slots of the first timing wheel, as removing an element of the slot that is on the timing wheel corresponds to deallocating the timeout task of the first timing wheel since it is freeing memory. Since this is done prior to checking to see if the TLE has expired, it would occur even in cases where the event has been received before the expiration.); and transition the task to a second state (Col. 10, Lines 27-29-the timer is likely to be canceled before it expires, so it's not likely to require any further processing other than the cancellation processing. Please note that cancellation processing being carried out corresponds to transitioning the task to a second state, as it processes the task of the slot and transitions it to another state now that the event has been received and it is no longer pending.).
Regarding Claim 4, Zhou-Kinkade as described in Claim 1, Kinkade further discloses wherein the timeout is stored in the non-transitory computer-readable memory as a time stack (Col. 7, Lines 2-8- One implementation of the invention uses a table of maximum time-out values. The table is implemented as an array of values in computer memory, with the "fastest-turning" wheel considered as wheel 0. The maximum time-out value for the "fastest-turning" wheel is stored in the first element (element 0) of the table, the maximum time-out value for the next wheel is stored in element 1, and so on. Please note that a table implemented as an array of values in computer memory storing maximum time-out values corresponds to the timeout being stored in the non-transitory computer-readable memory as a time stack. ) having a first granularity value corresponding to the first period and a second granularity value corresponding to the second period (Col. 5, Lines 54-57-Another analogy is to the wheels of a mechanical digital clock. For example, a digital clock might have an "hours" wheel, a "minutes" wheel, and a "seconds" wheel. Please note that having timing wheels that measure hours, minutes, and seconds respectively corresponds to Applicant’s having a first granularity value corresponding to the first period and a second granularity value corresponding to the second period, as the granularity of the first wheel could be seconds, with a period up to 60 seconds, and the second wheel could have a granularity of minutes, with a granularity up to 60 minutes, as exemplified in Table II in Column 6.).
Regarding Claim 5, Zhou-Kinkade as described in Claim 4, Kinkade further discloses wherein the processor is configured to update the time stack to remove the first granularity value when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before the event associated with the first state has been received (Col. 6, Lines 23-26-The method for processing a slot is to remove all the timers chained from that slot, in the same order as they were inserted on the list, and to move or perform expiration processing for each timer take from the slot.; Col. 11, Lines 20-27- After the timer is place on slot 58 of the minutes wheel, it won't be processed again until 11:58:00. At that time, an updated value of timeoutValue will be computed by subtracting curTime from expirationTime. The result (11:59:59-11:58:00) will be 00:01:59, or 119 seconds. Accordingly, the timer will be placed on the seconds wheel, again using curTime to find the slot. Accordingly, it will go onto slot 0 of the seconds wheel. Please note that removing chained timers in the same order as they were inserted on the list and performing expiration processing for each timer taken from the slot corresponds to Applicant’s updating the time stack to remove the first granularity value when the increment corresponding to one of the plurality of slots of the first timing wheel expires before the event associated with the first state has been received, as it removes the first granularity value, in this cited example, the wheel with minutes, when the increment of 58 minutes expires before the event associated with the first state of the task, such as the previously described expected response, has been received.).
Regarding Claim 7, Zhou-Kinkade as described in Claim 1, Zhou further discloses wherein the processor is configured to implement a dedicated actor for the first timing wheel, wherein the dedicated actor is configured to allocate or deallocate tasks to the first timing wheel (Col. 7, Lines 17-22- In some embodiments, timer wheel 402 maintains knowledge of when timers are assigned and/or added to the timer wheel, as well as when timers are, removed from and/or disassociated with the timer wheel. For instance, timer wheel 402 can maintain an atomic counter that tracks when timers are added and removed from timer wheel 402. Please note that the atomic counter that maintains knowledge of when timers are added or removed from the timer wheel 402 corresponds to Applicant’s dedicated actor for the first timing wheel that is configured to allocate or deallocate tasks to the first timing wheel, as adding or removing timers, that are associated with tasks, from the timing wheel would necessarily require the respective allocating or deallocating of the tasks as well.).
Regarding Claim 8, Zhou-Kinkade as described in Claim 7, Kinkade further discloses wherein the processor is configured to implement a dedicated ticker actor for the first period, wherein the dedicated ticker actor for the first period is configured to cause the first timing wheel to increment when the first period expires (Col. 6, Lines 1-9- The method and process of moving timers from one wheel to another and of timing out timers that have expired is performed by the interrupt-driven part of the timing facility. The overall method for processing a "timer tick" is shown in Table I, below: 1. Increment curTime. 2. Process the seconds wheel. 3. If the seconds wheel advanced to zero, then process the minutes wheel. Please note that the timing facility that processes a timer tick by incrementing current time when the seconds wheel advanced to 0 corresponds to Applicant’s implementing a dedicated ticker actor for the first period configured to cause the first timing wheel to increment a current slot location when the first period expires, as the period associated with the seconds wheel has ended, it has been incremented, and the seconds wheel has advanced to zero, meaning the first period has expired.).
Zhou further discloses increment a current slot location (Col. 5, Lines 46-50- However, this advancement can be indicated in any suitable manner, such as through an index value incrementing, an array pointer incrementing, and so forth. In this example, timer wheel 302 advances its active time slot from time slot 0 to time slot 1. Please note that an index value incrementing an active time slot of a timer wheel 302 from slot 0 to slot 1 corresponds to Applicant’s incrementing a current slot location, and in this case, the array pointer acts like a dedicated ticker actor.)
Regarding Claim 9, Zhou-Kinkade as described in Claim 1, Kinkade further discloses wherein when the increment corresponding to the one of the plurality of slots of the second timing wheel expires before the event associated with the first state has been received, the processor is configured to execute the timeout task (Col. 11, Lines 28-33- The timer will be processed again at 11:59:00. The new timeoutValue will be 11:59:59-11:59:00, or 59 seconds. Since this is less than 60 seconds, it will now be placed on the seconds wheel in the ordinary way, using expirationTime. Accordingly, it will be placed on slot 59 of the seconds wheel. It will finally expire at 11:59:59.; Col. 16, Lines 11-14- In step 66, all the TLEs on the slot pointed to by anchor.sub.13 p are removed from the list anchor and processed, in the same order as they were inserted onto the list (in First-In-First-Out order). Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. Please note that the seconds wheel corresponds to the second timing wheel, and expiring at slot 59 corresponds to the increment corresponding to one of the plurality of slots of the second timing wheel expiring before the event associated with the first state has been received. The timer expiration processing being performed since the TLE has expired corresponds to Applicant’s timeout task being executed.)
Regarding Claim 10, Zhou discloses A computer-implemented method (Col. 8, Lines 10-13- a method in accordance with one or more embodiments. The method can be performed by any suitable hardware, software, firmware, or combination thereof. Please note a method in accordance with the embodiments being performed by a combination of hardware, software, and firmware corresponds to Applicant’s computer-implemented method.) comprising: obtaining a task for execution (Col. 5, Lines 58-59-passing the associated callback functions to a separate task for execution. Please note that passing functions to a task for execution corresponds to Applicant’s obtaining a task for execution.);
wherein each of the plurality of slots of the first timing wheel corresponds to an increment of a first period (Col. 5, Lines 19-21- Further, assume each time slot represents a time unit of 4 seconds (e.g. one full rotation of timer wheel 302 takes 12×4=48 seconds). Please note that each slot of timer wheel 302 representing time units such as 4 seconds corresponds to Applicant’s plurality of slots of the first timing wheel corresponding to an increment of a first period, as the timer wheel 302 is a first timing wheel that has multiple slots with each slot corresponding to an increment of a period of the full rotation.);
Zhou does not explicitly disclose determining a timeout associated with a first state of the task; allocating a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout; when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before an event associated with the first state has been received: deallocating the timeout task from the one of the plurality of slots of the first timing wheel; determining a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel; determining that the residual time satisfies a full duration of a second timing wheel and, in response allocating the timeout task associated with the first state to one of a plurality of slots of the second timing wheel based on the residual time, wherein each of the plurality of slots of the second timing wheel corresponds to an increment of a second period that is different from the first period; and when the event associated with the first state has been received before the increment corresponding to the one of the plurality of slots of the first timing wheel expires: deallocating the timeout task from the one of the plurality of slots of the first timing wheel; and transitioning the task to a second state.
However, Kinkade discloses determining a timeout associated with a first state of the task (Col. 2, Lines 37-39-a process, event, or other item that needs to be timed is scheduled on a slot on a timing wheel according to the timeout value of the item. Please note that the timeout value of an item such as a process being used to schedule it corresponds to Applicant’s determining a timeout associated with a first state of the task, as it makes a determination with the timeout value, corresponding to a first state, for a process, corresponding to a task.);
allocating a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout (Col. 2, Lines 36-39- Multiple timing wheels are maintained with slots associated with each wheel. In one embodiment, a process, event, or other item that needs to be timed is scheduled on a slot on a timing wheel according to the timeout value of the item. Please note that a process being scheduled on a timing wheel according to the timeout value corresponds to Applicant’s allocating a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout.);
when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before an event associated with the first state has been received: deallocating the timeout task from the one of the plurality of slots of the first timing wheel (Col. 16, Lines 11-14- In step 66, all the TLEs on the slot pointed to by anchor.sub.13 p are removed from the list anchor and processed, in the same order as they were inserted onto the list (in First-In-First-Out order). Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. Please note that the TLE having expired corresponds to Applicant’s increment corresponding to the one of the plurality of slots of the first timing wheel having expired before an event associated with the first state has been received, as the timeout value has expired in order for the TLE to be expired, and since it has timed out, an event associated with the state of the process has not been received. Furthermore, removing the TLE (timer list element) on the slot from the list anchor corresponds to deallocating the timeout task from one of the plurality of slots of the first timing wheel, as removing an element of the slot that is on the timing wheel corresponds to deallocating the timeout task of the first timing wheel since it is freeing memory.);
determining a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel (Col. 16, Lines 13-16- Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. If not, then the TLE is re-started by computing amount of time remaining for the timer. Please note that computing the amount of time remaining for the TLE with an associated timeout value corresponds to Applicant’s determining a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel, as the remaining time corresponds to the residual time, and the TLE is associated with a slot of the timing wheel.);
determining that the residual time satisfies a full duration of a second timing wheel and, in response (Col. 5, Lines 49-57- Each timing wheel may be considered as providing a partial timing service in terms of a larger unit of time. This is analogous to the way in which the hands of a clock work together, with the "seconds" hand, the "minutes" hand, and the "hours" hand providing timing in a series of units of time. Another analogy is to the wheels of a mechanical digital clock. For example, a digital clock might have an "hours" wheel, a "minutes" wheel, and a "seconds" wheel.; Col. 6, Lines 54-59- each timing wheel, starting with the "fastest turning" wheel, handles timers for time-out values up to some maximum time-out value. The maximum time-out value for a wheel can be computed as the period of the wheel, the amount of time it takes the wheel to complete one full cycle and return to its starting position.; Col. 6, Lines 27-39- The method for moving or performing expiration processing for a timer that has been removed from a slot is shown in Table II, below: 1. Re-compute the timer's timeoutValue as the difference between the timer's expirationTime and the current value of curTime. 2. If the new timeoutValue is 0, then perform the timer-expiration processing for the particular type of timer. 3. If the new timeoutValue is non-zero, then the timer can be re-enqueued on some slot of some timer wheel by re-applying the Timer Start method, using the new value of timeoutValue. Please note that there being multiple wheels analogous to “hours,” “minutes,” and “seconds,” and re-enqueueing the timer on some slot of some timer wheel if the new timeoutValue is non-Zero after removing a timer from a slot of a first wheel corresponds to Applicant’s determining that the residual time satisfying a full duration of a second timing wheel. [0082] of Applicant’s specification states that “Ticker worker 599 may read the timeout value and determine whether the timeout associated with timing wheel 676 satisfies the full duration of timeout identified by the timeout value. For instance, if timing wheel is an hour wheel, ticker worker 599 may determine whether the timeout value is an hour, or more than an hour. If the timeout value is more than an hour, the ticker worker 599 determines that there is residual time left for the timeout task.” It can be inferred from the operation of this cited system that in a situation where there is, for example, a timeoutValue of 1 hour 1 minute, there would be residual time left after using the first timing wheel, the hours wheel, and would require the use of the second minutes wheel to satisfy the full duration of the timeout. ),
allocating the timeout task associated with the first state to one of a plurality of slots of the second timing wheel based on the residual time (Col. 16, Lines 13-16-Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. If not, then the TLE is re-started by computing amount of time remaining for the timer, and re-invoking the Timer Start function. Please note that restarting the TLE and re-invoking the Timer Start function based on the remaining time corresponds to allocating the timeout task associated with the first state to one of a plurality of slots of a second timing wheel based on the residual time, as by restarting the TLE, it is allocated in one of the plurality of slots of a timing wheel based on the remaining time, which could be in the second timing wheel from the multiple timing wheels.)
wherein each of the plurality of slots of the second timing wheel corresponds to an increment of a second period that is different from the first period (Col. 2, Lines 36-37- Multiple timing wheels are maintained with slots associated with each wheel. Please note that since there are multiple timing wheels with slots associated with each, this corresponds to the slots of a second timing wheel corresponding to increments of a second period, as there could be a second wheel with its own period distinct from the first.).
and when the event associated with the first state has been received before the increment corresponding to the one of the plurality of slots of the first timing wheel expires (Col. 3, Lines 22-28- each event is expected to occur within a predetermined amount of time. For example, the process may have sent a packet over a network, and may expect to receive an acknowledgment of receipt of the packet within some amount of time. When the response to the packet is received, the process would typically cancel the timer.; Col. 10, Lines 27-29-the timer is likely to be canceled before it expires, so it's not likely to require any further processing other than the cancellation processing. Please note that canceling the timer before it expires due to receiving an event such as receiving a packet corresponds to Applicant’s event associated with the first state being received before the increment corresponding to the plurality of slots of the first timing wheel expires.): deallocating the timeout task from the one of the plurality of slots of the first timing wheel (Col. 16, Lines 11-14- In step 66, all the TLEs on the slot pointed to by anchor.sub.13 p are removed from the list anchor and processed, in the same order as they were inserted onto the list (in First-In-First-Out order). Each TLE is examined to see if it has expired. Please note that removing the TLE (timer list element) on the slot from the list anchor corresponds to deallocating the timeout task from one of the plurality of slots of the first timing wheel, as removing an element of the slot that is on the timing wheel corresponds to deallocating the timeout task of the first timing wheel since it is freeing memory. Since this is done prior to checking to see if the TLE has expired, it would occur even in cases where the event has been received before the expiration.);
and transitioning the task to a second state (Col. 10, Lines 27-29-the timer is likely to be canceled before it expires, so it's not likely to require any further processing other than the cancellation processing. Please note that cancellation processing being carried out corresponds to transitioning the task to a second state, as it processes the task of the slot and transitions it to another state now that the event has been received and it is no longer pending.).
Zhou and Kinkade are both considered to be analogous to the claimed invention because they are in the same field of using timing wheels for processing in computer systems. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhou to incorporate the teachings of to modify the task execution system with slots of a timing wheel corresponding to increments of a period to determine a timeout for the task, allocate the task to a slot, deallocating the task when the increment expires, determine a residual time based on the timeout and the increment, determine that the residual time satisfies a full duration of a second timing wheel, allocate the task to a second timing wheel based on the residual time, and deallocating the timeout task from the slot and transitioning the task to a second state when the event associated with the first state has been received before the increment corresponding to the slot expires, allowing for more efficient operation of the system by requiring less computer time for processing, as described in Kinkade.
Regarding Claim 12, Zhou-Kinkade as described in Claim 10, Kinkade further discloses storing the timeout in non-transitory computer-readable memory as a time stack (Col. 7, Lines 2-8- One implementation of the invention uses a table of maximum time-out values. The table is implemented as an array of values in computer memory, with the "fastest-turning" wheel considered as wheel 0. The maximum time-out value for the "fastest-turning" wheel is stored in the first element (element 0) of the table, the maximum time-out value for the next wheel is stored in element 1, and so on. Please note that a table implemented as an array of values in computer memory storing maximum time-out values corresponds to the timeout being stored in the non-transitory computer-readable memory as a time stack. ) having a first granularity value corresponding to the first period and a second granularity value corresponding to the second period (Col. 5, Lines 54-57-Another analogy is to the wheels of a mechanical digital clock. For example, a digital clock might have an "hours" wheel, a "minutes" wheel, and a "seconds" wheel. Please note that having timing wheels that measure hours, minutes, and seconds respectively corresponds to Applicant’s having a first granularity value corresponding to the first period and a second granularity value corresponding to the second period, as the granularity of the first wheel could be seconds, with a period up to 60 seconds, and the second wheel could have a granularity of minutes, with a granularity up to 60 minutes, as exemplified in Table II in Column 6.).
Regarding Claim 13, Zhou-Kinkade as described in Claim 12, Kinkade further discloses updating the time stack to remove the first granularity value when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before the event associated with the first state has been received (Col. 6, Lines 23-26-The method for processing a slot is to remove all the timers chained from that slot, in the same order as they were inserted on the list, and to move or perform expiration processing for each timer take from the slot.; Col. 11, Lines 20-27- After the timer is place on slot 58 of the minutes wheel, it won't be processed again until 11:58:00. At that time, an updated value of timeoutValue will be computed by subtracting curTime from expirationTime. The result (11:59:59-11:58:00) will be 00:01:59, or 119 seconds. Accordingly, the timer will be placed on the seconds wheel, again using curTime to find the slot. Accordingly, it will go onto slot 0 of the seconds wheel. Please note that removing chained timers in the same order as they were inserted on the list and performing expiration processing for each timer taken from the slot corresponds to Applicant’s updating the time stack to remove the first granularity value when the increment corresponding to one of the plurality of slots of the first timing wheel expires before the event associated with the first state has been received, as it removes the first granularity value, in this cited example, the wheel with minutes, when the increment of 58 minutes expires before the event associated with the first state of the task, such as the previously described expected response, has been received.).
Regarding Claim 15, Zhou-Kinkade as described in Claim 10, Zhou further discloses implementing a dedicated actor for the first timing wheel, wherein the dedicated actor is configured to allocate or deallocate tasks to the first timing wheel (Col. 7, Lines 17-22- In some embodiments, timer wheel 402 maintains knowledge of when timers are assigned and/or added to the timer wheel, as well as when timers are, removed from and/or disassociated with the timer wheel. For instance, timer wheel 402 can maintain an atomic counter that tracks when timers are added and removed from timer wheel 402. Please note that the atomic counter that maintains knowledge of when timers are added or removed from the timer wheel 402 corresponds to Applicant’s dedicated actor for the first timing wheel that is configured to allocate or deallocate tasks to the first timing wheel, as adding or removing timers, that are associated with tasks, from the timing wheel would necessarily require the respective allocating or deallocating of the tasks as well.).
Regarding Claim 16, Zhou-Kinkade as described in Claim 15, Kinkade further discloses implementing a dedicated ticker actor for the first period, wherein the dedicated ticker actor for the first period is configured to cause the first timing wheel to increment a current slot location when the first period expires (Col. 6, Lines 1-9- The method and process of moving timers from one wheel to another and of timing out timers that have expired is performed by the interrupt-driven part of the timing facility. The overall method for processing a "timer tick" is shown in Table I, below: 1. Increment curTime. 2. Process the seconds wheel. 3. If the seconds wheel advanced to zero, then process the minutes wheel. Please note that the timing facility that processes a timer tick by incrementing current time when the seconds wheel advanced to 0 corresponds to Applicant’s implementing a dedicated ticker actor for the first period configured to cause the first timing wheel to increment a current slot location when the first period expires, as the period associated with the seconds wheel has ended, it has been incremented, and the seconds wheel has advanced to zero, meaning the first period has expired.).
Regarding Claim 17, Zhou-Kinkade as described in Claim 10, Kinkade further discloses executing the timeout task when the increment corresponding to the one of the plurality of slots of the second timing wheel expires before the event associated with the first state has been received (Col. 11, Lines 28-33- The timer will be processed again at 11:59:00. The new timeoutValue will be 11:59:59-11:59:00, or 59 seconds. Since this is less than 60 seconds, it will now be placed on the seconds wheel in the ordinary way, using expirationTime. Accordingly, it will be placed on slot 59 of the seconds wheel. It will finally expire at 11:59:59.; Col. 16, Lines 11-14- In step 66, all the TLEs on the slot pointed to by anchor.sub.13 p are removed from the list anchor and processed, in the same order as they were inserted onto the list (in First-In-First-Out order). Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. Please note that the seconds wheel corresponds to the second timing wheel, and expiring at slot 59 corresponds to the increment corresponding to one of the plurality of slots of the second timing wheel expiring before the event associated with the first state has been received. The timer expiration processing being performed since the TLE has expired corresponds to Applicant’s timeout task being executed.) .
Regarding Claim 18, Zhou discloses A non-transitory computer readable medium having instructions stored thereon, wherein the instructions, when executed by at least one processor, cause a device to perform operations (Col. 9, Lines 13-16- Device 600 includes one or more processors 610 (e.g., any of microprocessors, controllers, and the like) which process various computer-executable or readable instructions to control the operation of device 600; Col. 9, Lines 28-29- Device 600 also includes computer-readable media 614, such as one or more memory components. Please note that the device 600 corresponds to Applicant’s system, the computer-readable media 614 including memory components which has instructions corresponds to the non-transitory computer-readable memory having instructions, and the processor 610 that processes the instructions corresponds to the processor executing the instructions to perform operations.) comprising:
obtaining a task for execution (Col. 5, Lines 58-59-passing the associated callback functions to a separate task for execution. Please note that passing functions to a task for execution corresponds to Applicant’s obtaining a task for execution.);
wherein each of the plurality of slots of the first timing wheel corresponds to an increment of the first period (Col. 5, Lines 19-21- Further, assume each time slot represents a time unit of 4 seconds (e.g. one full rotation of timer wheel 302 takes 12×4=48 seconds). Please note that each slot of timer wheel 302 representing time units such as 4 seconds corresponds to Applicant’s plurality of slots of the first timing wheel corresponding to an increment of a first period, as the timer wheel 302 is a first timing wheel that has multiple slots with each slot corresponding to an increment of the period of the full rotation.);
Zhou does not explicitly disclose determining a timeout associated with a first state of the task; storing the timeout in non-transitory computer-readable memory as a time stack having a first granularity value corresponding to a first period and a second granularity value corresponding to a second period allocating a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout; and when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before an event associated with the first state has been received: deallocating the timeout task from the one of the plurality of slots of the first timing wheel; determining a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel; updating the time stack to remove the first granularity value when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before the event associated with the first state has been received; and determining that the residual time satisfies a full duration of a second timing wheel and, in response allocating the timeout task associated with the first state to one of a plurality of slots of the second timing wheel based on the residual time, wherein each of the plurality of slots of the second timing wheel corresponds to an increment of the second period that is different from the first period.
However, Kinkade discloses determining a timeout associated with a first state of the task (Col. 2, Lines 37-39-a process, event, or other item that needs to be timed is scheduled on a slot on a timing wheel according to the timeout value of the item. Please note that the timeout value of an item such as a process being used to schedule it corresponds to Applicant’s determining a timeout associated with a first state of the task, as it makes a determination with the timeout value, corresponding to a first state, for a process, corresponding to a task.);
storing the timeout in non-transitory computer-readable memory as a time stack (Col. 7, Lines 2-8- One implementation of the invention uses a table of maximum time-out values. The table is implemented as an array of values in computer memory, with the "fastest-turning" wheel considered as wheel 0. The maximum time-out value for the "fastest-turning" wheel is stored in the first element (element 0) of the table, the maximum time-out value for the next wheel is stored in element 1, and so on. Please note that a table implemented as an array of values in computer memory storing maximum time-out values corresponds to the timeout being stored in the non-transitory computer-readable memory as a time stack. ) having a first granularity value corresponding to a first period and a second granularity value corresponding to a second period (Col. 5, Lines 54-57-Another analogy is to the wheels of a mechanical digital clock. For example, a digital clock might have an "hours" wheel, a "minutes" wheel, and a "seconds" wheel. Please note that having timing wheels that measure hours, minutes, and seconds respectively corresponds to Applicant’s having a first granularity value corresponding to the first period and a second granularity value corresponding to the second period, as the granularity of the first wheel could be seconds, with a period up to 60 seconds, and the second wheel could have a granularity of minutes, with a granularity up to 60 minutes, as exemplified in Table II in Column 6.).
allocating a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout (Col. 2, Lines 36-39- Multiple timing wheels are maintained with slots associated with each wheel. In one embodiment, a process, event, or other item that needs to be timed is scheduled on a slot on a timing wheel according to the timeout value of the item. Please note that a process being scheduled on a timing wheel according to the timeout value corresponds to Applicant’s allocating a timeout task associated with the first state to one of a plurality of slots of a first timing wheel based on the timeout.);
and when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before an event associated with the first state has been received (Col. 3, Lines 22-28- each event is expected to occur within a predetermined amount of time. For example, the process may have sent a packet over a network, and may expect to receive an acknowledgment of receipt of the packet within some amount of time. When the response to the packet is received, the process would typically cancel the timer.; Col. 10, Lines 27-29-the timer is likely to be canceled before it expires, so it's not likely to require any further processing other than the cancellation processing. Please note that canceling the timer before it expires due to receiving an event such as receiving a packet corresponds to Applicant’s event associated with the first state being received before the increment corresponding to the plurality of slots of the first timing wheel expires.): deallocating the timeout task from the one of the plurality of slots of the first timing wheel (Col. 16, Lines 11-14- In step 66, all the TLEs on the slot pointed to by anchor.sub.13 p are removed from the list anchor and processed, in the same order as they were inserted onto the list (in First-In-First-Out order). Each TLE is examined to see if it has expired. Please note that removing the TLE (timer list element) on the slot from the list anchor corresponds to deallocating the timeout task from one of the plurality of slots of the first timing wheel, as removing an element of the slot that is on the timing wheel corresponds to deallocating the timeout task of the first timing wheel since it is freeing memory. Since this is done prior to checking to see if the TLE has expired, it would occur even in cases where the event has been received before the expiration.);
determining a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel (Col. 16, Lines 13-16- Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. If not, then the TLE is re-started by computing amount of time remaining for the timer. Please note that computing the amount of time remaining for the TLE with an associated timeout value corresponds to Applicant’s determining a residual time based on the timeout and the increment corresponding to the one of the plurality of slots of the first timing wheel, as the remaining time corresponds to the residual time, and the TLE is associated with a slot of the timing wheel.);
updating the time stack to remove the first granularity value when the increment corresponding to the one of the plurality of slots of the first timing wheel expires before the event associated with the first state has been received (Col. 6, Lines 23-26-The method for processing a slot is to remove all the timers chained from that slot, in the same order as they were inserted on the list, and to move or perform expiration processing for each timer take from the slot.; Col. 11, Lines 20-27- After the timer is place on slot 58 of the minutes wheel, it won't be processed again until 11:58:00. At that time, an updated value of timeoutValue will be computed by subtracting curTime from expirationTime. The result (11:59:59-11:58:00) will be 00:01:59, or 119 seconds. Accordingly, the timer will be placed on the seconds wheel, again using curTime to find the slot. Accordingly, it will go onto slot 0 of the seconds wheel. Please note that removing chained timers in the same order as they were inserted on the list and performing expiration processing for each timer taken from the slot corresponds to Applicant’s updating the time stack to remove the first granularity value when the increment corresponding to one of the plurality of slots of the first timing wheel expires before the event associated with the first state has been received, as it removes the first granularity value, in this cited example, the wheel with minutes, when the increment of 58 minutes expires before the event associated with the first state of the task, such as the previously described expected response, has been received.);
determining that the residual time satisfies a full duration of a second timing wheel and, in response (Col. 5, Lines 49-57- Each timing wheel may be considered as providing a partial timing service in terms of a larger unit of time. This is analogous to the way in which the hands of a clock work together, with the "seconds" hand, the "minutes" hand, and the "hours" hand providing timing in a series of units of time. Another analogy is to the wheels of a mechanical digital clock. For example, a digital clock might have an "hours" wheel, a "minutes" wheel, and a "seconds" wheel.; Col. 6, Lines 54-59- each timing wheel, starting with the "fastest turning" wheel, handles timers for time-out values up to some maximum time-out value. The maximum time-out value for a wheel can be computed as the period of the wheel, the amount of time it takes the wheel to complete one full cycle and return to its starting position.; Col. 6, Lines 27-39- The method for moving or performing expiration processing for a timer that has been removed from a slot is shown in Table II, below: 1. Re-compute the timer's timeoutValue as the difference between the timer's expirationTime and the current value of curTime. 2. If the new timeoutValue is 0, then perform the timer-expiration processing for the particular type of timer. 3. If the new timeoutValue is non-zero, then the timer can be re-enqueued on some slot of some timer wheel by re-applying the Timer Start method, using the new value of timeoutValue. Please note that there being multiple wheels analogous to “hours,” “minutes,” and “seconds,” and re-enqueueing the timer on some slot of some timer wheel if the new timeoutValue is non-Zero after removing a timer from a slot of a first wheel corresponds to Applicant’s determining that the residual time satisfying a full duration of a second timing wheel. [0082] of Applicant’s specification states that “Ticker worker 599 may read the timeout value and determine whether the timeout associated with timing wheel 676 satisfies the full duration of timeout identified by the timeout value. For instance, if timing wheel is an hour wheel, ticker worker 599 may determine whether the timeout value is an hour, or more than an hour. If the timeout value is more than an hour, the ticker worker 599 determines that there is residual time left for the timeout task.” It can be inferred from the operation of this cited system that in a situation where there is, for example, a timeoutValue of 1 hour 1 minute, there would be residual time left after using the first timing wheel, the hours wheel, and would require the use of the second minutes wheel to satisfy the full duration of the timeout. ),
allocating the timeout task associated with the first state to one of a plurality of slots of the second timing wheel based on the residual time (Col. 16, Lines 13-16-Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. If not, then the TLE is re-started by computing amount of time remaining for the timer, and re-invoking the Timer Start function. Please note that restarting the TLE and re-invoking the Timer Start function based on the remaining time corresponds to allocating the timeout task associated with the first state to one of a plurality of slots of a second timing wheel based on the residual time, as by restarting the TLE, it is allocated in one of the plurality of slots of a timing wheel based on the remaining time, which could be in the second timing wheel from the multiple timing wheels.)
wherein each of the plurality of slots of the second timing wheel corresponds to an increment of the second period that is different from the first period (Col. 2, Lines 36-37- Multiple timing wheels are maintained with slots associated with each wheel. Please note that since there are multiple timing wheels with slots associated with each, this corresponds to the slots of a second timing wheel corresponding to increments of a second period, as there could be a second wheel with its own period distinct from the first.).
Zhou and Kinkade are both considered to be analogous to the claimed invention because they are in the same field of using timing wheels for processing in computer systems. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhou to incorporate the teachings of to modify the task execution system with slots of a timing wheel corresponding to increments of a period to determine a timeout for the task, allocate the task to a slot, deallocating the task when the increment expires, determine a residual time based on the timeout and the increment, determine that the residual time satisfies a full duration of a second timing wheel, allocate the task to a second timing wheel based on the residual time, storing the timeout in a time stack having granularity values for each period, and updating the time stack to remove the first granularity value when the increment of the slot expires before the event associated with the first state has been received, allowing for more efficient operation of the system by requiring less computer time for processing, as described in Kinkade.
Regarding Claim 19, Zhou-Kinkade as described in Claim 18, Kinkade further discloses executing the timeout task when the increment corresponding to the one of the plurality of slots of the second timing wheel expires before the event associated with the first state has been received (Col. 11, Lines 28-33- The timer will be processed again at 11:59:00. The new timeoutValue will be 11:59:59-11:59:00, or 59 seconds. Since this is less than 60 seconds, it will now be placed on the seconds wheel in the ordinary way, using expirationTime. Accordingly, it will be placed on slot 59 of the seconds wheel. It will finally expire at 11:59:59.; Col. 16, Lines 11-14- In step 66, all the TLEs on the slot pointed to by anchor.sub.13 p are removed from the list anchor and processed, in the same order as they were inserted onto the list (in First-In-First-Out order). Each TLE is examined to see if it has expired. If so, then timer expiration processing is performed. Please note that the seconds wheel corresponds to the second timing wheel, and expiring at slot 59 corresponds to the increment corresponding to one of the plurality of slots of the second timing wheel expiring before the event associated with the first state has been received. The timer expiration processing being performed since the TLE has expired corresponds to Applicant’s timeout task being executed.) ;
and transitioning the task to a second state (Col. 10, Lines 27-29-the timer is likely to be canceled before it expires, so it's not likely to require any further processing other than the cancellation processing. Please note that cancellation processing being carried out corresponds to transitioning the task to a second state, as it processes the task of the slot and transitions it to another state now that the event has been received and it is no longer pending.) when the event associated with the first state has been received before the increment corresponding to the one of the plurality of slots of the first timing wheel expires (Col. 3, Lines 22-28- each event is expected to occur within a predetermined amount of time. For example, the process may have sent a packet over a network, and may expect to receive an acknowledgment of receipt of the packet within some amount of time. When the response to the packet is received, the process would typically cancel the timer.; Col. 10, Lines 27-29-the timer is likely to be canceled before it expires, so it's not likely to require any further processing other than the cancellation processing. Please note that canceling the timer before it expires due to receiving an event such as receiving a packet corresponds to Applicant’s event associated with the first state being received before the increment corresponding to the plurality of slots of the first timing wheel expires.).
Claims 3, 6, 11, 14, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Zhou et al. (US 9158331 B2) in view of Kinkade (US 6360329 B1) as applied to Claims 1, 2, 10, and 18 above, and further in view of Chen et al. (US 20170046304 A1), hereinafter referred to as Zhou, Kinkade, and Chen, respectively.
Regarding Claim 3, Zhou-Kinkade as described in Claim 2 does not explicitly disclose wherein the first state is implemented by a first virtual machine and the second state is implemented by a second virtual machine.
However, Chen discloses wherein the first state is implemented by a first virtual machine and the second state is implemented by a second virtual machine ([0009] each node can include software resources such as […] a virtual machine […] a cluster may utilize clustering middleware to orchestrate the activities of each node (e.g., assigning tasks of a single application for execution on different nodes). Please note that nodes that are assigned tasks for execution using software resources such as a virtual machine corresponds to Applicant’s first and second states being implemented by respective virtual machines, as the states are each associated with tasks.).
Zhou-Kinkade and Chen are both considered to be analogous to the claimed invention because they are in the same field of processing data in a computer system in a FIFO manner. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhou-Kinkade to incorporate the teachings of Chen to modify the system as disclosed in Claim 1 to implement the first and second states using respective virtual machines, allowing for improved flexibility of processing in the system, as described in Chen.
Regarding Claim 6, Zhou-Kinkade as described in Claim 1 does not explicitly disclose wherein the first timing wheel comprises a ring buffer distributed across two or more memory elements.
However, Chen discloses wherein the first timing wheel comprises a ring buffer distributed across two or more memory elements ([0019] a ring buffer can be implemented in a distributed memory manner. Please note that a ring buffer being implemented in a distributed memory manner corresponds to Applicant’s ring buffer being distributed across two or more memory elements, as it is known in the art that a distributed memory manner utilizes two or more memory elements.).
Zhou-Kinkade and Chen are both considered to be analogous to the claimed invention because they are in the same field of processing data in a computer system in a FIFO manner. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhou-Kinkade to incorporate the teachings of Chen to modify the system as disclosed in Claim 1 to utilize a ring buffer distributed across two or more memory elements to comprise the first timing wheel, allowing for better performance and efficiency of the system, as described in Chen.
Regarding Claim 11, Zhou-Kinkade as described in Claim 10 does not explicitly disclose wherein the first state is implemented by a first virtual machine and the second state is implemented by a second virtual machine.
However, Chen discloses wherein the first state is implemented by a first virtual machine and the second state is implemented by a second virtual machine ([0009] each node can include software resources such as […] a virtual machine […] a cluster may utilize clustering middleware to orchestrate the activities of each node (e.g., assigning tasks of a single application for execution on different nodes). Please note that nodes that are assigned tasks for execution using software resources such as a virtual machine corresponds to Applicant’s first and second states being implemented by respective virtual machines, as the states are each associated with tasks.).
Zhou-Kinkade and Chen are both considered to be analogous to the claimed invention because they are in the same field of processing data in a computer system in a FIFO manner. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhou-Kinkade to incorporate the teachings of Chen to modify the system as disclosed in Claim 1 to implement the first and second states using respective virtual machines, allowing for improved flexibility of processing in the system, as described in Chen.
Regarding Claim 14, Zhou-Kinkade as described in Claim 10 does not explicitly disclose wherein the first timing wheel comprises a ring buffer distributed across two or more memory elements.
However, Chen discloses wherein the first timing wheel comprises a ring buffer distributed across two or more memory elements ([0019] a ring buffer can be implemented in a distributed memory manner. Please note that a ring buffer being implemented in a distributed memory manner corresponds to Applicant’s ring buffer being distributed across two or more memory elements, as it is known in the art that a distributed memory manner utilizes two or more memory elements.).
Zhou-Kinkade and Chen are both considered to be analogous to the claimed invention because they are in the same field of processing data in a computer system in a FIFO manner. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhou-Kinkade to incorporate the teachings of Chen to modify the system as disclosed in Claim 10 to utilize a ring buffer distributed across two or more memory elements to comprise the first timing wheel, allowing for better performance and efficiency of the system, as described in Chen.
Regarding Claim 20, Zhou-Kinkade as described in Claim 18 does not explicitly disclose wherein the first timing wheel comprises a ring buffer distributed across two or more memory elements.
However, Chen discloses wherein the first timing wheel comprises a ring buffer distributed across two or more memory elements ([0019] a ring buffer can be implemented in a distributed memory manner. Please note that a ring buffer being implemented in a distributed memory manner corresponds to Applicant’s ring buffer being distributed across two or more memory elements, as it is known in the art that a distributed memory manner utilizes two or more memory elements.).
Zhou-Kinkade and Chen are both considered to be analogous to the claimed invention because they are in the same field of processing data in a computer system in a FIFO manner. Therefore, it would have been obvious to someone of ordinary skill in the art prior to the effective filing date of the claimed invention to have modified Zhou-Kinkade to incorporate the teachings of Chen to modify the system as disclosed in Claim 18 to utilize a ring buffer distributed across two or more memory elements to comprise the first timing wheel, allowing for better performance and efficiency of the system, as described in Chen.
Response to Arguments
Applicant's arguments filed 01/16/2026 have been fully considered but they are not persuasive.
Applicant’s arguments are summarized as follows:
Regarding the rejections of independent Claims 1, 10, and 18 under 35 U.S.C. 103, Zhou and Kinkade, alone or in combination, do not teach the first and second timing wheels having a different time granularity, or display how the timeout task is transferred between the timing wheels when the increment corresponding to the first timing wheel expires before the event associated with the first state has been received. Kinkade does not teach timing wheels of differing periods, nor that when a residual time satisfies a full duration of a second timing wheel, a processor allocates a timeout task associated with a first state to a slot of the second timing wheel. Therefore, the independent Claims 1, 10, and 18 are allowable over Zhou-Kinkade. Since dependent Claims 2, 4-5, 7-9, 12-13, 15-17 and 19 depend on these Claims, they are also allowable.
Regarding the rejection of dependent Claims 3, 6, 11, 14, and 20 under 35 U.S.C. 103, since they depend on allowable independent Claims 1, 10, and 18, they are also allowable.
Regarding A, the examiner respectfully disagrees. As stated above from Kinkade, there being multiple wheels analogous to “hours,” “minutes,” and “seconds,” and re-enqueueing the timer on some slot of some timer wheel if the new timeoutValue is non-Zero after removing a timer from a slot of a first wheel corresponds to Applicant’s determining that the residual time satisfying a full duration of a second timing wheel. [0082] of Applicant’s specification states that “Ticker worker 599 may read the timeout value and determine whether the timeout associated with timing wheel 676 satisfies the full duration of timeout identified by the timeout value. For instance, if timing wheel is an hour wheel, ticker worker 599 may determine whether the timeout value is an hour, or more than an hour. If the timeout value is more than an hour, the ticker worker 599 determines that there is residual time left for the timeout task.” It can be inferred from the operation of this cited system that in a situation where there is, for example, a timeoutValue of 1 hour 1 minute, there would be residual time left after using the first timing wheel, the hours wheel, and would require the use of the second minutes wheel to satisfy the full duration of the timeout. Thus, there are first and second timing wheels having different time granularities, such as hours and minutes, and show how the timeout task is transferred between the timing wheels when the increment corresponding to the first timing wheel expires before the event associated with the first state has been received, via enqueueing the timer on a slot of the second wheel if the new timeoutValue is non-Zero after removing a timer from a slot of a first wheel. Therefore, the recited features can be found in the cited combination of references, and independent Claims 1, 10, and 18 remain rejected under 35 U.S.C. 103 for the reasons stated above, and the combinations cited would have been obvious to a person of ordinary skill in the art prior to the effective filing date of the application. Additionally, contrary to Applicant’s arguments, because the dependent claims 2, 4-5, 7-9, 12-13, 15-17 and 19 depend on unpatentable claims and do not add limitations that overcome the rejection, they likewise remain rejected. The rejections under 35 U.S.C. 103 are maintained.
Regarding B, the examiner respectfully disagrees. Contrary to Applicant’s arguments, because the dependent claims 3, 6, 11, 14, and 20 depend on unpatentable independent Claims 1, 10, and 18 and do not add limitations that overcome the rejection, they likewise remain rejected. The rejections under 35 U.S.C. 103 are maintained.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Mann et al. (US 20140003431 A1) discloses a timer wheel with particular granularities for expiration of timeouts associated with requests (see [0075-0076]).
THIS ACTION IS MADE FINAL. Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to FARAZ T AKBARI whose telephone number is (571)272-4166. The examiner can normally be reached Monday-Thursday 9:30am-7:30pm ET.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, April Blair can be reached at (571)270-1014. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/FARAZ T AKBARI/ Examiner, Art Unit 2196
/APRIL Y BLAIR/ Supervisory Patent Examiner, Art Unit 2196