summaryrefslogtreecommitdiffstats
path: root/printing/backend/cups_helper.cc
diff options
context:
space:
mode:
Diffstat (limited to 'printing/backend/cups_helper.cc')
-rw-r--r--printing/backend/cups_helper.cc44
1 files changed, 44 insertions, 0 deletions
diff --git a/printing/backend/cups_helper.cc b/printing/backend/cups_helper.cc
new file mode 100644
index 0000000..2c3b853
--- /dev/null
+++ b/printing/backend/cups_helper.cc
@@ -0,0 +1,44 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "printing/backend/cups_helper.h"
+
+#include "base/logging.h"
+#include "googleurl/src/gurl.h"
+
+namespace printing {
+
+// Default port for IPP print servers.
+static const int kDefaultIPPServerPort = 631;
+
+// Helper wrapper around http_t structure, with connection and cleanup
+// functionality.
+HttpConnectionCUPS::HttpConnectionCUPS(const GURL& print_server_url)
+ : http_(NULL) {
+ // If we have an empty url, use default print server.
+ if (print_server_url.is_empty())
+ return;
+
+ int port = print_server_url.IntPort();
+ if (port == url_parse::PORT_UNSPECIFIED)
+ port = kDefaultIPPServerPort;
+
+ http_ = httpConnectEncrypt(print_server_url.host().c_str(), port,
+ HTTP_ENCRYPT_NEVER);
+ if (http_ == NULL) {
+ LOG(ERROR) << "CP_CUPS: Failed connecting to print server: " <<
+ print_server_url;
+ }
+}
+
+HttpConnectionCUPS::~HttpConnectionCUPS() {
+ if (http_ != NULL)
+ httpClose(http_);
+}
+
+http_t* HttpConnectionCUPS::http() {
+ return http_;
+}
+
+} // namespace printing