Skip to content

Commit 3a5254b

Browse files
committed
Move callback data into a dedicated class.
This will make it easier to add additional properties in the future if they're ever needed. Signed-off-by: Bradley Grainger <[email protected]>
1 parent ec46674 commit 3a5254b

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

src/MySqlConnector/MySqlConnection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ internal async Task OpenAsync(IOBehavior? ioBehavior, CancellationToken cancella
584584
EnlistTransaction(System.Transactions.Transaction.Current);
585585

586586
if (ConnectionOpenedCallback is { } connectionOpenedCallback)
587-
await connectionOpenedCallback(this, m_session.Conditions).ConfigureAwait(false);
587+
await connectionOpenedCallback(new(this, m_session.Conditions)).ConfigureAwait(false);
588588
}
589589
catch (Exception ex) when (activity is { IsAllDataRequested: true })
590590
{

src/MySqlConnector/MySqlConnectionOpenedCallback.cs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,28 @@ namespace MySqlConnector;
33
/// <summary>
44
/// A callback that is invoked when a new <see cref="MySqlConnection"/> is opened.
55
/// </summary>
6-
/// <param name="connection">The <see cref="MySqlConnection"/> that was opened.</param>
7-
/// <param name="conditions">Bitflags giving the conditions under which a connection was opened.</param>
6+
/// <param name="data">A <see cref="MySqlConnectionOpenedData"/> giving information about the connection being opened.</param>
87
/// <returns>A <see cref="ValueTask"/> representing the result of the possibly-asynchronous operation.</returns>
9-
public delegate ValueTask MySqlConnectionOpenedCallback(MySqlConnection connection, MySqlConnectionOpenedConditions conditions);
8+
public delegate ValueTask MySqlConnectionOpenedCallback(MySqlConnectionOpenedData data);
9+
10+
public sealed class MySqlConnectionOpenedData
11+
{
12+
/// <summary>
13+
/// The <see cref="MySqlConnection"/> that was opened.
14+
/// </summary>
15+
public MySqlConnection Connection { get; }
16+
17+
/// <summary>
18+
/// Bitflags giving the conditions under which a connection was opened.
19+
/// </summary>
20+
public MySqlConnectionOpenedConditions Conditions { get; }
21+
22+
internal MySqlConnectionOpenedData(MySqlConnection connection, MySqlConnectionOpenedConditions conditions)
23+
{
24+
Connection = connection;
25+
Conditions = conditions;
26+
}
27+
}
1028

1129
/// <summary>
1230
/// Bitflags giving the conditions under which a connection was opened.

src/MySqlConnector/MySqlDataSourceBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,11 @@ public MySqlDataSourceBuilder UseConnectionOpenedCallback(MySqlConnectionOpenedC
9595
return this;
9696
}
9797

98-
public MySqlDataSourceBuilder UseConnectionOpenedCallback(Action<MySqlConnection, MySqlConnectionOpenedConditions> callback)
98+
public MySqlDataSourceBuilder UseConnectionOpenedCallback(Action<MySqlConnectionOpenedData> callback)
9999
{
100-
m_connectionOpenedCallback = (connection, conditions) =>
100+
m_connectionOpenedCallback = data =>
101101
{
102-
callback(connection, conditions);
102+
callback(data);
103103
return default;
104104
};
105105
return this;

tests/MySqlConnector.Tests/ConnectionOpenedCallbackTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ public void CallbackIsInvoked()
4848
public void SyncCallbackIsInvoked()
4949
{
5050
var dataSource = new MySqlDataSourceBuilder(m_csb.ConnectionString)
51-
.UseConnectionOpenedCallback((conn, cond) =>
51+
.UseConnectionOpenedCallback(data =>
5252
{
5353
m_connectionOpenedCount++;
54-
m_connectionOpenedConditions = cond;
54+
m_connectionOpenedConditions = data.Conditions;
5555
})
5656
.Build();
5757
using (var connection = dataSource.CreateConnection())
@@ -146,10 +146,10 @@ public void ConditionsForNonResetConnection()
146146
}
147147
}
148148

149-
private ValueTask OnConnectionOpenedAsync(MySqlConnection connection, MySqlConnectionOpenedConditions conditions)
149+
private ValueTask OnConnectionOpenedAsync(MySqlConnectionOpenedData data)
150150
{
151151
m_connectionOpenedCount++;
152-
m_connectionOpenedConditions = conditions;
152+
m_connectionOpenedConditions = data.Conditions;
153153
return default;
154154
}
155155

0 commit comments

Comments
 (0)