Skip to content

Commit bca51a4

Browse files
lorenteymilseman
andcommitted
Implement local addresses, address families, sendmsg/recvmsg (#2)
* Implement UNIX domain socket addresses * Implement standalone SocketAddress.Family enum * Add availability comments * [WIP] Implement sendmsg/rcvmsg * SocketAddress: Use _RawBuffer. * ControlMessageBuffer: Fix issues uncovered in testing * Enums: use mutable rawValues This helps simplify code that needs to update these directly. * Update/simplify sendmsg/recvmsg implementations * Mocking: Add support for wildcard argument matching * Add some AncillaryMessageBuffer tests; fix issues. * Apply suggestions from code review Co-authored-by: Michael Ilseman <michael.ilseman@gmail.com> * Make mock failure output a little easier to follow * Implement support for getaddrinfo * Add an executable with very simple sample code * Add availability marker for new CInterop typealiases * Do not use implicitly unwrapped optionals * Rework sendmsg/recvmsg, make some samples * Updates/cleanups/discussion results Co-authored-by: Michael Ilseman <michael.ilseman@gmail.com>
1 parent a962528 commit bca51a4

33 files changed

+2854
-180
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1250"
4+
version = "1.7">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "SystemPackage"
18+
BuildableName = "SystemPackage"
19+
BlueprintName = "SystemPackage"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
</BuildActionEntries>
24+
</BuildAction>
25+
<TestAction
26+
buildConfiguration = "Debug"
27+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29+
shouldUseLaunchSchemeArgsEnv = "YES">
30+
<Testables>
31+
</Testables>
32+
</TestAction>
33+
<LaunchAction
34+
buildConfiguration = "Debug"
35+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
36+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
37+
launchStyle = "0"
38+
useCustomWorkingDirectory = "NO"
39+
ignoresPersistentStateOnLaunch = "NO"
40+
debugDocumentVersioning = "YES"
41+
debugServiceExtension = "internal"
42+
allowLocationSimulation = "YES">
43+
</LaunchAction>
44+
<ProfileAction
45+
buildConfiguration = "Release"
46+
shouldUseLaunchSchemeArgsEnv = "YES"
47+
savedToolIdentifier = ""
48+
useCustomWorkingDirectory = "NO"
49+
debugDocumentVersioning = "YES">
50+
<MacroExpansion>
51+
<BuildableReference
52+
BuildableIdentifier = "primary"
53+
BlueprintIdentifier = "SystemPackage"
54+
BuildableName = "SystemPackage"
55+
BlueprintName = "SystemPackage"
56+
ReferencedContainer = "container:">
57+
</BuildableReference>
58+
</MacroExpansion>
59+
</ProfileAction>
60+
<AnalyzeAction
61+
buildConfiguration = "Debug">
62+
</AnalyzeAction>
63+
<ArchiveAction
64+
buildConfiguration = "Release"
65+
revealArchiveInOrganizer = "YES">
66+
</ArchiveAction>
67+
<InstallAction
68+
buildConfiguration = "Release">
69+
</InstallAction>
70+
</Scheme>
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1250"
4+
version = "1.7">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "SystemPackage"
18+
BuildableName = "SystemPackage"
19+
BlueprintName = "SystemPackage"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
<BuildActionEntry
24+
buildForTesting = "YES"
25+
buildForRunning = "YES"
26+
buildForProfiling = "YES"
27+
buildForArchiving = "YES"
28+
buildForAnalyzing = "YES">
29+
<BuildableReference
30+
BuildableIdentifier = "primary"
31+
BlueprintIdentifier = "system-samples"
32+
BuildableName = "system-samples"
33+
BlueprintName = "system-samples"
34+
ReferencedContainer = "container:">
35+
</BuildableReference>
36+
</BuildActionEntry>
37+
<BuildActionEntry
38+
buildForTesting = "YES"
39+
buildForRunning = "YES"
40+
buildForProfiling = "NO"
41+
buildForArchiving = "NO"
42+
buildForAnalyzing = "YES">
43+
<BuildableReference
44+
BuildableIdentifier = "primary"
45+
BlueprintIdentifier = "SystemTests"
46+
BuildableName = "SystemTests"
47+
BlueprintName = "SystemTests"
48+
ReferencedContainer = "container:">
49+
</BuildableReference>
50+
</BuildActionEntry>
51+
<BuildActionEntry
52+
buildForTesting = "YES"
53+
buildForRunning = "YES"
54+
buildForProfiling = "YES"
55+
buildForArchiving = "YES"
56+
buildForAnalyzing = "YES">
57+
<BuildableReference
58+
BuildableIdentifier = "primary"
59+
BlueprintIdentifier = "CSystem"
60+
BuildableName = "CSystem"
61+
BlueprintName = "CSystem"
62+
ReferencedContainer = "container:">
63+
</BuildableReference>
64+
</BuildActionEntry>
65+
</BuildActionEntries>
66+
</BuildAction>
67+
<TestAction
68+
buildConfiguration = "Debug"
69+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
70+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
71+
shouldUseLaunchSchemeArgsEnv = "YES">
72+
<Testables>
73+
<TestableReference
74+
skipped = "NO">
75+
<BuildableReference
76+
BuildableIdentifier = "primary"
77+
BlueprintIdentifier = "SystemTests"
78+
BuildableName = "SystemTests"
79+
BlueprintName = "SystemTests"
80+
ReferencedContainer = "container:">
81+
</BuildableReference>
82+
</TestableReference>
83+
</Testables>
84+
</TestAction>
85+
<LaunchAction
86+
buildConfiguration = "Debug"
87+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
88+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
89+
launchStyle = "0"
90+
useCustomWorkingDirectory = "NO"
91+
ignoresPersistentStateOnLaunch = "NO"
92+
debugDocumentVersioning = "YES"
93+
debugServiceExtension = "internal"
94+
allowLocationSimulation = "YES">
95+
<MacroExpansion>
96+
<BuildableReference
97+
BuildableIdentifier = "primary"
98+
BlueprintIdentifier = "system-samples"
99+
BuildableName = "system-samples"
100+
BlueprintName = "system-samples"
101+
ReferencedContainer = "container:">
102+
</BuildableReference>
103+
</MacroExpansion>
104+
</LaunchAction>
105+
<ProfileAction
106+
buildConfiguration = "Release"
107+
shouldUseLaunchSchemeArgsEnv = "YES"
108+
savedToolIdentifier = ""
109+
useCustomWorkingDirectory = "NO"
110+
debugDocumentVersioning = "YES">
111+
<MacroExpansion>
112+
<BuildableReference
113+
BuildableIdentifier = "primary"
114+
BlueprintIdentifier = "system-samples"
115+
BuildableName = "system-samples"
116+
BlueprintName = "system-samples"
117+
ReferencedContainer = "container:">
118+
</BuildableReference>
119+
</MacroExpansion>
120+
</ProfileAction>
121+
<AnalyzeAction
122+
buildConfiguration = "Debug">
123+
</AnalyzeAction>
124+
<ArchiveAction
125+
buildConfiguration = "Release"
126+
revealArchiveInOrganizer = "YES">
127+
</ArchiveAction>
128+
<InstallAction
129+
buildConfiguration = "Release">
130+
</InstallAction>
131+
</Scheme>
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<Scheme
3+
LastUpgradeVersion = "1250"
4+
version = "1.7">
5+
<BuildAction
6+
parallelizeBuildables = "YES"
7+
buildImplicitDependencies = "YES">
8+
<BuildActionEntries>
9+
<BuildActionEntry
10+
buildForTesting = "YES"
11+
buildForRunning = "YES"
12+
buildForProfiling = "YES"
13+
buildForArchiving = "YES"
14+
buildForAnalyzing = "YES">
15+
<BuildableReference
16+
BuildableIdentifier = "primary"
17+
BlueprintIdentifier = "system-samples"
18+
BuildableName = "system-samples"
19+
BlueprintName = "system-samples"
20+
ReferencedContainer = "container:">
21+
</BuildableReference>
22+
</BuildActionEntry>
23+
<BuildActionEntry
24+
buildForTesting = "YES"
25+
buildForRunning = "YES"
26+
buildForProfiling = "NO"
27+
buildForArchiving = "NO"
28+
buildForAnalyzing = "YES">
29+
<BuildableReference
30+
BuildableIdentifier = "primary"
31+
BlueprintIdentifier = "SystemTests"
32+
BuildableName = "SystemTests"
33+
BlueprintName = "SystemTests"
34+
ReferencedContainer = "container:">
35+
</BuildableReference>
36+
</BuildActionEntry>
37+
</BuildActionEntries>
38+
</BuildAction>
39+
<TestAction
40+
buildConfiguration = "Debug"
41+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
42+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
43+
shouldUseLaunchSchemeArgsEnv = "YES">
44+
<Testables>
45+
<TestableReference
46+
skipped = "NO">
47+
<BuildableReference
48+
BuildableIdentifier = "primary"
49+
BlueprintIdentifier = "SystemTests"
50+
BuildableName = "SystemTests"
51+
BlueprintName = "SystemTests"
52+
ReferencedContainer = "container:">
53+
</BuildableReference>
54+
</TestableReference>
55+
</Testables>
56+
</TestAction>
57+
<LaunchAction
58+
buildConfiguration = "Debug"
59+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
60+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
61+
launchStyle = "0"
62+
useCustomWorkingDirectory = "NO"
63+
ignoresPersistentStateOnLaunch = "NO"
64+
debugDocumentVersioning = "YES"
65+
debugServiceExtension = "internal"
66+
allowLocationSimulation = "YES">
67+
<BuildableProductRunnable
68+
runnableDebuggingMode = "0">
69+
<BuildableReference
70+
BuildableIdentifier = "primary"
71+
BlueprintIdentifier = "system-samples"
72+
BuildableName = "system-samples"
73+
BlueprintName = "system-samples"
74+
ReferencedContainer = "container:">
75+
</BuildableReference>
76+
</BuildableProductRunnable>
77+
<CommandLineArguments>
78+
<CommandLineArgument
79+
argument = "connect localhost 12345 --udp"
80+
isEnabled = "NO">
81+
</CommandLineArgument>
82+
<CommandLineArgument
83+
argument = "listen 12345"
84+
isEnabled = "NO">
85+
</CommandLineArgument>
86+
<CommandLineArgument
87+
argument = "listen 12345 --udp"
88+
isEnabled = "YES">
89+
</CommandLineArgument>
90+
</CommandLineArguments>
91+
</LaunchAction>
92+
<ProfileAction
93+
buildConfiguration = "Release"
94+
shouldUseLaunchSchemeArgsEnv = "YES"
95+
savedToolIdentifier = ""
96+
useCustomWorkingDirectory = "NO"
97+
debugDocumentVersioning = "YES">
98+
<BuildableProductRunnable
99+
runnableDebuggingMode = "0">
100+
<BuildableReference
101+
BuildableIdentifier = "primary"
102+
BlueprintIdentifier = "system-samples"
103+
BuildableName = "system-samples"
104+
BlueprintName = "system-samples"
105+
ReferencedContainer = "container:">
106+
</BuildableReference>
107+
</BuildableProductRunnable>
108+
</ProfileAction>
109+
<AnalyzeAction
110+
buildConfiguration = "Debug">
111+
</AnalyzeAction>
112+
<ArchiveAction
113+
buildConfiguration = "Release"
114+
revealArchiveInOrganizer = "YES">
115+
</ArchiveAction>
116+
<InstallAction
117+
buildConfiguration = "Release">
118+
</InstallAction>
119+
</Scheme>

Package.resolved

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212

1313
import PackageDescription
1414

15+
let settings: [SwiftSetting]? = [
16+
.define("SYSTEM_PACKAGE")
17+
]
18+
1519
let targets: [PackageDescription.Target] = [
1620
.target(
1721
name: "SystemPackage",
@@ -27,16 +31,28 @@ let targets: [PackageDescription.Target] = [
2731
.testTarget(
2832
name: "SystemTests",
2933
dependencies: ["SystemPackage"],
30-
swiftSettings: [
31-
.define("SYSTEM_PACKAGE")
32-
]),
34+
swiftSettings: settings
35+
),
36+
37+
.target(
38+
name: "Samples",
39+
dependencies: [
40+
"SystemPackage",
41+
.product(name: "ArgumentParser", package: "swift-argument-parser"),
42+
],
43+
path: "Sources/Samples",
44+
swiftSettings: settings
45+
),
3346
]
3447

3548
let package = Package(
3649
name: "swift-system",
3750
products: [
38-
.library(name: "SystemPackage", targets: ["SystemPackage"]),
51+
.library(name: "SystemPackage", targets: ["SystemPackage"]),
52+
.executable(name: "system-samples", targets: ["Samples"]),
53+
],
54+
dependencies: [
55+
.package(url: "https://github.com/apple/swift-argument-parser", from: "0.3.0"),
3956
],
40-
dependencies: [],
4157
targets: targets
4258
)

0 commit comments

Comments
 (0)