|
1 | 1 | use secp256k1::key::{SecretKey,PublicKey};
|
2 | 2 |
|
3 | 3 | use ln::msgs;
|
4 |
| -use util::ser::{Writeable, Readable}; |
| 4 | +use util::ser::{Writeable, Writer, Readable}; |
5 | 5 | use ln::peer_channel_encryptor::{PeerChannelEncryptor,NextNoiseStep};
|
6 | 6 | use util::byte_utils;
|
7 | 7 | use util::events::{EventsProvider,Event};
|
@@ -112,15 +112,23 @@ pub struct PeerManager<Descriptor: SocketDescriptor> {
|
112 | 112 | logger: Arc<Logger>,
|
113 | 113 | }
|
114 | 114 |
|
| 115 | +struct VecWriter(Vec<u8>); |
| 116 | +impl Writer for VecWriter { |
| 117 | + fn write_all(&mut self, buf: &[u8]) -> Result<(), ::std::io::Error> { |
| 118 | + self.0.extend_from_slice(buf); |
| 119 | + Ok(()) |
| 120 | + } |
| 121 | + fn size_hint(&mut self, size: usize) { |
| 122 | + self.0.reserve_exact(size); |
| 123 | + } |
| 124 | +} |
| 125 | + |
115 | 126 | macro_rules! encode_msg {
|
116 | 127 | ($msg: expr, $msg_code: expr) => {{
|
117 |
| - let mut w = ::std::io::Cursor::new(vec![]); |
118 |
| - 0u16.write(&mut w).unwrap(); |
119 |
| - $msg.write(&mut w).unwrap(); |
120 |
| - let mut msg = w.into_inner(); |
121 |
| - let len = msg.len(); |
122 |
| - msg[..2].copy_from_slice(&byte_utils::be16_to_array(len as u16 - 2)); |
123 |
| - msg |
| 128 | + let mut msg = VecWriter(Vec::new()); |
| 129 | + ($msg_code as u16).write(&mut msg).unwrap(); |
| 130 | + $msg.write(&mut msg).unwrap(); |
| 131 | + msg.0 |
124 | 132 | }}
|
125 | 133 | }
|
126 | 134 |
|
|
0 commit comments