@@ -46,105 +46,51 @@ export class RawEnr extends Map<ENRKey, ENRValue> {
46
46
}
47
47
48
48
get ip ( ) : string | undefined {
49
- const raw = this . get ( "ip" ) ;
50
- if ( raw ) {
51
- return convertToString ( "ip4" , raw ) as string ;
52
- } else {
53
- return undefined ;
54
- }
49
+ return getStringValue ( this , "ip" , "ip4" ) ;
55
50
}
56
51
57
52
set ip ( ip : string | undefined ) {
58
- if ( ip ) {
59
- this . set ( "ip" , convertToBytes ( "ip4" , ip ) ) ;
60
- } else {
61
- this . delete ( "ip" ) ;
62
- }
53
+ setStringValue ( this , "ip" , "ip4" , ip ) ;
63
54
}
64
55
65
56
get tcp ( ) : number | undefined {
66
- const raw = this . get ( "tcp" ) ;
67
- if ( raw ) {
68
- return Number ( convertToString ( "tcp" , raw ) ) ;
69
- } else {
70
- return undefined ;
71
- }
57
+ return getNumberAsStringValue ( this , "tcp" , "tcp" ) ;
72
58
}
73
59
74
60
set tcp ( port : number | undefined ) {
75
- if ( port === undefined ) {
76
- this . delete ( "tcp" ) ;
77
- } else {
78
- this . set ( "tcp" , convertToBytes ( "tcp" , port . toString ( 10 ) ) ) ;
79
- }
61
+ setNumberAsStringValue ( this , "tcp" , "tcp" , port ) ;
80
62
}
81
63
82
64
get udp ( ) : number | undefined {
83
- const raw = this . get ( "udp" ) ;
84
- if ( raw ) {
85
- return Number ( convertToString ( "udp" , raw ) ) ;
86
- } else {
87
- return undefined ;
88
- }
65
+ return getNumberAsStringValue ( this , "udp" , "udp" ) ;
89
66
}
90
67
91
68
set udp ( port : number | undefined ) {
92
- if ( port === undefined ) {
93
- this . delete ( "udp" ) ;
94
- } else {
95
- this . set ( "udp" , convertToBytes ( "udp" , port . toString ( 10 ) ) ) ;
96
- }
69
+ setNumberAsStringValue ( this , "udp" , "udp" , port ) ;
97
70
}
98
71
99
72
get ip6 ( ) : string | undefined {
100
- const raw = this . get ( "ip6" ) ;
101
- if ( raw ) {
102
- return convertToString ( "ip6" , raw ) as string ;
103
- } else {
104
- return undefined ;
105
- }
73
+ return getStringValue ( this , "ip6" , "ip6" ) ;
106
74
}
107
75
108
76
set ip6 ( ip : string | undefined ) {
109
- if ( ip ) {
110
- this . set ( "ip6" , convertToBytes ( "ip6" , ip ) ) ;
111
- } else {
112
- this . delete ( "ip6" ) ;
113
- }
77
+ setStringValue ( this , "ip6" , "ip6" , ip ) ;
114
78
}
115
79
116
80
get tcp6 ( ) : number | undefined {
117
- const raw = this . get ( "tcp6" ) ;
118
- if ( raw ) {
119
- return Number ( convertToString ( "tcp" , raw ) ) ;
120
- } else {
121
- return undefined ;
122
- }
81
+ return getNumberAsStringValue ( this , "tcp6" , "tcp" ) ;
123
82
}
124
83
125
84
set tcp6 ( port : number | undefined ) {
126
- if ( port === undefined ) {
127
- this . delete ( "tcp6" ) ;
128
- } else {
129
- this . set ( "tcp6" , convertToBytes ( "tcp" , port . toString ( 10 ) ) ) ;
130
- }
85
+ setNumberAsStringValue ( this , "tcp6" , "tcp" , port ) ;
131
86
}
132
87
133
88
get udp6 ( ) : number | undefined {
134
- const raw = this . get ( "udp6" ) ;
135
- if ( raw ) {
136
- return Number ( convertToString ( "udp" , raw ) ) ;
137
- } else {
138
- return undefined ;
139
- }
89
+ return getNumberAsStringValue ( this , "udp6" , "udp" ) ;
140
90
}
141
91
142
92
set udp6 ( port : number | undefined ) {
143
- if ( port === undefined ) {
144
- this . delete ( "udp6" ) ;
145
- } else {
146
- this . set ( "udp6" , convertToBytes ( "udp" , port . toString ( 10 ) ) ) ;
147
- }
93
+ setNumberAsStringValue ( this , "udp6" , "udp" , port ) ;
148
94
}
149
95
150
96
/**
@@ -210,3 +156,45 @@ export class RawEnr extends Map<ENRKey, ENRValue> {
210
156
}
211
157
}
212
158
}
159
+
160
+ function getStringValue (
161
+ map : Map < ENRKey , ENRValue > ,
162
+ key : ENRKey ,
163
+ proto : string
164
+ ) : string | undefined {
165
+ const raw = map . get ( key ) ;
166
+ if ( ! raw ) return ;
167
+ return convertToString ( proto , raw ) ;
168
+ }
169
+
170
+ function getNumberAsStringValue (
171
+ map : Map < ENRKey , ENRValue > ,
172
+ key : ENRKey ,
173
+ proto : string
174
+ ) : number | undefined {
175
+ const raw = map . get ( key ) ;
176
+ if ( ! raw ) return ;
177
+ return Number ( convertToString ( proto , raw ) ) ;
178
+ }
179
+
180
+ function setStringValue (
181
+ map : Map < ENRKey , ENRValue > ,
182
+ key : ENRKey ,
183
+ proto : string ,
184
+ value : string | undefined
185
+ ) : void {
186
+ if ( value !== undefined ) {
187
+ map . set ( key , convertToBytes ( proto , value ) ) ;
188
+ } else {
189
+ map . delete ( key ) ;
190
+ }
191
+ }
192
+
193
+ function setNumberAsStringValue (
194
+ map : Map < ENRKey , ENRValue > ,
195
+ key : ENRKey ,
196
+ proto : string ,
197
+ value : number | undefined
198
+ ) : void {
199
+ setStringValue ( map , key , proto , value ?. toString ( 10 ) ) ;
200
+ }
0 commit comments