classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [cp-patches] RFC: new VM interface for Socket impls


From: Roman Kennke
Subject: Re: [cp-patches] RFC: new VM interface for Socket impls
Date: Fri, 16 Dec 2005 12:26:34 +0100

Hi Mark,

Am Mittwoch, den 07.12.2005, 13:35 +0100 schrieb Mark Wielaard:
> On Fri, 2005-11-11 at 17:53 +0100, Mark Wielaard wrote:
> > On Wed, 2005-11-09 at 21:16 +0000, Roman Kennke wrote:
> > > Ingo has abstracted out the native code from gnu.java.net.PlainSocketImpl
> > > and gnu.java.net.PlainDatagramSocketImpl into a new VM interface. This
> > > allows VM implementors to provide a different implementation for the
> > > native parts of these classes if they wish. Is this ok to commit as it
> > > is? Do you have any suggestions/improvements to the interface? We would
> > > like to have a stable VM interface for this area, so maybe it would be
> > > helpful to discuss this with other VM implementors...
> > 
> > A first comment is that for the VM reference implementation I would just
> > make all methods native directly, no need to chain them to some helper
> > method here. Is there a reason that only nativeLeave() is synchronized?

Ok, then lets make them native directly. This is only a habit, because
in many cases it turned out to be more convenient to wrap a native
method in a java method, i.e. to prepare arguments or do some additional
things on the java side. It doesn't matter much here I guess.

> This isn't a full review, just some additional comments in addition to
> my earlier remarks after studying the libgcj versions. Maybe others
> (Guilhem said Kaffe also doesn't have this part merged) have some
> comments and then you can sent an updated proposal/patch. (I realize
> some of the comments are just reflections on previous design mistakes,
> but lets try clean them up now.)

yeah.

> - Do we need the boolean stream argument in
>   VMPlainSocketImpl.create()?

I think not, datagram sockets are handled separately in
VMDatagramSocketImpl AFAICS.

> - VMPlainSocketImpl.bind() has as comment
>   **** How bind to INADDR_ANY ****
>   Should we make a convention for that one? For example just use null
>   add addr?

I don't really know. I am not really familiar with the net code...

> - There is a PlainSocketImpl.connect() method that takes a timeout
>   argument. We provide a default implementation now, but shouldn't this
>   version move to the VMPlainSocketImpl? I don't know if our default
>   implementation is actually that create, maybe you want to do the
>   actual timeout in a more specific way.

Agreed. So we would have two connect() methods in the VMPlainSocketImpl.

> - Should we provide wrappers/unwrappers for the Integer and Boolean
>   arguments/return values of setOption() and getOption() that call the
>   VM versions with primitive types? That would make the JNI code much
>   cleaner.

Sounds reasonable. I would think that value always is some primitive
type, so we don't really need Object there, right?

> - PlainSocketImpl.sendUrgentData() should delegate to VMPlainSocketImpl.

Agreed.

> - It might makes sense to have a no argument read() and write() method
>   in the VM interface instead of just the byte[] versions.

Also agreed.

> - We should explicitly document the new constant IP_TTL we use in
>   PlainDatagramSocketImpl for the VM interface since it isn't defined as
>   SocketOption. Or should we just make a special VM interface to set/get
>   the TTL?

I vote for documenting the constant.

> - The PlainDatagramSocket multicast opertations join(Group),
>   leave(Group) etc, need to go through to the VM interface.

Agreed.

I will put together a new patch that incorporates the suggested changes.

Cheers, Roman

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil


reply via email to

[Prev in Thread] Current Thread [Next in Thread]