[geary/mjog/logging-improvements: 3/23] Geary.Smtp: Update main classes to use new logging framework
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/mjog/logging-improvements: 3/23] Geary.Smtp: Update main classes to use new logging framework
- Date: Thu, 16 Apr 2020 09:02:54 +0000 (UTC)
commit 46c38edb8b308b04f1f8613a6d78b0aacb07c20f
Author: Michael Gratton <mike vee net>
Date: Wed Apr 15 14:54:07 2020 +1000
Geary.Smtp: Update main classes to use new logging framework
Ensure ClientService uses a logging sub-domain, update ClientSession
and ClientConnection to implement Logging.Source.
src/engine/smtp/smtp-client-connection.vala | 64 ++++++++++++++++++++---------
src/engine/smtp/smtp-client-service.vala | 14 ++++++-
src/engine/smtp/smtp-client-session.vala | 39 ++++++++++++++----
3 files changed, 89 insertions(+), 28 deletions(-)
---
diff --git a/src/engine/smtp/smtp-client-connection.vala b/src/engine/smtp/smtp-client-connection.vala
index 1165e7a8..9b698941 100644
--- a/src/engine/smtp/smtp-client-connection.vala
+++ b/src/engine/smtp/smtp-client-connection.vala
@@ -1,15 +1,35 @@
-/* Copyright 2016 Software Freedom Conservancy Inc.
+/*
+ * Copyright © 2016 Software Freedom Conservancy Inc.
+ * Copyright © 2020 Michael Gratton <mike vee net>
*
* This software is licensed under the GNU Lesser General Public License
- * (version 2.1 or later). See the COPYING file in this distribution.
+ * (version 2.1 or later). See the COPYING file in this distribution.
*/
-public class Geary.Smtp.ClientConnection {
+/** A network connection to a SMTP service. */
+internal class Geary.Smtp.ClientConnection : BaseObject, Logging.Source {
+
+ /** The GLib logging domain used by this class. */
+ public const string LOGGING_DOMAIN = ClientService.LOGGING_DOMAIN + ".Net";
public const uint DEFAULT_TIMEOUT_SEC = 20;
public Geary.Smtp.Capabilities? capabilities { get; private set; default = null; }
+ /** {@inheritDoc} */
+ public override string logging_domain {
+ get { return LOGGING_DOMAIN; }
+ }
+
+ /** {@inheritDoc} */
+ public Logging.Flag logging_flags {
+ get; protected set; default = Logging.Flag.ALL;
+ }
+
+ /** {@inheritDoc} */
+ public Logging.Source? logging_parent { get { return _logging_parent; } }
+ private weak Logging.Source? _logging_parent = null;
+
private Geary.Endpoint endpoint;
private IOStream? cx = null;
private SocketConnection? socket_cx = null;
@@ -26,8 +46,7 @@ public class Geary.Smtp.ClientConnection {
public async Greeting? connect_async(Cancellable? cancellable = null) throws Error {
if (cx != null) {
- debug("Already connected to %s", to_string());
-
+ debug("Already connected");
return null;
}
@@ -36,7 +55,7 @@ public class Geary.Smtp.ClientConnection {
// read and deserialize the greeting
Greeting greeting = new Greeting(yield recv_response_lines_async(cancellable));
- Logging.debug(Logging.Flag.NETWORK, "[%s] SMTP Greeting: %s", to_string(), greeting.to_string());
+ debug("SMTP Greeting: %s", greeting.to_string());
return greeting;
}
@@ -69,8 +88,7 @@ public class Geary.Smtp.ClientConnection {
Response response = yield transaction_async(authenticator.initiate(), cancellable);
- Logging.debug(Logging.Flag.NETWORK, "[%s] Initiated SMTP %s authentication", to_string(),
- authenticator.to_string());
+ debug("Initiated SMTP %s authentication", authenticator.to_string());
// Possible for initiate() Request to:
// (a) immediately generate success (due to valid authentication being passed in Request);
@@ -85,7 +103,7 @@ public class Geary.Smtp.ClientConnection {
if (data == null || data.size == 0)
data = new Memory.StringBuffer(DataFormat.CANCEL_AUTHENTICATION);
- Logging.debug(Logging.Flag.NETWORK, "[%s] SMTP AUTH Challenge recvd", to_string());
+ debug("SMTP AUTH Challenge recvd");
yield Stream.write_all_async(douts, data, cancellable);
douts.put_string(DataFormat.LINE_TERMINATOR);
@@ -116,7 +134,7 @@ public class Geary.Smtp.ClientConnection {
if (!response.code.is_start_data())
return response;
- Logging.debug(Logging.Flag.NETWORK, "[%s] SMTP Data: <%z>", to_string(), data.size);
+ debug("SMTP Data: <%z>", data.size);
if (!already_dotstuffed) {
// By using DataStreamNewlineType.ANY, we're assured to get each line and convert to
@@ -153,7 +171,7 @@ public class Geary.Smtp.ClientConnection {
public async void send_request_async(Request request, Cancellable? cancellable = null) throws Error {
check_connected();
- Logging.debug(Logging.Flag.NETWORK, "[%s] SMTP Request: %s", to_string(), request.to_string());
+ debug("SMTP Request: %s", request.to_string());
douts.put_string(request.serialize());
douts.put_string(DataFormat.LINE_TERMINATOR);
@@ -180,9 +198,7 @@ public class Geary.Smtp.ClientConnection {
public async Response recv_response_async(Cancellable? cancellable = null) throws Error {
Response response = new Response(yield recv_response_lines_async(cancellable));
-
- Logging.debug(Logging.Flag.NETWORK, "[%s] SMTP Response: %s", to_string(), response.to_string());
-
+ debug("SMTP Response: %s", response.to_string());
return response;
}
@@ -203,8 +219,8 @@ public class Geary.Smtp.ClientConnection {
try {
fqdn = yield Resolver.get_default().lookup_by_address_async(local_addr, cancellable);
} catch (Error err) {
- debug("[%s] Unable to lookup local address for %s: %s", to_string(),
- local_addr.to_string(), err.message);
+ debug("Unable to lookup local address for %s: %s",
+ local_addr.to_string(), err.message);
}
}
@@ -296,8 +312,19 @@ public class Geary.Smtp.ClientConnection {
throw new SmtpError.NOT_CONNECTED("Not connected to %s", to_string());
}
- public string to_string() {
- return endpoint.to_string();
+ /** {@inheritDoc} */
+ public virtual Logging.State to_logging_state() {
+ return new Logging.State(
+ this,
+ "%s/%s",
+ endpoint.to_string(),
+ is_connected() ? "connected" : "disconnected"
+ );
+ }
+
+ /** Sets the service's logging parent. */
+ internal void set_logging_parent(Logging.Source parent) {
+ this._logging_parent = parent;
}
private void set_data_streams(IOStream stream) {
@@ -308,4 +335,3 @@ public class Geary.Smtp.ClientConnection {
douts.set_close_base_stream(false);
}
}
-
diff --git a/src/engine/smtp/smtp-client-service.vala b/src/engine/smtp/smtp-client-service.vala
index d3e022f6..3a0c786e 100644
--- a/src/engine/smtp/smtp-client-service.vala
+++ b/src/engine/smtp/smtp-client-service.vala
@@ -1,6 +1,6 @@
/*
- * Copyright 2016 Software Freedom Conservancy Inc.
- * Copyright 2018 Michael Gratton <mike vee net>
+ * Copyright © 2016 Software Freedom Conservancy Inc.
+ * Copyright © 2018, 2020 Michael Gratton <mike vee net>
*
* This software is licensed under the GNU Lesser General Public License
* (version 2.1 or later). See the COPYING file in this distribution.
@@ -15,6 +15,10 @@
public class Geary.Smtp.ClientService : Geary.ClientService {
+ /** The GLib logging domain used by this class. */
+ public const string LOGGING_DOMAIN = Logging.DOMAIN + ".Smtp";
+
+
// Used solely for debugging, hence "(no subject)" not marked for
// translation
private static string email_subject(EmailHeaderSet email) {
@@ -35,6 +39,11 @@ public class Geary.Smtp.ClientService : Geary.ClientService {
default = new SimpleProgressMonitor(ProgressType.ACTIVITY);
}
+ /** {@inheritDoc} */
+ public override string logging_domain {
+ get { return LOGGING_DOMAIN; }
+ }
+
private Account owner { get { return this.outbox.account; } }
private Nonblocking.Queue<EmailIdentifier> outbox_queue =
@@ -298,6 +307,7 @@ public class Geary.Smtp.ClientService : Geary.ClientService {
}
Smtp.ClientSession smtp = new Geary.Smtp.ClientSession(this.remote);
+ smtp.set_logging_parent(this);
sending_monitor.notify_start();
Error? smtp_err = null;
diff --git a/src/engine/smtp/smtp-client-session.vala b/src/engine/smtp/smtp-client-session.vala
index 86300d81..f22d90a5 100644
--- a/src/engine/smtp/smtp-client-session.vala
+++ b/src/engine/smtp/smtp-client-session.vala
@@ -1,10 +1,28 @@
-/* Copyright 2016 Software Freedom Conservancy Inc.
+/*
+ * Copyright © 2016 Software Freedom Conservancy Inc.
+ * Copyright © 2020 Michael Gratton <mike vee net>
*
* This software is licensed under the GNU Lesser General Public License
- * (version 2.1 or later). See the COPYING file in this distribution.
+ * (version 2.1 or later). See the COPYING file in this distribution.
*/
-public class Geary.Smtp.ClientSession {
+/** A client connection to a SMTP service. */
+public class Geary.Smtp.ClientSession : BaseObject, Logging.Source {
+
+ /** {@inheritDoc} */
+ public override string logging_domain {
+ get { return ClientService.LOGGING_DOMAIN; }
+ }
+
+ /** {@inheritDoc} */
+ public Logging.Flag logging_flags {
+ get; protected set; default = Logging.Flag.ALL;
+ }
+
+ /** {@inheritDoc} */
+ public Logging.Source? logging_parent { get { return _logging_parent; } }
+ private weak Logging.Source? _logging_parent = null;
+
private ClientConnection cx;
private bool rset_required = false;
@@ -18,7 +36,8 @@ public class Geary.Smtp.ClientSession {
}
public ClientSession(Geary.Endpoint endpoint) {
- cx = new ClientConnection(endpoint);
+ this.cx = new ClientConnection(endpoint);
+ this.cx.set_logging_parent(this);
}
protected virtual void notify_connected(Greeting greeting) {
@@ -230,8 +249,14 @@ public class Geary.Smtp.ClientSession {
}
}
- public string to_string() {
- return cx.to_string();
+ /** {@inheritDoc} */
+ public virtual Logging.State to_logging_state() {
+ return new Logging.State(this, this.cx.to_string());
}
-}
+ /** Sets the service's logging parent. */
+ internal void set_logging_parent(Logging.Source parent) {
+ this._logging_parent = parent;
+ }
+
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]