blob: 7da213b1bf7ba199422b90ac4de5a55fbcfa43dc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
//
// RustProblemReportRequest.swift
// MullvadVPN
//
// Created by Mojgan on 2025-03-21.
// Copyright © 2026 Mullvad VPN AB. All rights reserved.
//
import MullvadLogging
import MullvadTypes
final public class RustProblemReportRequest {
private let logger = Logger(label: "RustProblemReportRequest")
private let addressPointer: UnsafePointer<CChar>?
private let messagePointer: UnsafePointer<CChar>?
private let logPointer: UnsafePointer<CChar>?
private let problemReportMetaData: ProblemReportMetadata
public init(from request: ProblemReportRequest) {
self.problemReportMetaData = swift_problem_report_metadata_new()
self.addressPointer = request.address.toCStringPointer()
self.messagePointer = request.message.toCStringPointer()
self.logPointer = request.log.toCStringPointer()
for (key, value) in request.metadata {
let isAdded = swift_problem_report_metadata_add(problemReportMetaData, key, value)
if !isAdded {
logger
.error("Failed to add metadata. Key: '\(key)' might be invalid or contain unsupported characters.")
}
}
}
public func toRust() -> SwiftProblemReportRequest {
SwiftProblemReportRequest(
address: addressPointer,
message: messagePointer,
log: logPointer,
metadata: problemReportMetaData
)
}
deinit {
swift_problem_report_metadata_free(problemReportMetaData)
addressPointer?.deallocate()
messagePointer?.deallocate()
logPointer?.deallocate()
}
}
|