* Buffer returns the marshalled address * * @returns {Uint8Array} Marshalled address * * @throws {Exception} When address data is invalid *
()
| 118 | * |
| 119 | */ |
| 120 | buffer() { |
| 121 | switch (this.type()) { |
| 122 | case LOOPBACK: |
| 123 | return new Uint8Array([ |
| 124 | this.addrPort >> 8, |
| 125 | this.addrPort & 0xff, |
| 126 | LOOPBACK << 6 |
| 127 | ]); |
| 128 | |
| 129 | case IPV4: |
| 130 | if (this.addrData.length != 4) { |
| 131 | throw new Exception("Invalid address length"); |
| 132 | } |
| 133 | |
| 134 | return new Uint8Array([ |
| 135 | this.addrPort >> 8, |
| 136 | this.addrPort & 0xff, |
| 137 | IPV4 << 6, |
| 138 | this.addrData[0], |
| 139 | this.addrData[1], |
| 140 | this.addrData[2], |
| 141 | this.addrData[3] |
| 142 | ]); |
| 143 | |
| 144 | case IPV6: |
| 145 | if (this.addrData.length != 16) { |
| 146 | throw new Exception("Invalid address length"); |
| 147 | } |
| 148 | |
| 149 | return new Uint8Array([ |
| 150 | this.addrPort >> 8, |
| 151 | this.addrPort & 0xff, |
| 152 | IPV6 << 6, |
| 153 | this.addrData[0], |
| 154 | this.addrData[1], |
| 155 | this.addrData[2], |
| 156 | this.addrData[3], |
| 157 | this.addrData[4], |
| 158 | this.addrData[5], |
| 159 | this.addrData[6], |
| 160 | this.addrData[7], |
| 161 | this.addrData[8], |
| 162 | this.addrData[9], |
| 163 | this.addrData[10], |
| 164 | this.addrData[11], |
| 165 | this.addrData[12], |
| 166 | this.addrData[13], |
| 167 | this.addrData[14], |
| 168 | this.addrData[15] |
| 169 | ]); |
| 170 | |
| 171 | case HOSTNAME: |
| 172 | if (this.addrData.length > MAX_ADDR_LEN) { |
| 173 | throw new Exception("Host name cannot longer than " + MAX_ADDR_LEN); |
| 174 | } |
| 175 | |
| 176 | let dataBuf = new Uint8Array(this.addrData.length + 3); |
| 177 |