├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── README.md ├── build.rs ├── protos └── rpc.proto ├── src ├── bin │ └── main.rs ├── lib.rs ├── macaroon_data.rs ├── rpc.rs ├── rpc_grpc.rs └── tls_certificate.rs └── tools ├── bitcoin-cli.sh ├── lncli1.sh ├── lncli2.sh ├── lncli3.sh ├── start-bitcoind.sh ├── start-lnd-1.sh ├── start-lnd-2.sh └── start-lnd-3.sh /.gitignore: -------------------------------------------------------------------------------- 1 | data 2 | 3 | /target/ 4 | **/*.rs.bk 5 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "arrayvec" 5 | version = "0.4.11" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | dependencies = [ 8 | "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 9 | ] 10 | 11 | [[package]] 12 | name = "autocfg" 13 | version = "0.1.6" 14 | source = "registry+https://github.com/rust-lang/crates.io-index" 15 | 16 | [[package]] 17 | name = "base64" 18 | version = "0.9.3" 19 | source = "registry+https://github.com/rust-lang/crates.io-index" 20 | dependencies = [ 21 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 22 | "safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 23 | ] 24 | 25 | [[package]] 26 | name = "bitflags" 27 | version = "0.9.1" 28 | source = "registry+https://github.com/rust-lang/crates.io-index" 29 | 30 | [[package]] 31 | name = "bitflags" 32 | version = "1.1.0" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | 35 | [[package]] 36 | name = "byteorder" 37 | version = "1.3.2" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | 40 | [[package]] 41 | name = "bytes" 42 | version = "0.4.12" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | dependencies = [ 45 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 46 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 47 | ] 48 | 49 | [[package]] 50 | name = "c2-chacha" 51 | version = "0.2.2" 52 | source = "registry+https://github.com/rust-lang/crates.io-index" 53 | dependencies = [ 54 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 55 | "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 56 | ] 57 | 58 | [[package]] 59 | name = "cc" 60 | version = "1.0.45" 61 | source = "registry+https://github.com/rust-lang/crates.io-index" 62 | 63 | [[package]] 64 | name = "cfg-if" 65 | version = "0.1.9" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | 68 | [[package]] 69 | name = "cloudabi" 70 | version = "0.0.3" 71 | source = "registry+https://github.com/rust-lang/crates.io-index" 72 | dependencies = [ 73 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 74 | ] 75 | 76 | [[package]] 77 | name = "core-foundation" 78 | version = "0.2.3" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | dependencies = [ 81 | "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 83 | ] 84 | 85 | [[package]] 86 | name = "core-foundation-sys" 87 | version = "0.2.3" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | dependencies = [ 90 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 91 | ] 92 | 93 | [[package]] 94 | name = "crossbeam-deque" 95 | version = "0.7.1" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | dependencies = [ 98 | "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 99 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 100 | ] 101 | 102 | [[package]] 103 | name = "crossbeam-epoch" 104 | version = "0.7.2" 105 | source = "registry+https://github.com/rust-lang/crates.io-index" 106 | dependencies = [ 107 | "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 108 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 109 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 110 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 111 | "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 112 | "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 113 | ] 114 | 115 | [[package]] 116 | name = "crossbeam-queue" 117 | version = "0.1.2" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | dependencies = [ 120 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 121 | ] 122 | 123 | [[package]] 124 | name = "crossbeam-utils" 125 | version = "0.6.6" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | dependencies = [ 128 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 129 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 130 | ] 131 | 132 | [[package]] 133 | name = "fnv" 134 | version = "1.0.6" 135 | source = "registry+https://github.com/rust-lang/crates.io-index" 136 | 137 | [[package]] 138 | name = "foreign-types" 139 | version = "0.3.2" 140 | source = "registry+https://github.com/rust-lang/crates.io-index" 141 | dependencies = [ 142 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 143 | ] 144 | 145 | [[package]] 146 | name = "foreign-types-shared" 147 | version = "0.1.1" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | 150 | [[package]] 151 | name = "fuchsia-cprng" 152 | version = "0.1.1" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | 155 | [[package]] 156 | name = "fuchsia-zircon" 157 | version = "0.3.3" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | dependencies = [ 160 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 161 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 162 | ] 163 | 164 | [[package]] 165 | name = "fuchsia-zircon-sys" 166 | version = "0.3.3" 167 | source = "registry+https://github.com/rust-lang/crates.io-index" 168 | 169 | [[package]] 170 | name = "futures" 171 | version = "0.1.29" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | 174 | [[package]] 175 | name = "futures-cpupool" 176 | version = "0.1.8" 177 | source = "registry+https://github.com/rust-lang/crates.io-index" 178 | dependencies = [ 179 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 180 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 181 | ] 182 | 183 | [[package]] 184 | name = "getrandom" 185 | version = "0.1.12" 186 | source = "registry+https://github.com/rust-lang/crates.io-index" 187 | dependencies = [ 188 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 189 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 190 | "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 191 | ] 192 | 193 | [[package]] 194 | name = "grpc" 195 | version = "0.6.1" 196 | source = "registry+https://github.com/rust-lang/crates.io-index" 197 | dependencies = [ 198 | "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", 199 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 200 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 201 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 202 | "httpbis 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 203 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 204 | "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 205 | "tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 206 | "tls-api-stub 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 207 | "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 208 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 209 | "tokio-tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 210 | ] 211 | 212 | [[package]] 213 | name = "grpc-compiler" 214 | version = "0.6.1" 215 | source = "registry+https://github.com/rust-lang/crates.io-index" 216 | dependencies = [ 217 | "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 218 | "protobuf-codegen 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 219 | ] 220 | 221 | [[package]] 222 | name = "httpbis" 223 | version = "0.7.0" 224 | source = "registry+https://github.com/rust-lang/crates.io-index" 225 | dependencies = [ 226 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 227 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 228 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 229 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 230 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 231 | "tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 232 | "tls-api-stub 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 233 | "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 234 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 235 | "tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 236 | "tokio-tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 237 | "tokio-uds 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 238 | "unix_socket 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 239 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 240 | ] 241 | 242 | [[package]] 243 | name = "iovec" 244 | version = "0.1.2" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | dependencies = [ 247 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 248 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 249 | ] 250 | 251 | [[package]] 252 | name = "kernel32-sys" 253 | version = "0.2.2" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | dependencies = [ 256 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 257 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 258 | ] 259 | 260 | [[package]] 261 | name = "lazy_static" 262 | version = "0.2.11" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | 265 | [[package]] 266 | name = "lazy_static" 267 | version = "1.4.0" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | 270 | [[package]] 271 | name = "libc" 272 | version = "0.2.62" 273 | source = "registry+https://github.com/rust-lang/crates.io-index" 274 | 275 | [[package]] 276 | name = "lnd-rust" 277 | version = "0.5.0" 278 | dependencies = [ 279 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 280 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 281 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 282 | "grpc 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 283 | "httpbis 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 284 | "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 285 | "protoc-rust-grpc 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 286 | "tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 287 | "tls-api-native-tls 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 288 | ] 289 | 290 | [[package]] 291 | name = "lock_api" 292 | version = "0.1.5" 293 | source = "registry+https://github.com/rust-lang/crates.io-index" 294 | dependencies = [ 295 | "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 296 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 297 | ] 298 | 299 | [[package]] 300 | name = "log" 301 | version = "0.3.9" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | dependencies = [ 304 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 305 | ] 306 | 307 | [[package]] 308 | name = "log" 309 | version = "0.4.8" 310 | source = "registry+https://github.com/rust-lang/crates.io-index" 311 | dependencies = [ 312 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 313 | ] 314 | 315 | [[package]] 316 | name = "memoffset" 317 | version = "0.5.1" 318 | source = "registry+https://github.com/rust-lang/crates.io-index" 319 | dependencies = [ 320 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 321 | ] 322 | 323 | [[package]] 324 | name = "mio" 325 | version = "0.6.19" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | dependencies = [ 328 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 329 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 330 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 331 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 332 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 333 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 334 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 335 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 336 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 337 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 338 | ] 339 | 340 | [[package]] 341 | name = "mio-uds" 342 | version = "0.6.7" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | dependencies = [ 345 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 346 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 347 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 348 | ] 349 | 350 | [[package]] 351 | name = "miow" 352 | version = "0.2.1" 353 | source = "registry+https://github.com/rust-lang/crates.io-index" 354 | dependencies = [ 355 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 356 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 357 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 358 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 359 | ] 360 | 361 | [[package]] 362 | name = "native-tls" 363 | version = "0.1.5" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | dependencies = [ 366 | "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 367 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 368 | "openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)", 369 | "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 370 | "security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 371 | "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 372 | "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 373 | ] 374 | 375 | [[package]] 376 | name = "net2" 377 | version = "0.2.33" 378 | source = "registry+https://github.com/rust-lang/crates.io-index" 379 | dependencies = [ 380 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 381 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 382 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 383 | ] 384 | 385 | [[package]] 386 | name = "nodrop" 387 | version = "0.1.13" 388 | source = "registry+https://github.com/rust-lang/crates.io-index" 389 | 390 | [[package]] 391 | name = "num_cpus" 392 | version = "1.10.1" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | dependencies = [ 395 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 396 | ] 397 | 398 | [[package]] 399 | name = "openssl" 400 | version = "0.9.24" 401 | source = "registry+https://github.com/rust-lang/crates.io-index" 402 | dependencies = [ 403 | "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 404 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 405 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 406 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 407 | "openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)", 408 | ] 409 | 410 | [[package]] 411 | name = "openssl-sys" 412 | version = "0.9.49" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | dependencies = [ 415 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 416 | "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 417 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 418 | "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 419 | "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 420 | ] 421 | 422 | [[package]] 423 | name = "owning_ref" 424 | version = "0.4.0" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | dependencies = [ 427 | "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 428 | ] 429 | 430 | [[package]] 431 | name = "parking_lot" 432 | version = "0.7.1" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | dependencies = [ 435 | "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 436 | "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 437 | ] 438 | 439 | [[package]] 440 | name = "parking_lot_core" 441 | version = "0.4.0" 442 | source = "registry+https://github.com/rust-lang/crates.io-index" 443 | dependencies = [ 444 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 445 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 446 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 447 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 448 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 449 | ] 450 | 451 | [[package]] 452 | name = "pkg-config" 453 | version = "0.3.16" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | 456 | [[package]] 457 | name = "ppv-lite86" 458 | version = "0.2.5" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | 461 | [[package]] 462 | name = "protobuf" 463 | version = "2.8.1" 464 | source = "registry+https://github.com/rust-lang/crates.io-index" 465 | dependencies = [ 466 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 467 | ] 468 | 469 | [[package]] 470 | name = "protobuf-codegen" 471 | version = "2.8.1" 472 | source = "registry+https://github.com/rust-lang/crates.io-index" 473 | dependencies = [ 474 | "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 475 | ] 476 | 477 | [[package]] 478 | name = "protoc" 479 | version = "2.8.1" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | dependencies = [ 482 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 483 | ] 484 | 485 | [[package]] 486 | name = "protoc-rust" 487 | version = "2.8.1" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | dependencies = [ 490 | "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 491 | "protobuf-codegen 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 492 | "protoc 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 493 | "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 494 | ] 495 | 496 | [[package]] 497 | name = "protoc-rust-grpc" 498 | version = "0.6.1" 499 | source = "registry+https://github.com/rust-lang/crates.io-index" 500 | dependencies = [ 501 | "grpc-compiler 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 502 | "protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 503 | "protoc 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 504 | "protoc-rust 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 505 | "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 506 | ] 507 | 508 | [[package]] 509 | name = "rand" 510 | version = "0.4.6" 511 | source = "registry+https://github.com/rust-lang/crates.io-index" 512 | dependencies = [ 513 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 514 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 515 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 516 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 517 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 518 | ] 519 | 520 | [[package]] 521 | name = "rand" 522 | version = "0.6.5" 523 | source = "registry+https://github.com/rust-lang/crates.io-index" 524 | dependencies = [ 525 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 526 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 527 | "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 528 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 529 | "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 530 | "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 531 | "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 532 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 533 | "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 534 | "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 535 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 536 | ] 537 | 538 | [[package]] 539 | name = "rand" 540 | version = "0.7.0" 541 | source = "registry+https://github.com/rust-lang/crates.io-index" 542 | dependencies = [ 543 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 544 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 545 | "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 546 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 547 | "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 548 | ] 549 | 550 | [[package]] 551 | name = "rand_chacha" 552 | version = "0.1.1" 553 | source = "registry+https://github.com/rust-lang/crates.io-index" 554 | dependencies = [ 555 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 556 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 557 | ] 558 | 559 | [[package]] 560 | name = "rand_chacha" 561 | version = "0.2.1" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | dependencies = [ 564 | "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 565 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 566 | ] 567 | 568 | [[package]] 569 | name = "rand_core" 570 | version = "0.3.1" 571 | source = "registry+https://github.com/rust-lang/crates.io-index" 572 | dependencies = [ 573 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 574 | ] 575 | 576 | [[package]] 577 | name = "rand_core" 578 | version = "0.4.2" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | 581 | [[package]] 582 | name = "rand_core" 583 | version = "0.5.1" 584 | source = "registry+https://github.com/rust-lang/crates.io-index" 585 | dependencies = [ 586 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 587 | ] 588 | 589 | [[package]] 590 | name = "rand_hc" 591 | version = "0.1.0" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | dependencies = [ 594 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 595 | ] 596 | 597 | [[package]] 598 | name = "rand_hc" 599 | version = "0.2.0" 600 | source = "registry+https://github.com/rust-lang/crates.io-index" 601 | dependencies = [ 602 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 603 | ] 604 | 605 | [[package]] 606 | name = "rand_isaac" 607 | version = "0.1.1" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | dependencies = [ 610 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 611 | ] 612 | 613 | [[package]] 614 | name = "rand_jitter" 615 | version = "0.1.4" 616 | source = "registry+https://github.com/rust-lang/crates.io-index" 617 | dependencies = [ 618 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 619 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 620 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 621 | ] 622 | 623 | [[package]] 624 | name = "rand_os" 625 | version = "0.1.3" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | dependencies = [ 628 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 629 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 630 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 631 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 632 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 633 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 634 | ] 635 | 636 | [[package]] 637 | name = "rand_pcg" 638 | version = "0.1.2" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | dependencies = [ 641 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 642 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 643 | ] 644 | 645 | [[package]] 646 | name = "rand_xorshift" 647 | version = "0.1.1" 648 | source = "registry+https://github.com/rust-lang/crates.io-index" 649 | dependencies = [ 650 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 651 | ] 652 | 653 | [[package]] 654 | name = "rdrand" 655 | version = "0.4.0" 656 | source = "registry+https://github.com/rust-lang/crates.io-index" 657 | dependencies = [ 658 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 659 | ] 660 | 661 | [[package]] 662 | name = "redox_syscall" 663 | version = "0.1.56" 664 | source = "registry+https://github.com/rust-lang/crates.io-index" 665 | 666 | [[package]] 667 | name = "remove_dir_all" 668 | version = "0.5.2" 669 | source = "registry+https://github.com/rust-lang/crates.io-index" 670 | dependencies = [ 671 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 672 | ] 673 | 674 | [[package]] 675 | name = "rustc_version" 676 | version = "0.2.3" 677 | source = "registry+https://github.com/rust-lang/crates.io-index" 678 | dependencies = [ 679 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 680 | ] 681 | 682 | [[package]] 683 | name = "safemem" 684 | version = "0.3.2" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | 687 | [[package]] 688 | name = "schannel" 689 | version = "0.1.15" 690 | source = "registry+https://github.com/rust-lang/crates.io-index" 691 | dependencies = [ 692 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 693 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 694 | ] 695 | 696 | [[package]] 697 | name = "scoped-tls" 698 | version = "0.1.2" 699 | source = "registry+https://github.com/rust-lang/crates.io-index" 700 | 701 | [[package]] 702 | name = "scopeguard" 703 | version = "0.3.3" 704 | source = "registry+https://github.com/rust-lang/crates.io-index" 705 | 706 | [[package]] 707 | name = "scopeguard" 708 | version = "1.0.0" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | 711 | [[package]] 712 | name = "security-framework" 713 | version = "0.1.16" 714 | source = "registry+https://github.com/rust-lang/crates.io-index" 715 | dependencies = [ 716 | "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 717 | "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 718 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 719 | "security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 720 | ] 721 | 722 | [[package]] 723 | name = "security-framework-sys" 724 | version = "0.1.16" 725 | source = "registry+https://github.com/rust-lang/crates.io-index" 726 | dependencies = [ 727 | "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 728 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 729 | ] 730 | 731 | [[package]] 732 | name = "semver" 733 | version = "0.9.0" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | dependencies = [ 736 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 737 | ] 738 | 739 | [[package]] 740 | name = "semver-parser" 741 | version = "0.7.0" 742 | source = "registry+https://github.com/rust-lang/crates.io-index" 743 | 744 | [[package]] 745 | name = "slab" 746 | version = "0.3.0" 747 | source = "registry+https://github.com/rust-lang/crates.io-index" 748 | 749 | [[package]] 750 | name = "slab" 751 | version = "0.4.2" 752 | source = "registry+https://github.com/rust-lang/crates.io-index" 753 | 754 | [[package]] 755 | name = "smallvec" 756 | version = "0.6.10" 757 | source = "registry+https://github.com/rust-lang/crates.io-index" 758 | 759 | [[package]] 760 | name = "stable_deref_trait" 761 | version = "1.1.1" 762 | source = "registry+https://github.com/rust-lang/crates.io-index" 763 | 764 | [[package]] 765 | name = "tempdir" 766 | version = "0.3.7" 767 | source = "registry+https://github.com/rust-lang/crates.io-index" 768 | dependencies = [ 769 | "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", 770 | "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 771 | ] 772 | 773 | [[package]] 774 | name = "tempfile" 775 | version = "3.1.0" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | dependencies = [ 778 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 779 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 780 | "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 781 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 782 | "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 783 | "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 784 | ] 785 | 786 | [[package]] 787 | name = "tls-api" 788 | version = "0.1.22" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | dependencies = [ 791 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 792 | ] 793 | 794 | [[package]] 795 | name = "tls-api-native-tls" 796 | version = "0.1.22" 797 | source = "registry+https://github.com/rust-lang/crates.io-index" 798 | dependencies = [ 799 | "native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 800 | "tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 801 | ] 802 | 803 | [[package]] 804 | name = "tls-api-stub" 805 | version = "0.1.22" 806 | source = "registry+https://github.com/rust-lang/crates.io-index" 807 | dependencies = [ 808 | "tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 809 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 810 | ] 811 | 812 | [[package]] 813 | name = "tokio" 814 | version = "0.1.22" 815 | source = "registry+https://github.com/rust-lang/crates.io-index" 816 | dependencies = [ 817 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 818 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 819 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 820 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 821 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 822 | "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 823 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 824 | "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 825 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 826 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 827 | "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 828 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 829 | "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 830 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 831 | "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 832 | "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 833 | ] 834 | 835 | [[package]] 836 | name = "tokio-codec" 837 | version = "0.1.1" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | dependencies = [ 840 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 841 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 842 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 843 | ] 844 | 845 | [[package]] 846 | name = "tokio-core" 847 | version = "0.1.17" 848 | source = "registry+https://github.com/rust-lang/crates.io-index" 849 | dependencies = [ 850 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 851 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 852 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 853 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 854 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 855 | "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 856 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 857 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 858 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 859 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 860 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 861 | ] 862 | 863 | [[package]] 864 | name = "tokio-current-thread" 865 | version = "0.1.6" 866 | source = "registry+https://github.com/rust-lang/crates.io-index" 867 | dependencies = [ 868 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 869 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 870 | ] 871 | 872 | [[package]] 873 | name = "tokio-executor" 874 | version = "0.1.8" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | dependencies = [ 877 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 878 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 879 | ] 880 | 881 | [[package]] 882 | name = "tokio-fs" 883 | version = "0.1.6" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | dependencies = [ 886 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 887 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 888 | "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 889 | ] 890 | 891 | [[package]] 892 | name = "tokio-io" 893 | version = "0.1.12" 894 | source = "registry+https://github.com/rust-lang/crates.io-index" 895 | dependencies = [ 896 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 897 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 898 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 899 | ] 900 | 901 | [[package]] 902 | name = "tokio-reactor" 903 | version = "0.1.9" 904 | source = "registry+https://github.com/rust-lang/crates.io-index" 905 | dependencies = [ 906 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 907 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 908 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 909 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 910 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 911 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 912 | "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 913 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 914 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 915 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 916 | "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 917 | ] 918 | 919 | [[package]] 920 | name = "tokio-sync" 921 | version = "0.1.6" 922 | source = "registry+https://github.com/rust-lang/crates.io-index" 923 | dependencies = [ 924 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 925 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 926 | ] 927 | 928 | [[package]] 929 | name = "tokio-tcp" 930 | version = "0.1.3" 931 | source = "registry+https://github.com/rust-lang/crates.io-index" 932 | dependencies = [ 933 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 934 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 935 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 936 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 937 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 938 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 939 | ] 940 | 941 | [[package]] 942 | name = "tokio-threadpool" 943 | version = "0.1.15" 944 | source = "registry+https://github.com/rust-lang/crates.io-index" 945 | dependencies = [ 946 | "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 947 | "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 948 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 949 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 950 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 951 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 952 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 953 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 954 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 955 | ] 956 | 957 | [[package]] 958 | name = "tokio-timer" 959 | version = "0.1.2" 960 | source = "registry+https://github.com/rust-lang/crates.io-index" 961 | dependencies = [ 962 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 963 | "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 964 | ] 965 | 966 | [[package]] 967 | name = "tokio-timer" 968 | version = "0.2.11" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | dependencies = [ 971 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 972 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 973 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 974 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 975 | ] 976 | 977 | [[package]] 978 | name = "tokio-tls-api" 979 | version = "0.1.22" 980 | source = "registry+https://github.com/rust-lang/crates.io-index" 981 | dependencies = [ 982 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 983 | "tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 984 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 985 | ] 986 | 987 | [[package]] 988 | name = "tokio-udp" 989 | version = "0.1.5" 990 | source = "registry+https://github.com/rust-lang/crates.io-index" 991 | dependencies = [ 992 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 993 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 994 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 995 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 996 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 997 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 998 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 999 | ] 1000 | 1001 | [[package]] 1002 | name = "tokio-uds" 1003 | version = "0.1.7" 1004 | source = "registry+https://github.com/rust-lang/crates.io-index" 1005 | dependencies = [ 1006 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1007 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1008 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1009 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1010 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1011 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1012 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1013 | "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 1014 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1015 | ] 1016 | 1017 | [[package]] 1018 | name = "tokio-uds" 1019 | version = "0.2.5" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | dependencies = [ 1022 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1023 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1024 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1025 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1026 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1027 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1028 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1029 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1030 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1031 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1032 | ] 1033 | 1034 | [[package]] 1035 | name = "unix_socket" 1036 | version = "0.5.0" 1037 | source = "registry+https://github.com/rust-lang/crates.io-index" 1038 | dependencies = [ 1039 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1040 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1041 | ] 1042 | 1043 | [[package]] 1044 | name = "vcpkg" 1045 | version = "0.2.7" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | 1048 | [[package]] 1049 | name = "void" 1050 | version = "1.0.2" 1051 | source = "registry+https://github.com/rust-lang/crates.io-index" 1052 | 1053 | [[package]] 1054 | name = "wasi" 1055 | version = "0.7.0" 1056 | source = "registry+https://github.com/rust-lang/crates.io-index" 1057 | 1058 | [[package]] 1059 | name = "winapi" 1060 | version = "0.2.8" 1061 | source = "registry+https://github.com/rust-lang/crates.io-index" 1062 | 1063 | [[package]] 1064 | name = "winapi" 1065 | version = "0.3.8" 1066 | source = "registry+https://github.com/rust-lang/crates.io-index" 1067 | dependencies = [ 1068 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1069 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1070 | ] 1071 | 1072 | [[package]] 1073 | name = "winapi-build" 1074 | version = "0.1.1" 1075 | source = "registry+https://github.com/rust-lang/crates.io-index" 1076 | 1077 | [[package]] 1078 | name = "winapi-i686-pc-windows-gnu" 1079 | version = "0.4.0" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | 1082 | [[package]] 1083 | name = "winapi-x86_64-pc-windows-gnu" 1084 | version = "0.4.0" 1085 | source = "registry+https://github.com/rust-lang/crates.io-index" 1086 | 1087 | [[package]] 1088 | name = "ws2_32-sys" 1089 | version = "0.2.1" 1090 | source = "registry+https://github.com/rust-lang/crates.io-index" 1091 | dependencies = [ 1092 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1093 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1094 | ] 1095 | 1096 | [metadata] 1097 | "checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" 1098 | "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" 1099 | "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" 1100 | "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" 1101 | "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" 1102 | "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" 1103 | "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" 1104 | "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" 1105 | "checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be" 1106 | "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" 1107 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1108 | "checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67" 1109 | "checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d" 1110 | "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" 1111 | "checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" 1112 | "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" 1113 | "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" 1114 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1115 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1116 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1117 | "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 1118 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1119 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1120 | "checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" 1121 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 1122 | "checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" 1123 | "checksum grpc 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8e530ef7894a104a1c8525ce68787b3491efa2098ce5e5454e8324ea78893548" 1124 | "checksum grpc-compiler 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b07f140d998d8940880e464f3fd291052618199432e91e59ae5c5075c0c8a40c" 1125 | "checksum httpbis 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7689cfa896b2a71da4f16206af167542b75d242b6906313e53857972a92d5614" 1126 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1127 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1128 | "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" 1129 | "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1130 | "checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" 1131 | "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" 1132 | "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" 1133 | "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 1134 | "checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" 1135 | "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" 1136 | "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" 1137 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1138 | "checksum native-tls 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f74dbadc8b43df7864539cedb7bc91345e532fdd913cfdc23ad94f4d2d40fbc0" 1139 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1140 | "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" 1141 | "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" 1142 | "checksum openssl 0.9.24 (registry+https://github.com/rust-lang/crates.io-index)" = "a3605c298474a3aa69de92d21139fb5e2a81688d308262359d85cdd0d12a7985" 1143 | "checksum openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f4fad9e54bd23bd4cbbe48fdc08a1b8091707ac869ef8508edea2fec77dcc884" 1144 | "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" 1145 | "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" 1146 | "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" 1147 | "checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" 1148 | "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" 1149 | "checksum protobuf 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40361836defdd5871ff7e84096c6f6444af7fc157f8ef1789f54f147687caa20" 1150 | "checksum protobuf-codegen 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "12c6abd78435445fc86898ebbd0521a68438063d4a73e23527b7134e6bf58b4a" 1151 | "checksum protoc 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3998c4bc0af8ccbd3cc68245ee9f72663c5ae2fb78bc48ff7719aef11562edea" 1152 | "checksum protoc-rust 2.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "234c97039c32bb58a883d0deafa57db37e59428ce536f3bdfe1c46cffec04113" 1153 | "checksum protoc-rust-grpc 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89b0b611e3a7fda302581288521d0b1f4662b4fdf285c5ef5f8deb38f99f96ff" 1154 | "checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293" 1155 | "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 1156 | "checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" 1157 | "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 1158 | "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" 1159 | "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 1160 | "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" 1161 | "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1162 | "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" 1163 | "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1164 | "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" 1165 | "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" 1166 | "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 1167 | "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" 1168 | "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" 1169 | "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 1170 | "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" 1171 | "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 1172 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1173 | "checksum safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b08423011dae9a5ca23f07cf57dac3857f5c885d352b76f6d95f4aea9434d0" 1174 | "checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" 1175 | "checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" 1176 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 1177 | "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" 1178 | "checksum security-framework 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "dfa44ee9c54ce5eecc9de7d5acbad112ee58755239381f687e564004ba4a2332" 1179 | "checksum security-framework-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "5421621e836278a0b139268f36eee0dc7e389b784dc3f79d8f11aabadf41bead" 1180 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1181 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1182 | "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" 1183 | "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1184 | "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" 1185 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 1186 | "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" 1187 | "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 1188 | "checksum tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "049c03787a0595182357fbd487577947f4351b78ce20c3668f6d49f17feb13d1" 1189 | "checksum tls-api-native-tls 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "f5bde85cdaca4f2193562285df950a425b045a0e5eaa6f579661cb8b205ce763" 1190 | "checksum tls-api-stub 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "c9a0cc8c149724db9de7d73a0e1bc80b1a74f5394f08c6f301e11f9c35fa061e" 1191 | "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" 1192 | "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" 1193 | "checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" 1194 | "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" 1195 | "checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" 1196 | "checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" 1197 | "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" 1198 | "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" 1199 | "checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" 1200 | "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" 1201 | "checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" 1202 | "checksum tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6131e780037787ff1b3f8aad9da83bca02438b72277850dd6ad0d455e0e20efc" 1203 | "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" 1204 | "checksum tokio-tls-api 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "68d0e040d5b1f4cfca70ec4f371229886a5de5bb554d272a4a8da73004a7b2c9" 1205 | "checksum tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" 1206 | "checksum tokio-uds 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "65ae5d255ce739e8537221ed2942e0445f4b3b813daebac1c0050ddaaa3587f9" 1207 | "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" 1208 | "checksum unix_socket 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6aa2700417c405c38f5e6902d699345241c28c0b7ade4abaad71e35a87eb1564" 1209 | "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" 1210 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1211 | "checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" 1212 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1213 | "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" 1214 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1215 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1216 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1217 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1218 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "lnd-rust" 3 | version = "0.5.0" 4 | authors = ["LightningPeach "] 5 | description = "Rust binding to the Lightning Network Daemon" 6 | readme = "README.md" 7 | license = "MIT" 8 | repository = "https://github.com/LightningPeach/lnd-rust" 9 | edition = "2018" 10 | 11 | [dependencies] 12 | protobuf = "2.8" 13 | futures = "0.1" 14 | futures-cpupool = "0.1" 15 | httpbis = "0.7" 16 | grpc = "0.6" 17 | tls-api = "0.1" 18 | tls-api-native-tls = "0.1" 19 | bytes = "0.4" 20 | 21 | [build-dependencies] 22 | protoc-rust-grpc = "0.6" 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # lnd-rust 2 | 3 | The lnd-rust is the rust binding to the Lightning Network Daemon. 4 | 5 | ## Requirements 6 | 7 | Go and lnd are required to generate the additional code and build the package. 8 | 9 | ## Updating 10 | 11 | The file `protos/rpc.proto` should be synced with `https://github.com/lightningnetwork/lnd/blob/master/lnrpc/rpc.proto`. 12 | 13 | Tested with the Lightning Network Daemon version "0.4.2". 14 | 15 | ## Usage 16 | 17 | First, add the following to `Cargo.toml`: 18 | 19 | ```toml 20 | [dependencies] 21 | lnd-rust = "0.1" 22 | grpc = "0.5.0" 23 | ``` 24 | 25 | Next, create lightning client object: 26 | 27 | ```rs 28 | let lightning_client = { 29 | let certificate = lnd_rust::TLSCertificate::from_der_path("path/to/file.crt").unwrap(); 30 | let config = Default::default(); 31 | let socket = "127.0.0.1:9000".parse().unwrap(); 32 | let tls = certificate.into_tls("localhost").unwrap(); 33 | let grpc_client = grpc::Client::new_expl(&socket_addr, "localhost", tls, config).unwrap(); 34 | lnd_rust::rpc_grpc::LightningClient::with_client(grpc_client) 35 | }; 36 | ``` 37 | 38 | Now, it is possible to make requests: 39 | 40 | ```rs 41 | let request = lnd_rust::rpc::GetInfoRequest::new(); 42 | let options = grpc::RequestOptions::new(); 43 | let response = lightning_client.get_info(options, request); 44 | ``` 45 | 46 | See `src/bin/main.rs` for details. 47 | -------------------------------------------------------------------------------- /build.rs: -------------------------------------------------------------------------------- 1 | extern crate protoc_rust_grpc; 2 | 3 | fn main() { 4 | println!("cargo:rerun-if-changed=protos/rpc.proto"); 5 | 6 | let gopath = std::env::var("GOPATH").expect("GOPATH is not defined"); 7 | let gopath = std::path::Path::new(&gopath); 8 | let google_api_path = gopath.join("src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis"); 9 | protoc_rust_grpc::run(protoc_rust_grpc::Args { 10 | out_dir: "src", 11 | includes: &["protos", google_api_path.to_str().unwrap()], 12 | input: &["protos/rpc.proto"], 13 | rust_protobuf: true, // also generate protobuf messages, not just services 14 | }).expect("protoc-rust-grpc"); 15 | } 16 | -------------------------------------------------------------------------------- /src/bin/main.rs: -------------------------------------------------------------------------------- 1 | #![forbid(unsafe_code)] 2 | 3 | use lnd_rust::rpc_grpc::LightningClient; 4 | use lnd_rust::rpc_grpc::Lightning; 5 | use lnd_rust::tls_certificate::TLSCertificate; 6 | use lnd_rust::macaroon_data::MacaroonData; 7 | 8 | use lnd_rust::rpc; 9 | 10 | use grpc::RequestOptions; 11 | 12 | fn main() { 13 | use std::{net::SocketAddr, sync::Arc}; 14 | use grpc::ClientStub; 15 | 16 | println!("lnd-rust main"); 17 | 18 | if std::env::args().len() < 4 { 19 | println!("Usage: cargo run -- %path_to_cert% %path_to_macaroon% %socket e.g. 127.0.0.1:100500%"); 20 | return 21 | } 22 | 23 | let certificate = { 24 | let cert_filename = std::env::args() 25 | .into_iter().skip(1).next() 26 | .unwrap(); 27 | TLSCertificate::from_path(cert_filename) 28 | .unwrap() 29 | }; 30 | 31 | let macaroon_data = { 32 | let macaroon_file_path = std::env::args() 33 | .into_iter().skip(2).next() 34 | .unwrap(); 35 | MacaroonData::from_file_path(macaroon_file_path) 36 | .unwrap() 37 | }; 38 | 39 | let client = { 40 | let default = "127.0.0.1:10009"; 41 | let socket_addr_string = std::env::args() 42 | .into_iter().skip(3).next() 43 | .unwrap_or(default.to_owned()); 44 | let socket_addr: SocketAddr = socket_addr_string.parse().unwrap(); 45 | let host = socket_addr.ip().to_string(); 46 | let conf = Default::default(); 47 | 48 | let tls = certificate.into_tls(host.as_str()) 49 | .unwrap(); 50 | let c = grpc::Client::new_expl(&socket_addr, host.as_str(), tls, conf) 51 | .unwrap(); 52 | LightningClient::with_client(Arc::new(c)) 53 | }; 54 | 55 | let metadata = |macaroon_data: &MacaroonData| 56 | RequestOptions { metadata: macaroon_data.metadata(), }; 57 | 58 | let req = rpc::GetInfoRequest::new(); 59 | let resp = client.get_info(metadata(&macaroon_data), req); 60 | println!("{:?}", resp.wait()); 61 | 62 | let wallet_req = rpc::WalletBalanceRequest::new(); 63 | let wallet_resp = client.wallet_balance(metadata(&macaroon_data), wallet_req); 64 | let w = wallet_resp.wait().unwrap().1; 65 | println!("{:?}\n", w); 66 | } 67 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod rpc; 2 | pub mod rpc_grpc; 3 | pub mod tls_certificate; 4 | pub mod macaroon_data; 5 | -------------------------------------------------------------------------------- /src/macaroon_data.rs: -------------------------------------------------------------------------------- 1 | use std::path::Path; 2 | use std::process::Command; 3 | use std::io::Result as IOResult; 4 | 5 | use bytes::Bytes; 6 | use grpc::Metadata; 7 | use grpc::MetadataKey; 8 | 9 | /// Represents the bytes of the macaroon 10 | pub struct MacaroonData { 11 | raw: Vec, 12 | } 13 | 14 | impl MacaroonData { 15 | /// Reads the macaroon data from a file at the path 16 | pub fn from_file_path>(path: P) -> IOResult { 17 | use std::io::{Error, ErrorKind}; 18 | 19 | let output = Command::new("xxd") 20 | .args(&["-ps", "-u", "-c", "1000"]) 21 | .arg(path.as_ref()) 22 | .output()?; 23 | 24 | if !output.status.success() { 25 | let error = String::from_utf8_lossy(&output.stderr); 26 | Err(Error::new(ErrorKind::InvalidInput, error.as_ref())) 27 | } else { 28 | let mut data = output.stdout; 29 | data.retain(|&z| 30 | ((z >= '0' as _) && (z <= '9' as _)) | 31 | ((z >= 'A' as _) && (z <= 'F' as _)) 32 | ); 33 | Ok(MacaroonData { 34 | raw: data, 35 | }) 36 | } 37 | } 38 | 39 | /// Creates the `grpc::Metadata` instance that contain the provided macaroon 40 | pub fn metadata(&self) -> Metadata { 41 | let macaroon = Bytes::from(self.raw.clone()); 42 | let mut metadata = Metadata::new(); 43 | metadata.add(MetadataKey::from("macaroon"), macaroon); 44 | metadata 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/rpc_grpc.rs: -------------------------------------------------------------------------------- 1 | // This file is generated. Do not edit 2 | // @generated 3 | 4 | // https://github.com/Manishearth/rust-clippy/issues/702 5 | #![allow(unknown_lints)] 6 | #![allow(clippy::all)] 7 | 8 | #![cfg_attr(rustfmt, rustfmt_skip)] 9 | 10 | #![allow(box_pointers)] 11 | #![allow(dead_code)] 12 | #![allow(missing_docs)] 13 | #![allow(non_camel_case_types)] 14 | #![allow(non_snake_case)] 15 | #![allow(non_upper_case_globals)] 16 | #![allow(trivial_casts)] 17 | #![allow(unsafe_code)] 18 | #![allow(unused_imports)] 19 | #![allow(unused_results)] 20 | 21 | 22 | // interface 23 | 24 | pub trait WalletUnlocker { 25 | fn gen_seed(&self, o: ::grpc::RequestOptions, p: super::rpc::GenSeedRequest) -> ::grpc::SingleResponse; 26 | 27 | fn init_wallet(&self, o: ::grpc::RequestOptions, p: super::rpc::InitWalletRequest) -> ::grpc::SingleResponse; 28 | 29 | fn unlock_wallet(&self, o: ::grpc::RequestOptions, p: super::rpc::UnlockWalletRequest) -> ::grpc::SingleResponse; 30 | 31 | fn change_password(&self, o: ::grpc::RequestOptions, p: super::rpc::ChangePasswordRequest) -> ::grpc::SingleResponse; 32 | } 33 | 34 | // client 35 | 36 | pub struct WalletUnlockerClient { 37 | grpc_client: ::std::sync::Arc<::grpc::Client>, 38 | method_GenSeed: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 39 | method_InitWallet: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 40 | method_UnlockWallet: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 41 | method_ChangePassword: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 42 | } 43 | 44 | impl ::grpc::ClientStub for WalletUnlockerClient { 45 | fn with_client(grpc_client: ::std::sync::Arc<::grpc::Client>) -> Self { 46 | WalletUnlockerClient { 47 | grpc_client: grpc_client, 48 | method_GenSeed: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 49 | name: "/lnrpc.WalletUnlocker/GenSeed".to_string(), 50 | streaming: ::grpc::rt::GrpcStreaming::Unary, 51 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 52 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 53 | }), 54 | method_InitWallet: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 55 | name: "/lnrpc.WalletUnlocker/InitWallet".to_string(), 56 | streaming: ::grpc::rt::GrpcStreaming::Unary, 57 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 58 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 59 | }), 60 | method_UnlockWallet: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 61 | name: "/lnrpc.WalletUnlocker/UnlockWallet".to_string(), 62 | streaming: ::grpc::rt::GrpcStreaming::Unary, 63 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 64 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 65 | }), 66 | method_ChangePassword: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 67 | name: "/lnrpc.WalletUnlocker/ChangePassword".to_string(), 68 | streaming: ::grpc::rt::GrpcStreaming::Unary, 69 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 70 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 71 | }), 72 | } 73 | } 74 | } 75 | 76 | impl WalletUnlocker for WalletUnlockerClient { 77 | fn gen_seed(&self, o: ::grpc::RequestOptions, p: super::rpc::GenSeedRequest) -> ::grpc::SingleResponse { 78 | self.grpc_client.call_unary(o, p, self.method_GenSeed.clone()) 79 | } 80 | 81 | fn init_wallet(&self, o: ::grpc::RequestOptions, p: super::rpc::InitWalletRequest) -> ::grpc::SingleResponse { 82 | self.grpc_client.call_unary(o, p, self.method_InitWallet.clone()) 83 | } 84 | 85 | fn unlock_wallet(&self, o: ::grpc::RequestOptions, p: super::rpc::UnlockWalletRequest) -> ::grpc::SingleResponse { 86 | self.grpc_client.call_unary(o, p, self.method_UnlockWallet.clone()) 87 | } 88 | 89 | fn change_password(&self, o: ::grpc::RequestOptions, p: super::rpc::ChangePasswordRequest) -> ::grpc::SingleResponse { 90 | self.grpc_client.call_unary(o, p, self.method_ChangePassword.clone()) 91 | } 92 | } 93 | 94 | // server 95 | 96 | pub struct WalletUnlockerServer; 97 | 98 | 99 | impl WalletUnlockerServer { 100 | pub fn new_service_def(handler: H) -> ::grpc::rt::ServerServiceDefinition { 101 | let handler_arc = ::std::sync::Arc::new(handler); 102 | ::grpc::rt::ServerServiceDefinition::new("/lnrpc.WalletUnlocker", 103 | vec![ 104 | ::grpc::rt::ServerMethod::new( 105 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 106 | name: "/lnrpc.WalletUnlocker/GenSeed".to_string(), 107 | streaming: ::grpc::rt::GrpcStreaming::Unary, 108 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 109 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 110 | }), 111 | { 112 | let handler_copy = handler_arc.clone(); 113 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.gen_seed(o, p)) 114 | }, 115 | ), 116 | ::grpc::rt::ServerMethod::new( 117 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 118 | name: "/lnrpc.WalletUnlocker/InitWallet".to_string(), 119 | streaming: ::grpc::rt::GrpcStreaming::Unary, 120 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 121 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 122 | }), 123 | { 124 | let handler_copy = handler_arc.clone(); 125 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.init_wallet(o, p)) 126 | }, 127 | ), 128 | ::grpc::rt::ServerMethod::new( 129 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 130 | name: "/lnrpc.WalletUnlocker/UnlockWallet".to_string(), 131 | streaming: ::grpc::rt::GrpcStreaming::Unary, 132 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 133 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 134 | }), 135 | { 136 | let handler_copy = handler_arc.clone(); 137 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.unlock_wallet(o, p)) 138 | }, 139 | ), 140 | ::grpc::rt::ServerMethod::new( 141 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 142 | name: "/lnrpc.WalletUnlocker/ChangePassword".to_string(), 143 | streaming: ::grpc::rt::GrpcStreaming::Unary, 144 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 145 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 146 | }), 147 | { 148 | let handler_copy = handler_arc.clone(); 149 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.change_password(o, p)) 150 | }, 151 | ), 152 | ], 153 | ) 154 | } 155 | } 156 | 157 | // interface 158 | 159 | pub trait Lightning { 160 | fn wallet_balance(&self, o: ::grpc::RequestOptions, p: super::rpc::WalletBalanceRequest) -> ::grpc::SingleResponse; 161 | 162 | fn channel_balance(&self, o: ::grpc::RequestOptions, p: super::rpc::ChannelBalanceRequest) -> ::grpc::SingleResponse; 163 | 164 | fn get_transactions(&self, o: ::grpc::RequestOptions, p: super::rpc::GetTransactionsRequest) -> ::grpc::SingleResponse; 165 | 166 | fn estimate_fee(&self, o: ::grpc::RequestOptions, p: super::rpc::EstimateFeeRequest) -> ::grpc::SingleResponse; 167 | 168 | fn send_coins(&self, o: ::grpc::RequestOptions, p: super::rpc::SendCoinsRequest) -> ::grpc::SingleResponse; 169 | 170 | fn list_unspent(&self, o: ::grpc::RequestOptions, p: super::rpc::ListUnspentRequest) -> ::grpc::SingleResponse; 171 | 172 | fn subscribe_transactions(&self, o: ::grpc::RequestOptions, p: super::rpc::GetTransactionsRequest) -> ::grpc::StreamingResponse; 173 | 174 | fn send_many(&self, o: ::grpc::RequestOptions, p: super::rpc::SendManyRequest) -> ::grpc::SingleResponse; 175 | 176 | fn new_address(&self, o: ::grpc::RequestOptions, p: super::rpc::NewAddressRequest) -> ::grpc::SingleResponse; 177 | 178 | fn sign_message(&self, o: ::grpc::RequestOptions, p: super::rpc::SignMessageRequest) -> ::grpc::SingleResponse; 179 | 180 | fn verify_message(&self, o: ::grpc::RequestOptions, p: super::rpc::VerifyMessageRequest) -> ::grpc::SingleResponse; 181 | 182 | fn connect_peer(&self, o: ::grpc::RequestOptions, p: super::rpc::ConnectPeerRequest) -> ::grpc::SingleResponse; 183 | 184 | fn disconnect_peer(&self, o: ::grpc::RequestOptions, p: super::rpc::DisconnectPeerRequest) -> ::grpc::SingleResponse; 185 | 186 | fn list_peers(&self, o: ::grpc::RequestOptions, p: super::rpc::ListPeersRequest) -> ::grpc::SingleResponse; 187 | 188 | fn get_info(&self, o: ::grpc::RequestOptions, p: super::rpc::GetInfoRequest) -> ::grpc::SingleResponse; 189 | 190 | fn pending_channels(&self, o: ::grpc::RequestOptions, p: super::rpc::PendingChannelsRequest) -> ::grpc::SingleResponse; 191 | 192 | fn list_channels(&self, o: ::grpc::RequestOptions, p: super::rpc::ListChannelsRequest) -> ::grpc::SingleResponse; 193 | 194 | fn subscribe_channel_events(&self, o: ::grpc::RequestOptions, p: super::rpc::ChannelEventSubscription) -> ::grpc::StreamingResponse; 195 | 196 | fn closed_channels(&self, o: ::grpc::RequestOptions, p: super::rpc::ClosedChannelsRequest) -> ::grpc::SingleResponse; 197 | 198 | fn open_channel_sync(&self, o: ::grpc::RequestOptions, p: super::rpc::OpenChannelRequest) -> ::grpc::SingleResponse; 199 | 200 | fn open_channel(&self, o: ::grpc::RequestOptions, p: super::rpc::OpenChannelRequest) -> ::grpc::StreamingResponse; 201 | 202 | fn close_channel(&self, o: ::grpc::RequestOptions, p: super::rpc::CloseChannelRequest) -> ::grpc::StreamingResponse; 203 | 204 | fn abandon_channel(&self, o: ::grpc::RequestOptions, p: super::rpc::AbandonChannelRequest) -> ::grpc::SingleResponse; 205 | 206 | fn send_payment(&self, o: ::grpc::RequestOptions, p: ::grpc::StreamingRequest) -> ::grpc::StreamingResponse; 207 | 208 | fn send_payment_sync(&self, o: ::grpc::RequestOptions, p: super::rpc::SendRequest) -> ::grpc::SingleResponse; 209 | 210 | fn send_to_route(&self, o: ::grpc::RequestOptions, p: ::grpc::StreamingRequest) -> ::grpc::StreamingResponse; 211 | 212 | fn send_to_route_sync(&self, o: ::grpc::RequestOptions, p: super::rpc::SendToRouteRequest) -> ::grpc::SingleResponse; 213 | 214 | fn add_invoice(&self, o: ::grpc::RequestOptions, p: super::rpc::Invoice) -> ::grpc::SingleResponse; 215 | 216 | fn list_invoices(&self, o: ::grpc::RequestOptions, p: super::rpc::ListInvoiceRequest) -> ::grpc::SingleResponse; 217 | 218 | fn lookup_invoice(&self, o: ::grpc::RequestOptions, p: super::rpc::PaymentHash) -> ::grpc::SingleResponse; 219 | 220 | fn subscribe_invoices(&self, o: ::grpc::RequestOptions, p: super::rpc::InvoiceSubscription) -> ::grpc::StreamingResponse; 221 | 222 | fn decode_pay_req(&self, o: ::grpc::RequestOptions, p: super::rpc::PayReqString) -> ::grpc::SingleResponse; 223 | 224 | fn list_payments(&self, o: ::grpc::RequestOptions, p: super::rpc::ListPaymentsRequest) -> ::grpc::SingleResponse; 225 | 226 | fn delete_all_payments(&self, o: ::grpc::RequestOptions, p: super::rpc::DeleteAllPaymentsRequest) -> ::grpc::SingleResponse; 227 | 228 | fn describe_graph(&self, o: ::grpc::RequestOptions, p: super::rpc::ChannelGraphRequest) -> ::grpc::SingleResponse; 229 | 230 | fn get_chan_info(&self, o: ::grpc::RequestOptions, p: super::rpc::ChanInfoRequest) -> ::grpc::SingleResponse; 231 | 232 | fn get_node_info(&self, o: ::grpc::RequestOptions, p: super::rpc::NodeInfoRequest) -> ::grpc::SingleResponse; 233 | 234 | fn query_routes(&self, o: ::grpc::RequestOptions, p: super::rpc::QueryRoutesRequest) -> ::grpc::SingleResponse; 235 | 236 | fn get_network_info(&self, o: ::grpc::RequestOptions, p: super::rpc::NetworkInfoRequest) -> ::grpc::SingleResponse; 237 | 238 | fn stop_daemon(&self, o: ::grpc::RequestOptions, p: super::rpc::StopRequest) -> ::grpc::SingleResponse; 239 | 240 | fn subscribe_channel_graph(&self, o: ::grpc::RequestOptions, p: super::rpc::GraphTopologySubscription) -> ::grpc::StreamingResponse; 241 | 242 | fn debug_level(&self, o: ::grpc::RequestOptions, p: super::rpc::DebugLevelRequest) -> ::grpc::SingleResponse; 243 | 244 | fn fee_report(&self, o: ::grpc::RequestOptions, p: super::rpc::FeeReportRequest) -> ::grpc::SingleResponse; 245 | 246 | fn update_channel_policy(&self, o: ::grpc::RequestOptions, p: super::rpc::PolicyUpdateRequest) -> ::grpc::SingleResponse; 247 | 248 | fn forwarding_history(&self, o: ::grpc::RequestOptions, p: super::rpc::ForwardingHistoryRequest) -> ::grpc::SingleResponse; 249 | 250 | fn export_channel_backup(&self, o: ::grpc::RequestOptions, p: super::rpc::ExportChannelBackupRequest) -> ::grpc::SingleResponse; 251 | 252 | fn export_all_channel_backups(&self, o: ::grpc::RequestOptions, p: super::rpc::ChanBackupExportRequest) -> ::grpc::SingleResponse; 253 | 254 | fn verify_chan_backup(&self, o: ::grpc::RequestOptions, p: super::rpc::ChanBackupSnapshot) -> ::grpc::SingleResponse; 255 | 256 | fn restore_channel_backups(&self, o: ::grpc::RequestOptions, p: super::rpc::RestoreChanBackupRequest) -> ::grpc::SingleResponse; 257 | 258 | fn subscribe_channel_backups(&self, o: ::grpc::RequestOptions, p: super::rpc::ChannelBackupSubscription) -> ::grpc::StreamingResponse; 259 | } 260 | 261 | // client 262 | 263 | pub struct LightningClient { 264 | grpc_client: ::std::sync::Arc<::grpc::Client>, 265 | method_WalletBalance: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 266 | method_ChannelBalance: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 267 | method_GetTransactions: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 268 | method_EstimateFee: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 269 | method_SendCoins: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 270 | method_ListUnspent: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 271 | method_SubscribeTransactions: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 272 | method_SendMany: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 273 | method_NewAddress: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 274 | method_SignMessage: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 275 | method_VerifyMessage: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 276 | method_ConnectPeer: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 277 | method_DisconnectPeer: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 278 | method_ListPeers: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 279 | method_GetInfo: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 280 | method_PendingChannels: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 281 | method_ListChannels: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 282 | method_SubscribeChannelEvents: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 283 | method_ClosedChannels: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 284 | method_OpenChannelSync: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 285 | method_OpenChannel: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 286 | method_CloseChannel: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 287 | method_AbandonChannel: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 288 | method_SendPayment: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 289 | method_SendPaymentSync: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 290 | method_SendToRoute: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 291 | method_SendToRouteSync: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 292 | method_AddInvoice: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 293 | method_ListInvoices: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 294 | method_LookupInvoice: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 295 | method_SubscribeInvoices: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 296 | method_DecodePayReq: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 297 | method_ListPayments: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 298 | method_DeleteAllPayments: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 299 | method_DescribeGraph: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 300 | method_GetChanInfo: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 301 | method_GetNodeInfo: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 302 | method_QueryRoutes: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 303 | method_GetNetworkInfo: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 304 | method_StopDaemon: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 305 | method_SubscribeChannelGraph: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 306 | method_DebugLevel: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 307 | method_FeeReport: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 308 | method_UpdateChannelPolicy: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 309 | method_ForwardingHistory: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 310 | method_ExportChannelBackup: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 311 | method_ExportAllChannelBackups: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 312 | method_VerifyChanBackup: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 313 | method_RestoreChannelBackups: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 314 | method_SubscribeChannelBackups: ::std::sync::Arc<::grpc::rt::MethodDescriptor>, 315 | } 316 | 317 | impl ::grpc::ClientStub for LightningClient { 318 | fn with_client(grpc_client: ::std::sync::Arc<::grpc::Client>) -> Self { 319 | LightningClient { 320 | grpc_client: grpc_client, 321 | method_WalletBalance: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 322 | name: "/lnrpc.Lightning/WalletBalance".to_string(), 323 | streaming: ::grpc::rt::GrpcStreaming::Unary, 324 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 325 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 326 | }), 327 | method_ChannelBalance: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 328 | name: "/lnrpc.Lightning/ChannelBalance".to_string(), 329 | streaming: ::grpc::rt::GrpcStreaming::Unary, 330 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 331 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 332 | }), 333 | method_GetTransactions: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 334 | name: "/lnrpc.Lightning/GetTransactions".to_string(), 335 | streaming: ::grpc::rt::GrpcStreaming::Unary, 336 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 337 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 338 | }), 339 | method_EstimateFee: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 340 | name: "/lnrpc.Lightning/EstimateFee".to_string(), 341 | streaming: ::grpc::rt::GrpcStreaming::Unary, 342 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 343 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 344 | }), 345 | method_SendCoins: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 346 | name: "/lnrpc.Lightning/SendCoins".to_string(), 347 | streaming: ::grpc::rt::GrpcStreaming::Unary, 348 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 349 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 350 | }), 351 | method_ListUnspent: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 352 | name: "/lnrpc.Lightning/ListUnspent".to_string(), 353 | streaming: ::grpc::rt::GrpcStreaming::Unary, 354 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 355 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 356 | }), 357 | method_SubscribeTransactions: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 358 | name: "/lnrpc.Lightning/SubscribeTransactions".to_string(), 359 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 360 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 361 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 362 | }), 363 | method_SendMany: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 364 | name: "/lnrpc.Lightning/SendMany".to_string(), 365 | streaming: ::grpc::rt::GrpcStreaming::Unary, 366 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 367 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 368 | }), 369 | method_NewAddress: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 370 | name: "/lnrpc.Lightning/NewAddress".to_string(), 371 | streaming: ::grpc::rt::GrpcStreaming::Unary, 372 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 373 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 374 | }), 375 | method_SignMessage: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 376 | name: "/lnrpc.Lightning/SignMessage".to_string(), 377 | streaming: ::grpc::rt::GrpcStreaming::Unary, 378 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 379 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 380 | }), 381 | method_VerifyMessage: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 382 | name: "/lnrpc.Lightning/VerifyMessage".to_string(), 383 | streaming: ::grpc::rt::GrpcStreaming::Unary, 384 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 385 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 386 | }), 387 | method_ConnectPeer: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 388 | name: "/lnrpc.Lightning/ConnectPeer".to_string(), 389 | streaming: ::grpc::rt::GrpcStreaming::Unary, 390 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 391 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 392 | }), 393 | method_DisconnectPeer: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 394 | name: "/lnrpc.Lightning/DisconnectPeer".to_string(), 395 | streaming: ::grpc::rt::GrpcStreaming::Unary, 396 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 397 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 398 | }), 399 | method_ListPeers: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 400 | name: "/lnrpc.Lightning/ListPeers".to_string(), 401 | streaming: ::grpc::rt::GrpcStreaming::Unary, 402 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 403 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 404 | }), 405 | method_GetInfo: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 406 | name: "/lnrpc.Lightning/GetInfo".to_string(), 407 | streaming: ::grpc::rt::GrpcStreaming::Unary, 408 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 409 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 410 | }), 411 | method_PendingChannels: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 412 | name: "/lnrpc.Lightning/PendingChannels".to_string(), 413 | streaming: ::grpc::rt::GrpcStreaming::Unary, 414 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 415 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 416 | }), 417 | method_ListChannels: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 418 | name: "/lnrpc.Lightning/ListChannels".to_string(), 419 | streaming: ::grpc::rt::GrpcStreaming::Unary, 420 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 421 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 422 | }), 423 | method_SubscribeChannelEvents: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 424 | name: "/lnrpc.Lightning/SubscribeChannelEvents".to_string(), 425 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 426 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 427 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 428 | }), 429 | method_ClosedChannels: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 430 | name: "/lnrpc.Lightning/ClosedChannels".to_string(), 431 | streaming: ::grpc::rt::GrpcStreaming::Unary, 432 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 433 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 434 | }), 435 | method_OpenChannelSync: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 436 | name: "/lnrpc.Lightning/OpenChannelSync".to_string(), 437 | streaming: ::grpc::rt::GrpcStreaming::Unary, 438 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 439 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 440 | }), 441 | method_OpenChannel: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 442 | name: "/lnrpc.Lightning/OpenChannel".to_string(), 443 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 444 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 445 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 446 | }), 447 | method_CloseChannel: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 448 | name: "/lnrpc.Lightning/CloseChannel".to_string(), 449 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 450 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 451 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 452 | }), 453 | method_AbandonChannel: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 454 | name: "/lnrpc.Lightning/AbandonChannel".to_string(), 455 | streaming: ::grpc::rt::GrpcStreaming::Unary, 456 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 457 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 458 | }), 459 | method_SendPayment: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 460 | name: "/lnrpc.Lightning/SendPayment".to_string(), 461 | streaming: ::grpc::rt::GrpcStreaming::Bidi, 462 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 463 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 464 | }), 465 | method_SendPaymentSync: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 466 | name: "/lnrpc.Lightning/SendPaymentSync".to_string(), 467 | streaming: ::grpc::rt::GrpcStreaming::Unary, 468 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 469 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 470 | }), 471 | method_SendToRoute: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 472 | name: "/lnrpc.Lightning/SendToRoute".to_string(), 473 | streaming: ::grpc::rt::GrpcStreaming::Bidi, 474 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 475 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 476 | }), 477 | method_SendToRouteSync: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 478 | name: "/lnrpc.Lightning/SendToRouteSync".to_string(), 479 | streaming: ::grpc::rt::GrpcStreaming::Unary, 480 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 481 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 482 | }), 483 | method_AddInvoice: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 484 | name: "/lnrpc.Lightning/AddInvoice".to_string(), 485 | streaming: ::grpc::rt::GrpcStreaming::Unary, 486 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 487 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 488 | }), 489 | method_ListInvoices: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 490 | name: "/lnrpc.Lightning/ListInvoices".to_string(), 491 | streaming: ::grpc::rt::GrpcStreaming::Unary, 492 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 493 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 494 | }), 495 | method_LookupInvoice: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 496 | name: "/lnrpc.Lightning/LookupInvoice".to_string(), 497 | streaming: ::grpc::rt::GrpcStreaming::Unary, 498 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 499 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 500 | }), 501 | method_SubscribeInvoices: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 502 | name: "/lnrpc.Lightning/SubscribeInvoices".to_string(), 503 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 504 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 505 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 506 | }), 507 | method_DecodePayReq: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 508 | name: "/lnrpc.Lightning/DecodePayReq".to_string(), 509 | streaming: ::grpc::rt::GrpcStreaming::Unary, 510 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 511 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 512 | }), 513 | method_ListPayments: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 514 | name: "/lnrpc.Lightning/ListPayments".to_string(), 515 | streaming: ::grpc::rt::GrpcStreaming::Unary, 516 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 517 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 518 | }), 519 | method_DeleteAllPayments: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 520 | name: "/lnrpc.Lightning/DeleteAllPayments".to_string(), 521 | streaming: ::grpc::rt::GrpcStreaming::Unary, 522 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 523 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 524 | }), 525 | method_DescribeGraph: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 526 | name: "/lnrpc.Lightning/DescribeGraph".to_string(), 527 | streaming: ::grpc::rt::GrpcStreaming::Unary, 528 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 529 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 530 | }), 531 | method_GetChanInfo: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 532 | name: "/lnrpc.Lightning/GetChanInfo".to_string(), 533 | streaming: ::grpc::rt::GrpcStreaming::Unary, 534 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 535 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 536 | }), 537 | method_GetNodeInfo: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 538 | name: "/lnrpc.Lightning/GetNodeInfo".to_string(), 539 | streaming: ::grpc::rt::GrpcStreaming::Unary, 540 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 541 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 542 | }), 543 | method_QueryRoutes: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 544 | name: "/lnrpc.Lightning/QueryRoutes".to_string(), 545 | streaming: ::grpc::rt::GrpcStreaming::Unary, 546 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 547 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 548 | }), 549 | method_GetNetworkInfo: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 550 | name: "/lnrpc.Lightning/GetNetworkInfo".to_string(), 551 | streaming: ::grpc::rt::GrpcStreaming::Unary, 552 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 553 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 554 | }), 555 | method_StopDaemon: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 556 | name: "/lnrpc.Lightning/StopDaemon".to_string(), 557 | streaming: ::grpc::rt::GrpcStreaming::Unary, 558 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 559 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 560 | }), 561 | method_SubscribeChannelGraph: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 562 | name: "/lnrpc.Lightning/SubscribeChannelGraph".to_string(), 563 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 564 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 565 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 566 | }), 567 | method_DebugLevel: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 568 | name: "/lnrpc.Lightning/DebugLevel".to_string(), 569 | streaming: ::grpc::rt::GrpcStreaming::Unary, 570 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 571 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 572 | }), 573 | method_FeeReport: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 574 | name: "/lnrpc.Lightning/FeeReport".to_string(), 575 | streaming: ::grpc::rt::GrpcStreaming::Unary, 576 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 577 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 578 | }), 579 | method_UpdateChannelPolicy: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 580 | name: "/lnrpc.Lightning/UpdateChannelPolicy".to_string(), 581 | streaming: ::grpc::rt::GrpcStreaming::Unary, 582 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 583 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 584 | }), 585 | method_ForwardingHistory: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 586 | name: "/lnrpc.Lightning/ForwardingHistory".to_string(), 587 | streaming: ::grpc::rt::GrpcStreaming::Unary, 588 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 589 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 590 | }), 591 | method_ExportChannelBackup: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 592 | name: "/lnrpc.Lightning/ExportChannelBackup".to_string(), 593 | streaming: ::grpc::rt::GrpcStreaming::Unary, 594 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 595 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 596 | }), 597 | method_ExportAllChannelBackups: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 598 | name: "/lnrpc.Lightning/ExportAllChannelBackups".to_string(), 599 | streaming: ::grpc::rt::GrpcStreaming::Unary, 600 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 601 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 602 | }), 603 | method_VerifyChanBackup: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 604 | name: "/lnrpc.Lightning/VerifyChanBackup".to_string(), 605 | streaming: ::grpc::rt::GrpcStreaming::Unary, 606 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 607 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 608 | }), 609 | method_RestoreChannelBackups: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 610 | name: "/lnrpc.Lightning/RestoreChannelBackups".to_string(), 611 | streaming: ::grpc::rt::GrpcStreaming::Unary, 612 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 613 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 614 | }), 615 | method_SubscribeChannelBackups: ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 616 | name: "/lnrpc.Lightning/SubscribeChannelBackups".to_string(), 617 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 618 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 619 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 620 | }), 621 | } 622 | } 623 | } 624 | 625 | impl Lightning for LightningClient { 626 | fn wallet_balance(&self, o: ::grpc::RequestOptions, p: super::rpc::WalletBalanceRequest) -> ::grpc::SingleResponse { 627 | self.grpc_client.call_unary(o, p, self.method_WalletBalance.clone()) 628 | } 629 | 630 | fn channel_balance(&self, o: ::grpc::RequestOptions, p: super::rpc::ChannelBalanceRequest) -> ::grpc::SingleResponse { 631 | self.grpc_client.call_unary(o, p, self.method_ChannelBalance.clone()) 632 | } 633 | 634 | fn get_transactions(&self, o: ::grpc::RequestOptions, p: super::rpc::GetTransactionsRequest) -> ::grpc::SingleResponse { 635 | self.grpc_client.call_unary(o, p, self.method_GetTransactions.clone()) 636 | } 637 | 638 | fn estimate_fee(&self, o: ::grpc::RequestOptions, p: super::rpc::EstimateFeeRequest) -> ::grpc::SingleResponse { 639 | self.grpc_client.call_unary(o, p, self.method_EstimateFee.clone()) 640 | } 641 | 642 | fn send_coins(&self, o: ::grpc::RequestOptions, p: super::rpc::SendCoinsRequest) -> ::grpc::SingleResponse { 643 | self.grpc_client.call_unary(o, p, self.method_SendCoins.clone()) 644 | } 645 | 646 | fn list_unspent(&self, o: ::grpc::RequestOptions, p: super::rpc::ListUnspentRequest) -> ::grpc::SingleResponse { 647 | self.grpc_client.call_unary(o, p, self.method_ListUnspent.clone()) 648 | } 649 | 650 | fn subscribe_transactions(&self, o: ::grpc::RequestOptions, p: super::rpc::GetTransactionsRequest) -> ::grpc::StreamingResponse { 651 | self.grpc_client.call_server_streaming(o, p, self.method_SubscribeTransactions.clone()) 652 | } 653 | 654 | fn send_many(&self, o: ::grpc::RequestOptions, p: super::rpc::SendManyRequest) -> ::grpc::SingleResponse { 655 | self.grpc_client.call_unary(o, p, self.method_SendMany.clone()) 656 | } 657 | 658 | fn new_address(&self, o: ::grpc::RequestOptions, p: super::rpc::NewAddressRequest) -> ::grpc::SingleResponse { 659 | self.grpc_client.call_unary(o, p, self.method_NewAddress.clone()) 660 | } 661 | 662 | fn sign_message(&self, o: ::grpc::RequestOptions, p: super::rpc::SignMessageRequest) -> ::grpc::SingleResponse { 663 | self.grpc_client.call_unary(o, p, self.method_SignMessage.clone()) 664 | } 665 | 666 | fn verify_message(&self, o: ::grpc::RequestOptions, p: super::rpc::VerifyMessageRequest) -> ::grpc::SingleResponse { 667 | self.grpc_client.call_unary(o, p, self.method_VerifyMessage.clone()) 668 | } 669 | 670 | fn connect_peer(&self, o: ::grpc::RequestOptions, p: super::rpc::ConnectPeerRequest) -> ::grpc::SingleResponse { 671 | self.grpc_client.call_unary(o, p, self.method_ConnectPeer.clone()) 672 | } 673 | 674 | fn disconnect_peer(&self, o: ::grpc::RequestOptions, p: super::rpc::DisconnectPeerRequest) -> ::grpc::SingleResponse { 675 | self.grpc_client.call_unary(o, p, self.method_DisconnectPeer.clone()) 676 | } 677 | 678 | fn list_peers(&self, o: ::grpc::RequestOptions, p: super::rpc::ListPeersRequest) -> ::grpc::SingleResponse { 679 | self.grpc_client.call_unary(o, p, self.method_ListPeers.clone()) 680 | } 681 | 682 | fn get_info(&self, o: ::grpc::RequestOptions, p: super::rpc::GetInfoRequest) -> ::grpc::SingleResponse { 683 | self.grpc_client.call_unary(o, p, self.method_GetInfo.clone()) 684 | } 685 | 686 | fn pending_channels(&self, o: ::grpc::RequestOptions, p: super::rpc::PendingChannelsRequest) -> ::grpc::SingleResponse { 687 | self.grpc_client.call_unary(o, p, self.method_PendingChannels.clone()) 688 | } 689 | 690 | fn list_channels(&self, o: ::grpc::RequestOptions, p: super::rpc::ListChannelsRequest) -> ::grpc::SingleResponse { 691 | self.grpc_client.call_unary(o, p, self.method_ListChannels.clone()) 692 | } 693 | 694 | fn subscribe_channel_events(&self, o: ::grpc::RequestOptions, p: super::rpc::ChannelEventSubscription) -> ::grpc::StreamingResponse { 695 | self.grpc_client.call_server_streaming(o, p, self.method_SubscribeChannelEvents.clone()) 696 | } 697 | 698 | fn closed_channels(&self, o: ::grpc::RequestOptions, p: super::rpc::ClosedChannelsRequest) -> ::grpc::SingleResponse { 699 | self.grpc_client.call_unary(o, p, self.method_ClosedChannels.clone()) 700 | } 701 | 702 | fn open_channel_sync(&self, o: ::grpc::RequestOptions, p: super::rpc::OpenChannelRequest) -> ::grpc::SingleResponse { 703 | self.grpc_client.call_unary(o, p, self.method_OpenChannelSync.clone()) 704 | } 705 | 706 | fn open_channel(&self, o: ::grpc::RequestOptions, p: super::rpc::OpenChannelRequest) -> ::grpc::StreamingResponse { 707 | self.grpc_client.call_server_streaming(o, p, self.method_OpenChannel.clone()) 708 | } 709 | 710 | fn close_channel(&self, o: ::grpc::RequestOptions, p: super::rpc::CloseChannelRequest) -> ::grpc::StreamingResponse { 711 | self.grpc_client.call_server_streaming(o, p, self.method_CloseChannel.clone()) 712 | } 713 | 714 | fn abandon_channel(&self, o: ::grpc::RequestOptions, p: super::rpc::AbandonChannelRequest) -> ::grpc::SingleResponse { 715 | self.grpc_client.call_unary(o, p, self.method_AbandonChannel.clone()) 716 | } 717 | 718 | fn send_payment(&self, o: ::grpc::RequestOptions, p: ::grpc::StreamingRequest) -> ::grpc::StreamingResponse { 719 | self.grpc_client.call_bidi(o, p, self.method_SendPayment.clone()) 720 | } 721 | 722 | fn send_payment_sync(&self, o: ::grpc::RequestOptions, p: super::rpc::SendRequest) -> ::grpc::SingleResponse { 723 | self.grpc_client.call_unary(o, p, self.method_SendPaymentSync.clone()) 724 | } 725 | 726 | fn send_to_route(&self, o: ::grpc::RequestOptions, p: ::grpc::StreamingRequest) -> ::grpc::StreamingResponse { 727 | self.grpc_client.call_bidi(o, p, self.method_SendToRoute.clone()) 728 | } 729 | 730 | fn send_to_route_sync(&self, o: ::grpc::RequestOptions, p: super::rpc::SendToRouteRequest) -> ::grpc::SingleResponse { 731 | self.grpc_client.call_unary(o, p, self.method_SendToRouteSync.clone()) 732 | } 733 | 734 | fn add_invoice(&self, o: ::grpc::RequestOptions, p: super::rpc::Invoice) -> ::grpc::SingleResponse { 735 | self.grpc_client.call_unary(o, p, self.method_AddInvoice.clone()) 736 | } 737 | 738 | fn list_invoices(&self, o: ::grpc::RequestOptions, p: super::rpc::ListInvoiceRequest) -> ::grpc::SingleResponse { 739 | self.grpc_client.call_unary(o, p, self.method_ListInvoices.clone()) 740 | } 741 | 742 | fn lookup_invoice(&self, o: ::grpc::RequestOptions, p: super::rpc::PaymentHash) -> ::grpc::SingleResponse { 743 | self.grpc_client.call_unary(o, p, self.method_LookupInvoice.clone()) 744 | } 745 | 746 | fn subscribe_invoices(&self, o: ::grpc::RequestOptions, p: super::rpc::InvoiceSubscription) -> ::grpc::StreamingResponse { 747 | self.grpc_client.call_server_streaming(o, p, self.method_SubscribeInvoices.clone()) 748 | } 749 | 750 | fn decode_pay_req(&self, o: ::grpc::RequestOptions, p: super::rpc::PayReqString) -> ::grpc::SingleResponse { 751 | self.grpc_client.call_unary(o, p, self.method_DecodePayReq.clone()) 752 | } 753 | 754 | fn list_payments(&self, o: ::grpc::RequestOptions, p: super::rpc::ListPaymentsRequest) -> ::grpc::SingleResponse { 755 | self.grpc_client.call_unary(o, p, self.method_ListPayments.clone()) 756 | } 757 | 758 | fn delete_all_payments(&self, o: ::grpc::RequestOptions, p: super::rpc::DeleteAllPaymentsRequest) -> ::grpc::SingleResponse { 759 | self.grpc_client.call_unary(o, p, self.method_DeleteAllPayments.clone()) 760 | } 761 | 762 | fn describe_graph(&self, o: ::grpc::RequestOptions, p: super::rpc::ChannelGraphRequest) -> ::grpc::SingleResponse { 763 | self.grpc_client.call_unary(o, p, self.method_DescribeGraph.clone()) 764 | } 765 | 766 | fn get_chan_info(&self, o: ::grpc::RequestOptions, p: super::rpc::ChanInfoRequest) -> ::grpc::SingleResponse { 767 | self.grpc_client.call_unary(o, p, self.method_GetChanInfo.clone()) 768 | } 769 | 770 | fn get_node_info(&self, o: ::grpc::RequestOptions, p: super::rpc::NodeInfoRequest) -> ::grpc::SingleResponse { 771 | self.grpc_client.call_unary(o, p, self.method_GetNodeInfo.clone()) 772 | } 773 | 774 | fn query_routes(&self, o: ::grpc::RequestOptions, p: super::rpc::QueryRoutesRequest) -> ::grpc::SingleResponse { 775 | self.grpc_client.call_unary(o, p, self.method_QueryRoutes.clone()) 776 | } 777 | 778 | fn get_network_info(&self, o: ::grpc::RequestOptions, p: super::rpc::NetworkInfoRequest) -> ::grpc::SingleResponse { 779 | self.grpc_client.call_unary(o, p, self.method_GetNetworkInfo.clone()) 780 | } 781 | 782 | fn stop_daemon(&self, o: ::grpc::RequestOptions, p: super::rpc::StopRequest) -> ::grpc::SingleResponse { 783 | self.grpc_client.call_unary(o, p, self.method_StopDaemon.clone()) 784 | } 785 | 786 | fn subscribe_channel_graph(&self, o: ::grpc::RequestOptions, p: super::rpc::GraphTopologySubscription) -> ::grpc::StreamingResponse { 787 | self.grpc_client.call_server_streaming(o, p, self.method_SubscribeChannelGraph.clone()) 788 | } 789 | 790 | fn debug_level(&self, o: ::grpc::RequestOptions, p: super::rpc::DebugLevelRequest) -> ::grpc::SingleResponse { 791 | self.grpc_client.call_unary(o, p, self.method_DebugLevel.clone()) 792 | } 793 | 794 | fn fee_report(&self, o: ::grpc::RequestOptions, p: super::rpc::FeeReportRequest) -> ::grpc::SingleResponse { 795 | self.grpc_client.call_unary(o, p, self.method_FeeReport.clone()) 796 | } 797 | 798 | fn update_channel_policy(&self, o: ::grpc::RequestOptions, p: super::rpc::PolicyUpdateRequest) -> ::grpc::SingleResponse { 799 | self.grpc_client.call_unary(o, p, self.method_UpdateChannelPolicy.clone()) 800 | } 801 | 802 | fn forwarding_history(&self, o: ::grpc::RequestOptions, p: super::rpc::ForwardingHistoryRequest) -> ::grpc::SingleResponse { 803 | self.grpc_client.call_unary(o, p, self.method_ForwardingHistory.clone()) 804 | } 805 | 806 | fn export_channel_backup(&self, o: ::grpc::RequestOptions, p: super::rpc::ExportChannelBackupRequest) -> ::grpc::SingleResponse { 807 | self.grpc_client.call_unary(o, p, self.method_ExportChannelBackup.clone()) 808 | } 809 | 810 | fn export_all_channel_backups(&self, o: ::grpc::RequestOptions, p: super::rpc::ChanBackupExportRequest) -> ::grpc::SingleResponse { 811 | self.grpc_client.call_unary(o, p, self.method_ExportAllChannelBackups.clone()) 812 | } 813 | 814 | fn verify_chan_backup(&self, o: ::grpc::RequestOptions, p: super::rpc::ChanBackupSnapshot) -> ::grpc::SingleResponse { 815 | self.grpc_client.call_unary(o, p, self.method_VerifyChanBackup.clone()) 816 | } 817 | 818 | fn restore_channel_backups(&self, o: ::grpc::RequestOptions, p: super::rpc::RestoreChanBackupRequest) -> ::grpc::SingleResponse { 819 | self.grpc_client.call_unary(o, p, self.method_RestoreChannelBackups.clone()) 820 | } 821 | 822 | fn subscribe_channel_backups(&self, o: ::grpc::RequestOptions, p: super::rpc::ChannelBackupSubscription) -> ::grpc::StreamingResponse { 823 | self.grpc_client.call_server_streaming(o, p, self.method_SubscribeChannelBackups.clone()) 824 | } 825 | } 826 | 827 | // server 828 | 829 | pub struct LightningServer; 830 | 831 | 832 | impl LightningServer { 833 | pub fn new_service_def(handler: H) -> ::grpc::rt::ServerServiceDefinition { 834 | let handler_arc = ::std::sync::Arc::new(handler); 835 | ::grpc::rt::ServerServiceDefinition::new("/lnrpc.Lightning", 836 | vec![ 837 | ::grpc::rt::ServerMethod::new( 838 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 839 | name: "/lnrpc.Lightning/WalletBalance".to_string(), 840 | streaming: ::grpc::rt::GrpcStreaming::Unary, 841 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 842 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 843 | }), 844 | { 845 | let handler_copy = handler_arc.clone(); 846 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.wallet_balance(o, p)) 847 | }, 848 | ), 849 | ::grpc::rt::ServerMethod::new( 850 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 851 | name: "/lnrpc.Lightning/ChannelBalance".to_string(), 852 | streaming: ::grpc::rt::GrpcStreaming::Unary, 853 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 854 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 855 | }), 856 | { 857 | let handler_copy = handler_arc.clone(); 858 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.channel_balance(o, p)) 859 | }, 860 | ), 861 | ::grpc::rt::ServerMethod::new( 862 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 863 | name: "/lnrpc.Lightning/GetTransactions".to_string(), 864 | streaming: ::grpc::rt::GrpcStreaming::Unary, 865 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 866 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 867 | }), 868 | { 869 | let handler_copy = handler_arc.clone(); 870 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.get_transactions(o, p)) 871 | }, 872 | ), 873 | ::grpc::rt::ServerMethod::new( 874 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 875 | name: "/lnrpc.Lightning/EstimateFee".to_string(), 876 | streaming: ::grpc::rt::GrpcStreaming::Unary, 877 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 878 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 879 | }), 880 | { 881 | let handler_copy = handler_arc.clone(); 882 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.estimate_fee(o, p)) 883 | }, 884 | ), 885 | ::grpc::rt::ServerMethod::new( 886 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 887 | name: "/lnrpc.Lightning/SendCoins".to_string(), 888 | streaming: ::grpc::rt::GrpcStreaming::Unary, 889 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 890 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 891 | }), 892 | { 893 | let handler_copy = handler_arc.clone(); 894 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.send_coins(o, p)) 895 | }, 896 | ), 897 | ::grpc::rt::ServerMethod::new( 898 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 899 | name: "/lnrpc.Lightning/ListUnspent".to_string(), 900 | streaming: ::grpc::rt::GrpcStreaming::Unary, 901 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 902 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 903 | }), 904 | { 905 | let handler_copy = handler_arc.clone(); 906 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.list_unspent(o, p)) 907 | }, 908 | ), 909 | ::grpc::rt::ServerMethod::new( 910 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 911 | name: "/lnrpc.Lightning/SubscribeTransactions".to_string(), 912 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 913 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 914 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 915 | }), 916 | { 917 | let handler_copy = handler_arc.clone(); 918 | ::grpc::rt::MethodHandlerServerStreaming::new(move |o, p| handler_copy.subscribe_transactions(o, p)) 919 | }, 920 | ), 921 | ::grpc::rt::ServerMethod::new( 922 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 923 | name: "/lnrpc.Lightning/SendMany".to_string(), 924 | streaming: ::grpc::rt::GrpcStreaming::Unary, 925 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 926 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 927 | }), 928 | { 929 | let handler_copy = handler_arc.clone(); 930 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.send_many(o, p)) 931 | }, 932 | ), 933 | ::grpc::rt::ServerMethod::new( 934 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 935 | name: "/lnrpc.Lightning/NewAddress".to_string(), 936 | streaming: ::grpc::rt::GrpcStreaming::Unary, 937 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 938 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 939 | }), 940 | { 941 | let handler_copy = handler_arc.clone(); 942 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.new_address(o, p)) 943 | }, 944 | ), 945 | ::grpc::rt::ServerMethod::new( 946 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 947 | name: "/lnrpc.Lightning/SignMessage".to_string(), 948 | streaming: ::grpc::rt::GrpcStreaming::Unary, 949 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 950 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 951 | }), 952 | { 953 | let handler_copy = handler_arc.clone(); 954 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.sign_message(o, p)) 955 | }, 956 | ), 957 | ::grpc::rt::ServerMethod::new( 958 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 959 | name: "/lnrpc.Lightning/VerifyMessage".to_string(), 960 | streaming: ::grpc::rt::GrpcStreaming::Unary, 961 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 962 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 963 | }), 964 | { 965 | let handler_copy = handler_arc.clone(); 966 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.verify_message(o, p)) 967 | }, 968 | ), 969 | ::grpc::rt::ServerMethod::new( 970 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 971 | name: "/lnrpc.Lightning/ConnectPeer".to_string(), 972 | streaming: ::grpc::rt::GrpcStreaming::Unary, 973 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 974 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 975 | }), 976 | { 977 | let handler_copy = handler_arc.clone(); 978 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.connect_peer(o, p)) 979 | }, 980 | ), 981 | ::grpc::rt::ServerMethod::new( 982 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 983 | name: "/lnrpc.Lightning/DisconnectPeer".to_string(), 984 | streaming: ::grpc::rt::GrpcStreaming::Unary, 985 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 986 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 987 | }), 988 | { 989 | let handler_copy = handler_arc.clone(); 990 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.disconnect_peer(o, p)) 991 | }, 992 | ), 993 | ::grpc::rt::ServerMethod::new( 994 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 995 | name: "/lnrpc.Lightning/ListPeers".to_string(), 996 | streaming: ::grpc::rt::GrpcStreaming::Unary, 997 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 998 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 999 | }), 1000 | { 1001 | let handler_copy = handler_arc.clone(); 1002 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.list_peers(o, p)) 1003 | }, 1004 | ), 1005 | ::grpc::rt::ServerMethod::new( 1006 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1007 | name: "/lnrpc.Lightning/GetInfo".to_string(), 1008 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1009 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1010 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1011 | }), 1012 | { 1013 | let handler_copy = handler_arc.clone(); 1014 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.get_info(o, p)) 1015 | }, 1016 | ), 1017 | ::grpc::rt::ServerMethod::new( 1018 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1019 | name: "/lnrpc.Lightning/PendingChannels".to_string(), 1020 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1021 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1022 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1023 | }), 1024 | { 1025 | let handler_copy = handler_arc.clone(); 1026 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.pending_channels(o, p)) 1027 | }, 1028 | ), 1029 | ::grpc::rt::ServerMethod::new( 1030 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1031 | name: "/lnrpc.Lightning/ListChannels".to_string(), 1032 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1033 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1034 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1035 | }), 1036 | { 1037 | let handler_copy = handler_arc.clone(); 1038 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.list_channels(o, p)) 1039 | }, 1040 | ), 1041 | ::grpc::rt::ServerMethod::new( 1042 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1043 | name: "/lnrpc.Lightning/SubscribeChannelEvents".to_string(), 1044 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 1045 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1046 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1047 | }), 1048 | { 1049 | let handler_copy = handler_arc.clone(); 1050 | ::grpc::rt::MethodHandlerServerStreaming::new(move |o, p| handler_copy.subscribe_channel_events(o, p)) 1051 | }, 1052 | ), 1053 | ::grpc::rt::ServerMethod::new( 1054 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1055 | name: "/lnrpc.Lightning/ClosedChannels".to_string(), 1056 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1057 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1058 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1059 | }), 1060 | { 1061 | let handler_copy = handler_arc.clone(); 1062 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.closed_channels(o, p)) 1063 | }, 1064 | ), 1065 | ::grpc::rt::ServerMethod::new( 1066 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1067 | name: "/lnrpc.Lightning/OpenChannelSync".to_string(), 1068 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1069 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1070 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1071 | }), 1072 | { 1073 | let handler_copy = handler_arc.clone(); 1074 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.open_channel_sync(o, p)) 1075 | }, 1076 | ), 1077 | ::grpc::rt::ServerMethod::new( 1078 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1079 | name: "/lnrpc.Lightning/OpenChannel".to_string(), 1080 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 1081 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1082 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1083 | }), 1084 | { 1085 | let handler_copy = handler_arc.clone(); 1086 | ::grpc::rt::MethodHandlerServerStreaming::new(move |o, p| handler_copy.open_channel(o, p)) 1087 | }, 1088 | ), 1089 | ::grpc::rt::ServerMethod::new( 1090 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1091 | name: "/lnrpc.Lightning/CloseChannel".to_string(), 1092 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 1093 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1094 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1095 | }), 1096 | { 1097 | let handler_copy = handler_arc.clone(); 1098 | ::grpc::rt::MethodHandlerServerStreaming::new(move |o, p| handler_copy.close_channel(o, p)) 1099 | }, 1100 | ), 1101 | ::grpc::rt::ServerMethod::new( 1102 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1103 | name: "/lnrpc.Lightning/AbandonChannel".to_string(), 1104 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1105 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1106 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1107 | }), 1108 | { 1109 | let handler_copy = handler_arc.clone(); 1110 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.abandon_channel(o, p)) 1111 | }, 1112 | ), 1113 | ::grpc::rt::ServerMethod::new( 1114 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1115 | name: "/lnrpc.Lightning/SendPayment".to_string(), 1116 | streaming: ::grpc::rt::GrpcStreaming::Bidi, 1117 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1118 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1119 | }), 1120 | { 1121 | let handler_copy = handler_arc.clone(); 1122 | ::grpc::rt::MethodHandlerBidi::new(move |o, p| handler_copy.send_payment(o, p)) 1123 | }, 1124 | ), 1125 | ::grpc::rt::ServerMethod::new( 1126 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1127 | name: "/lnrpc.Lightning/SendPaymentSync".to_string(), 1128 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1129 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1130 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1131 | }), 1132 | { 1133 | let handler_copy = handler_arc.clone(); 1134 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.send_payment_sync(o, p)) 1135 | }, 1136 | ), 1137 | ::grpc::rt::ServerMethod::new( 1138 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1139 | name: "/lnrpc.Lightning/SendToRoute".to_string(), 1140 | streaming: ::grpc::rt::GrpcStreaming::Bidi, 1141 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1142 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1143 | }), 1144 | { 1145 | let handler_copy = handler_arc.clone(); 1146 | ::grpc::rt::MethodHandlerBidi::new(move |o, p| handler_copy.send_to_route(o, p)) 1147 | }, 1148 | ), 1149 | ::grpc::rt::ServerMethod::new( 1150 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1151 | name: "/lnrpc.Lightning/SendToRouteSync".to_string(), 1152 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1153 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1154 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1155 | }), 1156 | { 1157 | let handler_copy = handler_arc.clone(); 1158 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.send_to_route_sync(o, p)) 1159 | }, 1160 | ), 1161 | ::grpc::rt::ServerMethod::new( 1162 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1163 | name: "/lnrpc.Lightning/AddInvoice".to_string(), 1164 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1165 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1166 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1167 | }), 1168 | { 1169 | let handler_copy = handler_arc.clone(); 1170 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.add_invoice(o, p)) 1171 | }, 1172 | ), 1173 | ::grpc::rt::ServerMethod::new( 1174 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1175 | name: "/lnrpc.Lightning/ListInvoices".to_string(), 1176 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1177 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1178 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1179 | }), 1180 | { 1181 | let handler_copy = handler_arc.clone(); 1182 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.list_invoices(o, p)) 1183 | }, 1184 | ), 1185 | ::grpc::rt::ServerMethod::new( 1186 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1187 | name: "/lnrpc.Lightning/LookupInvoice".to_string(), 1188 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1189 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1190 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1191 | }), 1192 | { 1193 | let handler_copy = handler_arc.clone(); 1194 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.lookup_invoice(o, p)) 1195 | }, 1196 | ), 1197 | ::grpc::rt::ServerMethod::new( 1198 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1199 | name: "/lnrpc.Lightning/SubscribeInvoices".to_string(), 1200 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 1201 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1202 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1203 | }), 1204 | { 1205 | let handler_copy = handler_arc.clone(); 1206 | ::grpc::rt::MethodHandlerServerStreaming::new(move |o, p| handler_copy.subscribe_invoices(o, p)) 1207 | }, 1208 | ), 1209 | ::grpc::rt::ServerMethod::new( 1210 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1211 | name: "/lnrpc.Lightning/DecodePayReq".to_string(), 1212 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1213 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1214 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1215 | }), 1216 | { 1217 | let handler_copy = handler_arc.clone(); 1218 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.decode_pay_req(o, p)) 1219 | }, 1220 | ), 1221 | ::grpc::rt::ServerMethod::new( 1222 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1223 | name: "/lnrpc.Lightning/ListPayments".to_string(), 1224 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1225 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1226 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1227 | }), 1228 | { 1229 | let handler_copy = handler_arc.clone(); 1230 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.list_payments(o, p)) 1231 | }, 1232 | ), 1233 | ::grpc::rt::ServerMethod::new( 1234 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1235 | name: "/lnrpc.Lightning/DeleteAllPayments".to_string(), 1236 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1237 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1238 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1239 | }), 1240 | { 1241 | let handler_copy = handler_arc.clone(); 1242 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.delete_all_payments(o, p)) 1243 | }, 1244 | ), 1245 | ::grpc::rt::ServerMethod::new( 1246 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1247 | name: "/lnrpc.Lightning/DescribeGraph".to_string(), 1248 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1249 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1250 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1251 | }), 1252 | { 1253 | let handler_copy = handler_arc.clone(); 1254 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.describe_graph(o, p)) 1255 | }, 1256 | ), 1257 | ::grpc::rt::ServerMethod::new( 1258 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1259 | name: "/lnrpc.Lightning/GetChanInfo".to_string(), 1260 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1261 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1262 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1263 | }), 1264 | { 1265 | let handler_copy = handler_arc.clone(); 1266 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.get_chan_info(o, p)) 1267 | }, 1268 | ), 1269 | ::grpc::rt::ServerMethod::new( 1270 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1271 | name: "/lnrpc.Lightning/GetNodeInfo".to_string(), 1272 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1273 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1274 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1275 | }), 1276 | { 1277 | let handler_copy = handler_arc.clone(); 1278 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.get_node_info(o, p)) 1279 | }, 1280 | ), 1281 | ::grpc::rt::ServerMethod::new( 1282 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1283 | name: "/lnrpc.Lightning/QueryRoutes".to_string(), 1284 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1285 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1286 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1287 | }), 1288 | { 1289 | let handler_copy = handler_arc.clone(); 1290 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.query_routes(o, p)) 1291 | }, 1292 | ), 1293 | ::grpc::rt::ServerMethod::new( 1294 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1295 | name: "/lnrpc.Lightning/GetNetworkInfo".to_string(), 1296 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1297 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1298 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1299 | }), 1300 | { 1301 | let handler_copy = handler_arc.clone(); 1302 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.get_network_info(o, p)) 1303 | }, 1304 | ), 1305 | ::grpc::rt::ServerMethod::new( 1306 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1307 | name: "/lnrpc.Lightning/StopDaemon".to_string(), 1308 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1309 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1310 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1311 | }), 1312 | { 1313 | let handler_copy = handler_arc.clone(); 1314 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.stop_daemon(o, p)) 1315 | }, 1316 | ), 1317 | ::grpc::rt::ServerMethod::new( 1318 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1319 | name: "/lnrpc.Lightning/SubscribeChannelGraph".to_string(), 1320 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 1321 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1322 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1323 | }), 1324 | { 1325 | let handler_copy = handler_arc.clone(); 1326 | ::grpc::rt::MethodHandlerServerStreaming::new(move |o, p| handler_copy.subscribe_channel_graph(o, p)) 1327 | }, 1328 | ), 1329 | ::grpc::rt::ServerMethod::new( 1330 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1331 | name: "/lnrpc.Lightning/DebugLevel".to_string(), 1332 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1333 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1334 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1335 | }), 1336 | { 1337 | let handler_copy = handler_arc.clone(); 1338 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.debug_level(o, p)) 1339 | }, 1340 | ), 1341 | ::grpc::rt::ServerMethod::new( 1342 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1343 | name: "/lnrpc.Lightning/FeeReport".to_string(), 1344 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1345 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1346 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1347 | }), 1348 | { 1349 | let handler_copy = handler_arc.clone(); 1350 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.fee_report(o, p)) 1351 | }, 1352 | ), 1353 | ::grpc::rt::ServerMethod::new( 1354 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1355 | name: "/lnrpc.Lightning/UpdateChannelPolicy".to_string(), 1356 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1357 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1358 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1359 | }), 1360 | { 1361 | let handler_copy = handler_arc.clone(); 1362 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.update_channel_policy(o, p)) 1363 | }, 1364 | ), 1365 | ::grpc::rt::ServerMethod::new( 1366 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1367 | name: "/lnrpc.Lightning/ForwardingHistory".to_string(), 1368 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1369 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1370 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1371 | }), 1372 | { 1373 | let handler_copy = handler_arc.clone(); 1374 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.forwarding_history(o, p)) 1375 | }, 1376 | ), 1377 | ::grpc::rt::ServerMethod::new( 1378 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1379 | name: "/lnrpc.Lightning/ExportChannelBackup".to_string(), 1380 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1381 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1382 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1383 | }), 1384 | { 1385 | let handler_copy = handler_arc.clone(); 1386 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.export_channel_backup(o, p)) 1387 | }, 1388 | ), 1389 | ::grpc::rt::ServerMethod::new( 1390 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1391 | name: "/lnrpc.Lightning/ExportAllChannelBackups".to_string(), 1392 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1393 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1394 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1395 | }), 1396 | { 1397 | let handler_copy = handler_arc.clone(); 1398 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.export_all_channel_backups(o, p)) 1399 | }, 1400 | ), 1401 | ::grpc::rt::ServerMethod::new( 1402 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1403 | name: "/lnrpc.Lightning/VerifyChanBackup".to_string(), 1404 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1405 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1406 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1407 | }), 1408 | { 1409 | let handler_copy = handler_arc.clone(); 1410 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.verify_chan_backup(o, p)) 1411 | }, 1412 | ), 1413 | ::grpc::rt::ServerMethod::new( 1414 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1415 | name: "/lnrpc.Lightning/RestoreChannelBackups".to_string(), 1416 | streaming: ::grpc::rt::GrpcStreaming::Unary, 1417 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1418 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1419 | }), 1420 | { 1421 | let handler_copy = handler_arc.clone(); 1422 | ::grpc::rt::MethodHandlerUnary::new(move |o, p| handler_copy.restore_channel_backups(o, p)) 1423 | }, 1424 | ), 1425 | ::grpc::rt::ServerMethod::new( 1426 | ::std::sync::Arc::new(::grpc::rt::MethodDescriptor { 1427 | name: "/lnrpc.Lightning/SubscribeChannelBackups".to_string(), 1428 | streaming: ::grpc::rt::GrpcStreaming::ServerStreaming, 1429 | req_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1430 | resp_marshaller: Box::new(::grpc::protobuf::MarshallerProtobuf), 1431 | }), 1432 | { 1433 | let handler_copy = handler_arc.clone(); 1434 | ::grpc::rt::MethodHandlerServerStreaming::new(move |o, p| handler_copy.subscribe_channel_backups(o, p)) 1435 | }, 1436 | ), 1437 | ], 1438 | ) 1439 | } 1440 | } 1441 | -------------------------------------------------------------------------------- /src/tls_certificate.rs: -------------------------------------------------------------------------------- 1 | use std::path::Path; 2 | use std::process::Command; 3 | use std::sync::Arc; 4 | use std::io::Result; 5 | use httpbis::ClientTlsOption; 6 | 7 | /// Represents bytes of the certificate 8 | /// could be used to create `grpc::Client` 9 | pub struct TLSCertificate { 10 | raw: tls_api::Certificate, 11 | } 12 | 13 | impl TLSCertificate { 14 | /// Reads the certificate in the pem format (other formats might work too, not tested) 15 | /// from a file at the path 16 | pub fn from_path>(path: P) -> Result { 17 | use std::io::{Error, ErrorKind}; 18 | 19 | let output = Command::new("openssl") 20 | .args(&["x509", "-outform", "der", "-in"]) 21 | .arg(path.as_ref()) 22 | .output()?; 23 | 24 | if !output.status.success() { 25 | let error = String::from_utf8_lossy(&output.stderr); 26 | return Err(Error::new(ErrorKind::InvalidInput, error.as_ref())); 27 | } 28 | 29 | Ok(TLSCertificate { 30 | raw: tls_api::Certificate::from_der(output.stdout), 31 | }) 32 | } 33 | 34 | /// Creates the tls using this certificate 35 | pub fn into_tls(self, host: &str) -> tls_api::Result> { 36 | use tls_api::TlsConnectorBuilder as _; 37 | 38 | let mut builder = ::builder()?; 39 | builder.add_root_certificate(self.raw)?; 40 | let connector = builder.build()?; 41 | Ok(ClientTlsOption::Tls(host.to_owned(), Arc::new(connector))) 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tools/bitcoin-cli.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | bitcoin-cli \ 4 | -datadir=data/bitcoind \ 5 | -regtest \ 6 | -rpcport=18443 \ 7 | -rpcuser=user \ 8 | -rpcpassword=password \ 9 | $@ 10 | -------------------------------------------------------------------------------- /tools/lncli1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | lncli \ 4 | --macaroonpath data/lnd1/admin.macaroon \ 5 | --rpcserver localhost:10009 \ 6 | --tlscertpath data/lnd1/tls.cert \ 7 | $@ 8 | -------------------------------------------------------------------------------- /tools/lncli2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | lncli \ 4 | --macaroonpath data/lnd2/admin.macaroon \ 5 | --rpcserver localhost:11009 \ 6 | --tlscertpath data/lnd2/tls.cert \ 7 | $@ 8 | -------------------------------------------------------------------------------- /tools/lncli3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | lncli \ 4 | --macaroonpath data/lnd3/admin.macaroon \ 5 | --rpcserver localhost:12009 \ 6 | --tlscertpath data/lnd3/tls.cert \ 7 | $@ 8 | -------------------------------------------------------------------------------- /tools/start-bitcoind.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | mkdir -p data/bitcoind 4 | 5 | bitcoind \ 6 | -blocknotify="echo New block %s" \ 7 | -datadir=data/bitcoind \ 8 | -txindex \ 9 | -debug=1 \ 10 | -printtoconsole \ 11 | -server \ 12 | -regtest \ 13 | -rpcport=18443 \ 14 | -rpcuser=user \ 15 | -rpcpassword=password \ 16 | -zmqpubrawblock=tcp://127.0.0.1:18501 \ 17 | -zmqpubrawtx=tcp://127.0.0.1:18502 \ 18 | $@ -------------------------------------------------------------------------------- /tools/start-lnd-1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | mkdir -p data/lnd1 4 | 5 | lnd \ 6 | --lnddir=data/lnd1 \ 7 | --configfile=data/lnd1/lnd.conf \ 8 | --tlscertpath=data/lnd1/tls.cert \ 9 | --tlskeypath=data/lnd1/tls.key \ 10 | --adminmacaroonpath=data/lnd1/admin.macaroon \ 11 | --readonlymacaroonpath=data/lnd1/readonly.macaroon \ 12 | --invoicemacaroonpath=data/lnd1/invoice.macaroon \ 13 | --rpclisten=localhost:10009 \ 14 | --restlisten=localhost:10010 \ 15 | --listen=:10011 \ 16 | --externalip=localhost:10011 \ 17 | --debuglevel=info \ 18 | --nobootstrap \ 19 | --bitcoin.active \ 20 | --bitcoin.node=bitcoind \ 21 | --bitcoin.regtest \ 22 | --bitcoind.dir=data/bitcoind \ 23 | --bitcoind.rpchost=localhost:18443 \ 24 | --bitcoind.rpcuser=user \ 25 | --bitcoind.rpcpass=password \ 26 | --bitcoind.zmqpubrawblock=tcp://127.0.0.1:18501 \ 27 | --bitcoind.zmqpubrawtx=tcp://127.0.0.1:18502 28 | -------------------------------------------------------------------------------- /tools/start-lnd-2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | mkdir -p data/lnd2 4 | 5 | lnd \ 6 | --lnddir=data/lnd2 \ 7 | --configfile=data/lnd2/lnd.conf \ 8 | --tlscertpath=data/lnd2/tls.cert \ 9 | --tlskeypath=data/lnd2/tls.key \ 10 | --adminmacaroonpath=data/lnd2/admin.macaroon \ 11 | --readonlymacaroonpath=data/lnd2/readonly.macaroon \ 12 | --invoicemacaroonpath=data/lnd2/invoice.macaroon \ 13 | --rpclisten=localhost:11009 \ 14 | --restlisten=localhost:11010 \ 15 | --listen=:11011 \ 16 | --externalip=localhost:11011 \ 17 | --debuglevel=info \ 18 | --nobootstrap \ 19 | --bitcoin.active \ 20 | --bitcoin.node=bitcoind \ 21 | --bitcoin.regtest \ 22 | --bitcoind.dir=data/bitcoind \ 23 | --bitcoind.rpchost=localhost:18443 \ 24 | --bitcoind.rpcuser=user \ 25 | --bitcoind.rpcpass=password \ 26 | --bitcoind.zmqpubrawblock=tcp://127.0.0.1:18501 \ 27 | --bitcoind.zmqpubrawtx=tcp://127.0.0.1:18502 28 | -------------------------------------------------------------------------------- /tools/start-lnd-3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | mkdir -p data/lnd3 4 | 5 | lnd \ 6 | --lnddir=data/lnd3 \ 7 | --configfile=data/lnd3/lnd.conf \ 8 | --tlscertpath=data/lnd3/tls.cert \ 9 | --tlskeypath=data/lnd3/tls.key \ 10 | --adminmacaroonpath=data/lnd3/admin.macaroon \ 11 | --readonlymacaroonpath=data/lnd3/readonly.macaroon \ 12 | --invoicemacaroonpath=data/lnd3/invoice.macaroon \ 13 | --rpclisten=localhost:12009 \ 14 | --restlisten=localhost:12010 \ 15 | --listen=:12011 \ 16 | --externalip=localhost:12011 \ 17 | --debuglevel=info \ 18 | --nobootstrap \ 19 | --bitcoin.active \ 20 | --bitcoin.node=bitcoind \ 21 | --bitcoin.regtest \ 22 | --bitcoind.dir=data/bitcoind \ 23 | --bitcoind.rpchost=localhost:18443 \ 24 | --bitcoind.rpcuser=user \ 25 | --bitcoind.rpcpass=password \ 26 | --bitcoind.zmqpubrawblock=tcp://127.0.0.1:18501 \ 27 | --bitcoind.zmqpubrawtx=tcp://127.0.0.1:18502 28 | --------------------------------------------------------------------------------