File: DocumentationServer%2BMessage.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (61 lines) | stat: -rw-r--r-- 2,534 bytes parent folder | download
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
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
 This source file is part of the Swift.org open source project

 Copyright (c) 2021 Apple Inc. and the Swift project authors
 Licensed under Apache License v2.0 with Runtime Library Exception

 See https://swift.org/LICENSE.txt for license information
 See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/

import Foundation

public extension DocumentationServer {
    /// A message that can be provided to a documentation service.
    struct Message: Codable, Equatable {
        /// The type of the message.
        ///
        /// The message type is used to determine which service should process the message.
        public var type: MessageType
        
        /// The identifier of the message.
        public var identifier: String
        
        /// The payload of the message.
        ///
        /// The payload's encoding format is determine by the service that processes messages of its type.
        public var payload: Data?
        
        /// Closure that generates a random identifier.
        public static var randomIdentifierGenerator: () -> String = { UUID().uuidString }
        
        /// Creates a documentation service message.
        ///
        /// - Parameters:
        ///   - type: The type of the message, which is used to determine which service should process the message.
        ///   - identifier: The identifier of the message. By default, a random UUID string is created.
        ///   - payload: The payload of the message, encoded in the format its handling service expects.
        public init(
            type: MessageType,
            identifier: String = Self.randomIdentifierGenerator(),
            payload: Data?
        ) {
            self.type = type
            self.identifier = identifier
            self.payload = payload
        }
        
        /// Creates a documentation service message.
        ///
        /// - Parameters:
        ///   - type: The type of the message, which is used to determine which service should process the message.
        ///   - clientName: The name of the client creating this message, which this initializer uses as a prefix for the message's
        ///   identifier.
        ///   - payload: The payload of the message, encoded in the format its handling service expects.
        public init(type: MessageType, clientName: String, payload: Data?) {
            self.type = type
            self.identifier = "\(clientName)-\(Self.randomIdentifierGenerator())"
            self.payload = payload
        }
    }
}