AsyncCallQueue.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2019 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 /* DEBUG: section 41 Event Processing */
10 
11 #include "squid.h"
12 #include "base/AsyncCall.h"
13 #include "base/AsyncCallQueue.h"
14 #include "Debug.h"
15 
17 
19 {
20 }
21 
23 {
24  assert(call != NULL);
25  assert(!call->theNext);
26  if (theHead != NULL) { // append
28  theTail->theNext = call;
29  theTail = call;
30  } else { // create queue from cratch
31  theHead = theTail = call;
32  }
33 }
34 
35 // Fire all scheduled calls; returns true if at least one call was fired.
36 // The calls may be added while the current call is in progress.
37 bool
39 {
40  const bool made = theHead != NULL;
41  while (theHead) {
43  fireNext();
44  }
45  if (made)
47  return made;
48 }
49 
50 void
52 {
54  theHead = call->theNext;
55  call->theNext = NULL;
56  if (theTail == call)
57  theTail = NULL;
58 
59  debugs(call->debugSection, call->debugLevel, "entering " << *call);
60  call->make();
61  debugs(call->debugSection, call->debugLevel, "leaving " << *call);
62 }
63 
66 {
67  // TODO: how to remove this frequent check while supporting early calls?
68  if (!TheInstance)
70 
71  return *TheInstance;
72 }
73 
void schedule(AsyncCall::Pointer &call)
CodeContext::Pointer codeContext
what the callee is expected to work on
Definition: AsyncCall.h:80
AsyncCall::Pointer theHead
static AsyncCallQueue & Instance()
static void Reset()
forgets the current context, setting it to nil/unknown
Definition: CodeContext.cc:75
#define NULL
Definition: types.h:166
const int debugLevel
Definition: AsyncCall.h:83
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Debug.h:128
const int debugSection
Definition: AsyncCall.h:82
AsyncCall::Pointer theTail
#define assert(EX)
Definition: assert.h:19
static AsyncCallQueue * TheInstance
void make()
Definition: AsyncCall.cc:39
AsyncCall::Pointer theNext
Definition: AsyncCall.h:91

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors