Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor the NetworkSystem API #1147

Merged
merged 7 commits into from
Apr 15, 2024
Merged

Conversation

imobachgs
Copy link
Contributor

@imobachgs imobachgs commented Apr 13, 2024

The problem

While working in introducing an API to get the runtime configuration of the network, we decided that we were not happy with the current NetworkSystem API. There was quite some manual to do when using the API, like dealing with channels and having to explictly move the server to a separate Tokio task.

The solution

This change splits the API into smaller pieces:

  • NetworkSystem is still the main entry point.
  • NetworkSystemClient wraps the actions channel and offers a higher-level API by hiding the message passing handling.
  • NetworkSystemServer keeps the network state and dispatches the actions. Beware that this struct is private and the NetworkSystemClient should be the only way to communicate with it.

You can get a better idea of how it looks like through the following example (included in the documentation):

let adapter = NetworkManagerAdapter::from_system()
    .await
    .expect("Could not connect to NetworkManager.");
let dbus = connection()
    .await
    .expect("Could not connect to Agama's D-Bus server.");
let network = NetworkSystem::new(dbus, adapter);

// Start the networking service and get the client for communication.
let client = network.start()
    .await
    .expect("Could not start the networking configuration system.");

// Perform some action, like getting the list of devices.
let devices = client.get_devices().await.unwrap();

To do

  • Get rid of NetworkService as it is not needed anymore. Should we rename NetworkSystem*?.
  • Adapt the HTTP/JSON interface to the new API (partially done).

@imobachgs imobachgs requested a review from teclator April 13, 2024 09:50
@imobachgs imobachgs marked this pull request as ready for review April 15, 2024 06:39
imobachgs and others added 2 commits April 15, 2024 09:49
Co-authored-by: Knut Alejandro Anderssen González <kanderssen@suse.de>
@teclator
Copy link
Contributor

LGTM: about renaming.. for me makes sense

Copy link
Contributor

@teclator teclator left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@imobachgs imobachgs merged commit 12587e1 into architecture_2024 Apr 15, 2024
2 checks passed
@imobachgs imobachgs deleted the network-system-api branch April 15, 2024 09:00
@imobachgs imobachgs mentioned this pull request May 17, 2024
imobachgs added a commit that referenced this pull request May 17, 2024
Prepare for releasing Agama 8. It includes the following pull requests:

* #884
* #886
* #914
* #918
* #956
* #957
* #958
* #959
* #960
* #961
* #962
* #963
* #964
* #965
* #966
* #969
* #970
* #976
* #977
* #978
* #979
* #980
* #981
* #983
* #984
* #985
* #986
* #988
* #991
* #992
* #995
* #996
* #997
* #999
* #1003
* #1004
* #1006
* #1007
* #1008
* #1009
* #1010
* #1011
* #1012
* #1014
* #1015
* #1016
* #1017
* #1020
* #1022
* #1023
* #1024
* #1025
* #1027
* #1028
* #1029
* #1030
* #1031
* #1032
* #1033
* #1034
* #1035
* #1036
* #1038
* #1039
* #1041
* #1042
* #1043
* #1045
* #1046
* #1047
* #1048
* #1052
* #1054
* #1056
* #1057
* #1060
* #1061
* #1062
* #1063
* #1064
* #1066
* #1067
* #1068
* #1069
* #1071
* #1072
* #1073
* #1074
* #1075
* #1079
* #1080
* #1081
* #1082
* #1085
* #1086
* #1087
* #1088
* #1089
* #1090
* #1091
* #1092
* #1093
* #1094
* #1095
* #1096
* #1097
* #1098
* #1099
* #1100
* #1102
* #1103
* #1104
* #1105
* #1106
* #1109
* #1110
* #1111
* #1112
* #1114
* #1116
* #1117
* #1118
* #1119
* #1120
* #1121
* #1122
* #1123
* #1125
* #1126
* #1127
* #1128
* #1129
* #1130
* #1131
* #1132
* #1133
* #1134
* #1135
* #1136
* #1138
* #1139
* #1140
* #1141
* #1142
* #1143
* #1144
* #1145
* #1146
* #1147
* #1148
* #1149
* #1151
* #1152
* #1153
* #1154
* #1155
* #1156
* #1157
* #1158
* #1160
* #1161
* #1162
* #1163
* #1164
* #1165
* #1166
* #1167
* #1168
* #1169
* #1170
* #1171
* #1172
* #1173
* #1174
* #1175
* #1177
* #1178
* #1180
* #1181
* #1182
* #1183
* #1184
* #1185
* #1187
* #1188
* #1189
* #1190
* #1191
* #1192
* #1193
* #1194
* #1195
* #1196
* #1198
* #1199
* #1200
* #1201
* #1203
* #1204
* #1205
* #1206
* #1207
* #1208
* #1209
* #1210
* #1211
* #1212
* #1213
* #1214
* #1215
* #1216
* #1217
* #1219
* #1220
* #1221
* #1222
* #1223
* #1224
* #1225
* #1226
* #1227
* #1229
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants