BIND 10 #3075: Implement Main Event Loop in D2Process

BIND 10 Development do-not-reply at isc.org
Wed Jul 31 11:34:53 UTC 2013


#3075: Implement Main Event Loop in D2Process
-------------------------------------+-------------------------------------
                   Reporter:  tmark  |                 Owner:
                       Type:         |                Status:  new
  enhancement                        |             Milestone:  New Tasks
                   Priority:         |              Keywords:  Task# 6.2.1
  medium                             |             Sensitive:  0
                  Component:  dhcp-  |           Sub-Project:  DHCP
  ddns                               |  Estimated Difficulty:  0
               CVSS Scoring:         |           Total Hours:  0
            Defect Severity:  N/A    |
Feature Depending on Ticket:         |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------
 Task #6.2 from the task spread sheet. Develop event processing loop as
 described in the DHCP-DDNS design, discussed in the "D2 Event Processing"
 section.

 Note that the original design calls for the event loop to be within the
 update manager class.  Subsequent refinement has moved it up,
 intoD2Process.  This ticket has been split off from 3059.

 The initial implementation should assume/support single-threaded operation
 (as excerpted from the design doc):

 {{{
 while (!shutdown) {

         // Execute all ready callbacks, or wait for one
         if (io_service.poll() || io_service.run_one()) {

             // One or more of the following has occurred
             //   a. NCR message received and has been queued
             //   b. Pending DNS IO has completed
             //   c. Interval timer expired

             if (QueueMgr->queueNotEmpty()) {
                 // Dequeue next pending request
                 NCR = QueueMgr->dequeue();

                 // Start a new transaction for the NCR
                 instantiate_transaction(io_service, NCR);
             }

             handle_finished_transactions();

         } else {

             // we are here because there is no more work to do
             // somebody stopped io_service, shutdown request likely
 culprit

         }
     }
 }}}

-- 
Ticket URL: <http://bind10.isc.org/ticket/3075>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list