[rust PATCH v2 3/5] libvirt-rust: stream: automated lint
Sahid Orentino Ferdjaoui
sahid.ferdjaoui at canonical.com
Fri Jan 17 16:23:30 UTC 2020
On Fri, Jan 17, 2020 at 12:23:46AM -0700, Zixing Liu wrote:
> On 1/13/20 3:53 AM, Sahid Orentino Ferdjaoui wrote:
>
> > On Fri, Jan 10, 2020 at 11:35:32AM -0700, Zixing Liu wrote:
> >> On 2020-01-10 04:48, Sahid Orentino Ferdjaoui wrote:
> >>
> >>> On Tue, Dec 24, 2019 at 12:12:53AM -0700, Zixing Liu wrote:
> >>>> * used rustfmt to clean up the code
> >>>>
> >>>> Signed-off-by: Zixing Liu <liushuyu at aosc.io>
> >>>> ---
> >>>> src/stream.rs | 97 +++++++++++++++++++++++++++++----------------------
> >>>> 1 file changed, 56 insertions(+), 41 deletions(-)
> >>> NAK, we don't have specific rule for that. Even if I'm OK with you to
> >>> use rustfmt we should consider having CI to also check that.
> >> Well, it's also one part of my habit since formatted code is more
> >> readable and looks neat. Speaking of CI, I think you could
> >> integrate the format check or even commit format changes in CI using
> >> `cargo-fmt` which comes with every Rust installation.
> > Do you think you can add with this patch a change in CI so that format
> > of src/stream.rs will be verified? So basically we will avoid
> > regression and we will be able to clean the code incrementally.
>
> Well, I guess I can add the patch to check the format in the changed
> files from the last commit in the CI system. However, I am not quite
> sure after merging a multi-commit patch, what changes would the
> `HEAD^...HEAD` include.
>
>
> Also, in this patch series, I changed more than one file. The formatter
> will check the entire file in which the changes had occurred instead of
> the diff since the format check is contextual in Rust.
>
>
> And are there any other problems with this patch-set that I haven't
> addressed?
I suggest you to rebase your change and re-order the patches so the
"3/5 libvirt-rust: stream: automated lint" become the last one + you
add to that patch the CI update so that will ensure no regression
regarding the formatting of src/stream.rs.
About the other patches I commented to some of your patches, they are
just nits. if you can address them that would be great.
Thank you Zixing Liu for your work I will wait for your change to be
merged before to release a new version.
s.
> >>>> diff --git a/src/stream.rs b/src/stream.rs
> >>>> index 1ffd186..0d84fd7 100644
> >>>> --- a/src/stream.rs
> >>>> +++ b/src/stream.rs
> >>>> @@ -18,8 +18,8 @@
> >>>>
> >>>> extern crate libc;
> >>>>
> >>>> -use connect::Connect;
> >>>> use connect::sys::virConnectPtr;
> >>>> +use connect::Connect;
> >>>> use std::convert::TryFrom;
> >>>>
> >>>> use error::Error;
> >>>> @@ -33,28 +33,28 @@ pub mod sys {
> >>>>
> >>>> #[link(name = "virt")]
> >>>> extern "C" {
> >>>> - fn virStreamNew(c: virConnectPtr,
> >>>> - flags: libc::c_uint)
> >>>> - -> sys::virStreamPtr;
> >>>> - fn virStreamSend(c: sys::virStreamPtr,
> >>>> - data: *const libc::c_char,
> >>>> - nbytes: libc::size_t)
> >>>> - -> libc::c_int;
> >>>> - fn virStreamRecv(c: sys::virStreamPtr,
> >>>> - data: *mut libc::c_char,
> >>>> - nbytes: libc::size_t)
> >>>> - -> libc::c_int;
> >>>> + fn virStreamNew(c: virConnectPtr, flags: libc::c_uint) -> sys::virStreamPtr;
> >>>> + fn virStreamSend(
> >>>> + c: sys::virStreamPtr,
> >>>> + data: *const libc::c_char,
> >>>> + nbytes: libc::size_t,
> >>>> + ) -> libc::c_int;
> >>>> + fn virStreamRecv(
> >>>> + c: sys::virStreamPtr,
> >>>> + data: *mut libc::c_char,
> >>>> + nbytes: libc::size_t,
> >>>> + ) -> libc::c_int;
> >>>> fn virStreamFree(c: sys::virStreamPtr) -> libc::c_int;
> >>>> fn virStreamAbort(c: sys::virStreamPtr) -> libc::c_int;
> >>>> fn virStreamFinish(c: sys::virStreamPtr) -> libc::c_int;
> >>>> - fn virStreamEventAddCallback(c: sys::virStreamPtr,
> >>>> - event: libc::c_int,
> >>>> - callback: StreamEventCallback,
> >>>> - opaque: *const libc::c_void,
> >>>> - ff: FreeCallback)
> >>>> - -> libc::c_int;
> >>>> - fn virStreamEventUpdateCallback(c: sys::virStreamPtr,
> >>>> - events: libc::c_int) -> libc::c_int;
> >>>> + fn virStreamEventAddCallback(
> >>>> + c: sys::virStreamPtr,
> >>>> + event: libc::c_int,
> >>>> + callback: StreamEventCallback,
> >>>> + opaque: *const libc::c_void,
> >>>> + ff: FreeCallback,
> >>>> + ) -> libc::c_int;
> >>>> + fn virStreamEventUpdateCallback(c: sys::virStreamPtr, events: libc::c_int) -> libc::c_int;
> >>>> fn virStreamEventRemoveCallback(c: sys::virStreamPtr) -> libc::c_int;
> >>>> }
> >>>>
> >>>> @@ -71,14 +71,16 @@ pub type StreamEventCallback = extern "C" fn(sys::virStreamPtr, libc::c_int, *co
> >>>> pub type FreeCallback = extern "C" fn(*mut libc::c_void);
> >>>>
> >>>> // wrapper for callbacks
> >>>> -extern "C" fn event_callback(c: sys::virStreamPtr, flags: libc::c_int, opaque: *const libc::c_void) {
> >>>> - let flags = flags as StreamFlags;
> >>>> - let shadow_self = unsafe {
> >>>> - &mut*(opaque as *mut Stream)
> >>>> - };
> >>>> - if let Some(callback) = &mut shadow_self.callback {
> >>>> - callback(&Stream::from_ptr(c), flags);
> >>>> - }
> >>>> +extern "C" fn event_callback(
> >>>> + c: sys::virStreamPtr,
> >>>> + flags: libc::c_int,
> >>>> + opaque: *const libc::c_void,
> >>>> +) {
> >>>> + let flags = flags as StreamFlags;
> >>>> + let shadow_self = unsafe { &mut *(opaque as *mut Stream) };
> >>>> + if let Some(callback) = &mut shadow_self.callback {
> >>>> + callback(&Stream::from_ptr(c), flags);
> >>>> + }
> >>>> }
> >>>>
> >>>> extern "C" fn event_free(_opaque: *mut libc::c_void) {}
> >>>> @@ -93,16 +95,18 @@ impl Drop for Stream {
> >>>> fn drop(&mut self) {
> >>>> if self.ptr.is_some() {
> >>>> if let Err(e) = self.free() {
> >>>> - panic!("Unable to drop memory for Stream, code {}, message: {}",
> >>>> - e.code,
> >>>> - e.message)
> >>>> + panic!(
> >>>> + "Unable to drop memory for Stream, code {}, message: {}",
> >>>> + e.code, e.message
> >>>> + )
> >>>> }
> >>>> }
> >>>> if self.callback.is_some() {
> >>>> if let Err(e) = self.event_remove_callback() {
> >>>> - panic!("Unable to remove event callback for Stream, code {}, message: {}",
> >>>> - e.code,
> >>>> - e.message)
> >>>> + panic!(
> >>>> + "Unable to remove event callback for Stream, code {}, message: {}",
> >>>> + e.code, e.message
> >>>> + )
> >>>> }
> >>>> }
> >>>> }
> >>>> @@ -120,7 +124,10 @@ impl Stream {
> >>>> }
> >>>>
> >>>> pub fn from_ptr(ptr: sys::virStreamPtr) -> Stream {
> >>>> - Stream { ptr: Some(ptr), callback: None }
> >>>> + Stream {
> >>>> + ptr: Some(ptr),
> >>>> + callback: None,
> >>>> + }
> >>>> }
> >>>>
> >>>> pub fn as_ptr(&self) -> sys::virStreamPtr {
> >>>> @@ -160,7 +167,7 @@ impl Stream {
> >>>> virStreamSend(
> >>>> self.as_ptr(),
> >>>> data.as_ptr() as *mut libc::c_char,
> >>>> - data.len()
> >>>> + data.len(),
> >>>> )
> >>>> };
> >>>> usize::try_from(ret).map_err(|_| Error::new())
> >>>> @@ -177,10 +184,20 @@ impl Stream {
> >>>> usize::try_from(ret).map_err(|_| Error::new())
> >>>> }
> >>>>
> >>>> - pub fn event_add_callback<F: 'static + FnMut(&Stream, StreamEventType)>(&mut self, events: StreamEventType, cb: F) -> Result<(), Error> {
> >>>> + pub fn event_add_callback<F: 'static + FnMut(&Stream, StreamEventType)>(
> >>>> + &mut self,
> >>>> + events: StreamEventType,
> >>>> + cb: F,
> >>>> + ) -> Result<(), Error> {
> >>>> let ret = unsafe {
> >>>> let ptr = &*self as *const _ as *const _;
> >>>> - virStreamEventAddCallback(self.as_ptr(), events as libc::c_int, event_callback, ptr, event_free)
> >>>> + virStreamEventAddCallback(
> >>>> + self.as_ptr(),
> >>>> + events as libc::c_int,
> >>>> + event_callback,
> >>>> + ptr,
> >>>> + event_free,
> >>>> + )
> >>>> };
> >>>> if ret == -1 {
> >>>> return Err(Error::new());
> >>>> @@ -190,9 +207,7 @@ impl Stream {
> >>>> }
> >>>>
> >>>> pub fn event_update_callback(&self, events: StreamEventType) -> Result<(), Error> {
> >>>> - let ret = unsafe {
> >>>> - virStreamEventUpdateCallback(self.as_ptr(), events as libc::c_int)
> >>>> - };
> >>>> + let ret = unsafe { virStreamEventUpdateCallback(self.as_ptr(), events as libc::c_int) };
> >>>> if ret == -1 {
> >>>> return Err(Error::new());
> >>>> }
> >>>> --
> >>>> 2.24.1
More information about the libvir-list
mailing list