Skip to content

Commit 91e6e78

Browse files
committed
Stop using endian conversion Writer/Reader methods
They're going away in new IO.
1 parent b4aff18 commit 91e6e78

3 files changed

Lines changed: 46 additions & 34 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ openssl = "0.3.0"
2929
time = "0.1.14"
3030
log = "0.2"
3131
rustc-serialize = "0.2"
32+
byteorder = "0.2"
3233

3334
[dependencies.uuid]
3435
optional = true

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ extern crate phf;
6262
extern crate phf_macros;
6363
extern crate "rustc-serialize" as serialize;
6464
extern crate time;
65+
extern crate byteorder;
6566

6667
use openssl::crypto::hash::{self, Hasher};
6768
use openssl::ssl::{SslContext, MaybeSslStream};

src/message.rs

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
1-
use std::old_io::{IoResult, IoError, OtherIoError, ByRefReader};
1+
#![no_implicit_prelude]
2+
3+
use std::result::Result::{Ok, Err};
4+
use std::option::Option::{self, None, Some};
5+
use std::vec::Vec;
6+
use std::string::String;
7+
use std::str::StrExt;
8+
use std::slice::SliceExt;
9+
10+
use std::old_io::{self, IoResult, IoError, OtherIoError, ByRefReader, Buffer};
211
use std::old_io::util::LimitReader;
312
use std::mem;
13+
use byteorder::{BigEndian, ReaderBytesExt, WriterBytesExt};
414

515
use io::Timeout;
616
use types::Oid;
@@ -137,7 +147,7 @@ trait WriteCStr {
137147
fn write_cstr(&mut self, s: &str) -> IoResult<()>;
138148
}
139149

140-
impl<W: Writer> WriteCStr for W {
150+
impl<W: old_io::Writer> WriteCStr for W {
141151
fn write_cstr(&mut self, s: &str) -> IoResult<()> {
142152
try!(self.write_all(s.as_bytes()));
143153
self.write_u8(0)
@@ -149,7 +159,7 @@ pub trait WriteMessage {
149159
fn write_message(&mut self, &FrontendMessage) -> IoResult<()> ;
150160
}
151161

152-
impl<W: Writer> WriteMessage for W {
162+
impl<W: old_io::Writer> WriteMessage for W {
153163
fn write_message(&mut self, message: &FrontendMessage) -> IoResult<()> {
154164
let mut buf = vec![];
155165
let mut ident = None;
@@ -160,31 +170,31 @@ impl<W: Writer> WriteMessage for W {
160170
try!(buf.write_cstr(portal));
161171
try!(buf.write_cstr(statement));
162172

163-
try!(buf.write_be_i16(formats.len() as i16));
173+
try!(buf.write_i16::<BigEndian>(formats.len() as i16));
164174
for format in formats.iter() {
165-
try!(buf.write_be_i16(*format));
175+
try!(buf.write_i16::<BigEndian>(*format));
166176
}
167177

168-
try!(buf.write_be_i16(values.len() as i16));
178+
try!(buf.write_i16::<BigEndian>(values.len() as i16));
169179
for value in values.iter() {
170180
match *value {
171-
None => try!(buf.write_be_i32(-1)),
181+
None => try!(buf.write_i32::<BigEndian>(-1)),
172182
Some(ref value) => {
173-
try!(buf.write_be_i32(value.len() as i32));
174-
try!(buf.write_all(&**value));
183+
try!(buf.write_i32::<BigEndian>(value.len() as i32));
184+
try!(old_io::Writer::write_all(&mut buf, &**value));
175185
}
176186
}
177187
}
178188

179-
try!(buf.write_be_i16(result_formats.len() as i16));
189+
try!(buf.write_i16::<BigEndian>(result_formats.len() as i16));
180190
for format in result_formats.iter() {
181-
try!(buf.write_be_i16(*format));
191+
try!(buf.write_i16::<BigEndian>(*format));
182192
}
183193
}
184194
CancelRequest { code, process_id, secret_key } => {
185-
try!(buf.write_be_u32(code));
186-
try!(buf.write_be_u32(process_id));
187-
try!(buf.write_be_u32(secret_key));
195+
try!(buf.write_u32::<BigEndian>(code));
196+
try!(buf.write_u32::<BigEndian>(process_id));
197+
try!(buf.write_u32::<BigEndian>(secret_key));
188198
}
189199
Close { variant, name } => {
190200
ident = Some(b'C');
@@ -193,7 +203,7 @@ impl<W: Writer> WriteMessage for W {
193203
}
194204
CopyData { data } => {
195205
ident = Some(b'd');
196-
try!(buf.write_all(data));
206+
try!(old_io::Writer::write_all(&mut buf, data));
197207
}
198208
CopyDone => ident = Some(b'c'),
199209
CopyFail { message } => {
@@ -208,15 +218,15 @@ impl<W: Writer> WriteMessage for W {
208218
Execute { portal, max_rows } => {
209219
ident = Some(b'E');
210220
try!(buf.write_cstr(portal));
211-
try!(buf.write_be_i32(max_rows));
221+
try!(buf.write_i32::<BigEndian>(max_rows));
212222
}
213223
Parse { name, query, param_types } => {
214224
ident = Some(b'P');
215225
try!(buf.write_cstr(name));
216226
try!(buf.write_cstr(query));
217-
try!(buf.write_be_i16(param_types.len() as i16));
227+
try!(buf.write_i16::<BigEndian>(param_types.len() as i16));
218228
for ty in param_types.iter() {
219-
try!(buf.write_be_u32(*ty));
229+
try!(buf.write_u32::<BigEndian>(*ty));
220230
}
221231
}
222232
PasswordMessage { password } => {
@@ -228,14 +238,14 @@ impl<W: Writer> WriteMessage for W {
228238
try!(buf.write_cstr(query));
229239
}
230240
StartupMessage { version, parameters } => {
231-
try!(buf.write_be_u32(version));
232-
for &(ref k, ref v) in parameters.iter() {
241+
try!(buf.write_u32::<BigEndian>(version));
242+
for &(ref k, ref v) in parameters {
233243
try!(buf.write_cstr(&**k));
234244
try!(buf.write_cstr(&**v));
235245
}
236246
try!(buf.write_u8(0));
237247
}
238-
SslRequest { code } => try!(buf.write_be_u32(code)),
248+
SslRequest { code } => try!(buf.write_u32::<BigEndian>(code)),
239249
Sync => ident = Some(b'S'),
240250
Terminate => ident = Some(b'X'),
241251
}
@@ -245,7 +255,7 @@ impl<W: Writer> WriteMessage for W {
245255
}
246256

247257
// add size of length value
248-
try!(self.write_be_i32((buf.len() + mem::size_of::<i32>()) as i32));
258+
try!(self.write_i32::<BigEndian>((buf.len() + mem::size_of::<i32>()) as i32));
249259
try!(self.write_all(&*buf));
250260

251261
Ok(())
@@ -286,15 +296,15 @@ impl<R: Buffer+Timeout> ReadMessage for R {
286296
let ident = try!(ident);
287297

288298
// subtract size of length value
289-
let len = try!(self.read_be_u32()) as usize - mem::size_of::<i32>();
299+
let len = try!(self.read_u32::<BigEndian>()) as usize - mem::size_of::<i32>();
290300
let mut rdr = LimitReader::new(self.by_ref(), len);
291301

292302
let ret = match ident {
293303
b'1' => ParseComplete,
294304
b'2' => BindComplete,
295305
b'3' => CloseComplete,
296306
b'A' => NotificationResponse {
297-
pid: try!(rdr.read_be_u32()),
307+
pid: try!(rdr.read_u32::<BigEndian>()),
298308
channel: try!(rdr.read_cstr()),
299309
payload: try!(rdr.read_cstr())
300310
},
@@ -304,8 +314,8 @@ impl<R: Buffer+Timeout> ReadMessage for R {
304314
b'G' => {
305315
let format = try!(rdr.read_u8());
306316
let mut column_formats = vec![];
307-
for _ in range(0, try!(rdr.read_be_u16())) {
308-
column_formats.push(try!(rdr.read_be_u16()));
317+
for _ in 0..try!(rdr.read_u16::<BigEndian>()) {
318+
column_formats.push(try!(rdr.read_u16::<BigEndian>()));
309319
}
310320
CopyInResponse {
311321
format: format,
@@ -314,8 +324,8 @@ impl<R: Buffer+Timeout> ReadMessage for R {
314324
}
315325
b'I' => EmptyQueryResponse,
316326
b'K' => BackendKeyData {
317-
process_id: try!(rdr.read_be_u32()),
318-
secret_key: try!(rdr.read_be_u32())
327+
process_id: try!(rdr.read_u32::<BigEndian>()),
328+
secret_key: try!(rdr.read_u32::<BigEndian>())
319329
},
320330
b'n' => NoData,
321331
b'N' => NoticeResponse { fields: try!(read_fields(&mut rdr)) },
@@ -363,7 +373,7 @@ fn read_data_row<R: Buffer>(buf: &mut R) -> IoResult<BackendMessage> {
363373
let len = try!(buf.read_be_u16()) as usize;
364374
let mut values = Vec::with_capacity(len);
365375

366-
for _ in range(0, len) {
376+
for _ in 0..len {
367377
let val = match try!(buf.read_be_i32()) {
368378
-1 => None,
369379
len => Some(try!(buf.read_exact(len as usize)))
@@ -399,8 +409,8 @@ fn read_parameter_description<R: Buffer>(buf: &mut R) -> IoResult<BackendMessage
399409
let len = try!(buf.read_be_i16()) as usize;
400410
let mut types = Vec::with_capacity(len);
401411

402-
for _ in range(0, len) {
403-
types.push(try!(buf.read_be_u32()));
412+
for _ in 0..len {
413+
types.push(try!(buf.read_u32::<BigEndian>()));
404414
}
405415

406416
Ok(ParameterDescription { types: types })
@@ -410,12 +420,12 @@ fn read_row_description<R: Buffer>(buf: &mut R) -> IoResult<BackendMessage> {
410420
let len = try!(buf.read_be_i16()) as usize;
411421
let mut types = Vec::with_capacity(len);
412422

413-
for _ in range(0, len) {
423+
for _ in 0..len {
414424
types.push(RowDescriptionEntry {
415425
name: try!(buf.read_cstr()),
416-
table_oid: try!(buf.read_be_u32()),
426+
table_oid: try!(buf.read_u32::<BigEndian>()),
417427
column_id: try!(buf.read_be_i16()),
418-
type_oid: try!(buf.read_be_u32()),
428+
type_oid: try!(buf.read_u32::<BigEndian>()),
419429
type_size: try!(buf.read_be_i16()),
420430
type_modifier: try!(buf.read_be_i32()),
421431
format: try!(buf.read_be_i16())

0 commit comments

Comments
 (0)