@@ -117,7 +117,7 @@ impl Socket {
117
117
} ;
118
118
119
119
if socket != c:: INVALID_SOCKET {
120
- unsafe { Ok ( Self :: from_raw_socket ( socket) ) }
120
+ unsafe { Ok ( Self :: from_raw ( socket) ) }
121
121
} else {
122
122
let error = unsafe { c:: WSAGetLastError ( ) } ;
123
123
@@ -133,7 +133,7 @@ impl Socket {
133
133
}
134
134
135
135
unsafe {
136
- let socket = Self :: from_raw_socket ( socket) ;
136
+ let socket = Self :: from_raw ( socket) ;
137
137
socket. 0 . set_no_inherit ( ) ?;
138
138
Ok ( socket)
139
139
}
@@ -144,7 +144,7 @@ impl Socket {
144
144
self . set_nonblocking ( true ) ?;
145
145
let result = {
146
146
let ( addr, len) = addr. into_inner ( ) ;
147
- let result = unsafe { c:: connect ( self . as_raw_socket ( ) , addr. as_ptr ( ) , len) } ;
147
+ let result = unsafe { c:: connect ( self . as_raw ( ) , addr. as_ptr ( ) , len) } ;
148
148
cvt ( result) . map ( drop)
149
149
} ;
150
150
self . set_nonblocking ( false ) ?;
@@ -170,7 +170,7 @@ impl Socket {
170
170
let fds = {
171
171
let mut fds = unsafe { mem:: zeroed :: < c:: fd_set > ( ) } ;
172
172
fds. fd_count = 1 ;
173
- fds. fd_array [ 0 ] = self . as_raw_socket ( ) ;
173
+ fds. fd_array [ 0 ] = self . as_raw ( ) ;
174
174
fds
175
175
} ;
176
176
@@ -202,11 +202,11 @@ impl Socket {
202
202
}
203
203
204
204
pub fn accept ( & self , storage : * mut c:: SOCKADDR , len : * mut c_int ) -> io:: Result < Socket > {
205
- let socket = unsafe { c:: accept ( self . as_raw_socket ( ) , storage, len) } ;
205
+ let socket = unsafe { c:: accept ( self . as_raw ( ) , storage, len) } ;
206
206
207
207
match socket {
208
208
c:: INVALID_SOCKET => Err ( last_error ( ) ) ,
209
- _ => unsafe { Ok ( Self :: from_raw_socket ( socket) ) } ,
209
+ _ => unsafe { Ok ( Self :: from_raw ( socket) ) } ,
210
210
}
211
211
}
212
212
@@ -218,9 +218,8 @@ impl Socket {
218
218
// On unix when a socket is shut down all further reads return 0, so we
219
219
// do the same on windows to map a shut down socket to returning EOF.
220
220
let length = cmp:: min ( buf. capacity ( ) , i32:: MAX as usize ) as i32 ;
221
- let result = unsafe {
222
- c:: recv ( self . as_raw_socket ( ) , buf. as_mut ( ) . as_mut_ptr ( ) as * mut _ , length, flags)
223
- } ;
221
+ let result =
222
+ unsafe { c:: recv ( self . as_raw ( ) , buf. as_mut ( ) . as_mut_ptr ( ) as * mut _ , length, flags) } ;
224
223
225
224
match result {
226
225
c:: SOCKET_ERROR => {
@@ -257,7 +256,7 @@ impl Socket {
257
256
let mut flags = 0 ;
258
257
let result = unsafe {
259
258
c:: WSARecv (
260
- self . as_raw_socket ( ) ,
259
+ self . as_raw ( ) ,
261
260
bufs. as_mut_ptr ( ) as * mut c:: WSABUF ,
262
261
length,
263
262
& mut nread,
@@ -305,7 +304,7 @@ impl Socket {
305
304
// do the same on windows to map a shut down socket to returning EOF.
306
305
let result = unsafe {
307
306
c:: recvfrom (
308
- self . as_raw_socket ( ) ,
307
+ self . as_raw ( ) ,
309
308
buf. as_mut_ptr ( ) as * mut _ ,
310
309
length,
311
310
flags,
@@ -341,7 +340,7 @@ impl Socket {
341
340
let mut nwritten = 0 ;
342
341
let result = unsafe {
343
342
c:: WSASend (
344
- self . as_raw_socket ( ) ,
343
+ self . as_raw ( ) ,
345
344
bufs. as_ptr ( ) as * const c:: WSABUF as * mut _ ,
346
345
length,
347
346
& mut nwritten,
@@ -392,14 +391,14 @@ impl Socket {
392
391
Shutdown :: Read => c:: SD_RECEIVE ,
393
392
Shutdown :: Both => c:: SD_BOTH ,
394
393
} ;
395
- let result = unsafe { c:: shutdown ( self . as_raw_socket ( ) , how) } ;
394
+ let result = unsafe { c:: shutdown ( self . as_raw ( ) , how) } ;
396
395
cvt ( result) . map ( drop)
397
396
}
398
397
399
398
pub fn set_nonblocking ( & self , nonblocking : bool ) -> io:: Result < ( ) > {
400
399
let mut nonblocking = nonblocking as c_ulong ;
401
400
let result =
402
- unsafe { c:: ioctlsocket ( self . as_raw_socket ( ) , c:: FIONBIO as c_int , & mut nonblocking) } ;
401
+ unsafe { c:: ioctlsocket ( self . as_raw ( ) , c:: FIONBIO as c_int , & mut nonblocking) } ;
403
402
cvt ( result) . map ( drop)
404
403
}
405
404
@@ -433,8 +432,15 @@ impl Socket {
433
432
}
434
433
435
434
// This is used by sys_common code to abstract over Windows and Unix.
436
- pub fn as_raw ( & self ) -> RawSocket {
437
- self . as_inner ( ) . as_raw_socket ( )
435
+ pub fn as_raw ( & self ) -> c:: SOCKET {
436
+ debug_assert_eq ! ( mem:: size_of:: <c:: SOCKET >( ) , mem:: size_of:: <RawSocket >( ) ) ;
437
+ debug_assert_eq ! ( mem:: align_of:: <c:: SOCKET >( ) , mem:: align_of:: <RawSocket >( ) ) ;
438
+ self . as_inner ( ) . as_raw_socket ( ) as c:: SOCKET
439
+ }
440
+ pub unsafe fn from_raw ( raw : c:: SOCKET ) -> Self {
441
+ debug_assert_eq ! ( mem:: size_of:: <c:: SOCKET >( ) , mem:: size_of:: <RawSocket >( ) ) ;
442
+ debug_assert_eq ! ( mem:: align_of:: <c:: SOCKET >( ) , mem:: align_of:: <RawSocket >( ) ) ;
443
+ Self :: from_raw_socket ( raw as RawSocket )
438
444
}
439
445
}
440
446
0 commit comments