+ clog << "Version:" << Config->Version <<
+ " SingleInstance:" << Config->SingleInstance <<
+ " Pipeline:" << Config->Pipeline <<
+ " SendConfig:" << Config->SendConfig <<
+ " LocalOnly: " << Config->LocalOnly <<
+ " NeedsCleanup: " << Config->NeedsCleanup <<
+ " Removable: " << Config->Removable << endl;
+ }
+
+ return true;
+}
+ /*}}}*/
+// Worker::MediaChange - Request a media change /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::MediaChange(string Message)
+{
+ if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"),
+ LookupTag(Message,"Drive")) == false)
+ {
+ char S[300];
+ snprintf(S,sizeof(S),"603 Media Changed\nFailed: true\n\n");
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(S,"\n") << endl;
+ OutQueue += S;
+ OutReady = true;
+ return true;
+ }
+
+ char S[300];
+ snprintf(S,sizeof(S),"603 Media Changed\n\n");
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(S,"\n") << endl;
+ OutQueue += S;
+ OutReady = true;
+ return true;
+}
+ /*}}}*/
+// Worker::SendConfiguration - Send the config to the method /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::SendConfiguration()
+{
+ if (Config->SendConfig == false)
+ return true;
+
+ if (OutFd == -1)
+ return false;
+
+ string Message = "601 Configuration\n";
+ Message.reserve(2000);
+
+ /* Write out all of the configuration directives by walking the
+ configuration tree */
+ const Configuration::Item *Top = _config->Tree(0);
+ for (; Top != 0;)
+ {
+ if (Top->Value.empty() == false)
+ {
+ string Line = "Config-Item: " + QuoteString(Top->FullTag(),"=\"\n") + "=";
+ Line += QuoteString(Top->Value,"\n") + '\n';
+ Message += Line;
+ }
+
+ if (Top->Child != 0)
+ {
+ Top = Top->Child;
+ continue;
+ }
+
+ while (Top != 0 && Top->Next == 0)
+ Top = Top->Parent;
+ if (Top != 0)
+ Top = Top->Next;
+ }
+ Message += '\n';
+
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(Message,"\n") << endl;
+ OutQueue += Message;
+ OutReady = true;
+
+ return true;
+}
+ /*}}}*/
+// Worker::QueueItem - Add an item to the outbound queue /*{{{*/
+// ---------------------------------------------------------------------
+/* Send a URI Acquire message to the method */
+bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item)
+{
+ if (OutFd == -1)
+ return false;
+
+ string Message = "600 URI Acquire\n";
+ Message.reserve(300);
+ Message += "URI: " + Item->URI;
+ Message += "\nFilename: " + Item->Owner->DestFile;
+ Message += Item->Owner->Custom600Headers();
+ Message += "\n\n";
+
+ if (Debug == true)
+ clog << " -> " << Access << ':' << QuoteString(Message,"\n") << endl;
+ OutQueue += Message;
+ OutReady = true;
+
+ return true;
+}
+ /*}}}*/
+// Worker::OutFdRead - Out bound FD is ready /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgAcquire::Worker::OutFdReady()
+{
+ int Res;
+ do
+ {
+ Res = write(OutFd,OutQueue.c_str(),OutQueue.length());