Re: [SAGA-RG] Fwd (ceriel@cs.vu.nl): [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java"
Hi, I'm really, really sorry ... I have some more remarks now on the iovec specifications and the readv and writev specifications: this all concerns the "offset" field. - the set_offset method does not consider the current value of len_in. Is it not an error if size >= 0 && len_in + offset > size? Maybe only if the buffer is not implementation-managed? - the set_len_in method does not consider the current value of offset. Is it not an error if size >= 0 && len_in + offset > size? Maybe only if the buffer is not implementation-managed? - the readv notes mention that if no len_in is specified, the buffer size is used as len_in. But what if offset > 0? - the above remark also holds for writev. As far as I am concerned, the "offset" field can completely be removed from the specs. POSIX iovec does not have an offset field, and I don't know why it made it to the SAGA specs. Cheers, Ceriel P.S. Sorry that I keep on having remarks, but these are things that come up while actually implementing it. Apparently, just reading the specs is not good enough. Thilo Kielmann wrote:
Thank you, Ceriel! ;-)
Thilo
On Thu, Jan 24, 2008 at 03:42:14PM +0100, Andre Merzky wrote:
From: Andre Merzky
To: Thilo Kielmann Cc: saga-rg@ogf.org Subject: Re: [SAGA-RG] Fwd (ceriel@cs.vu.nl): [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java" Yep, thats an error - all c'tors should be able to throe NotImplemented.
So, thats a good occasion to test the errata procedure :-)
Thanks, Andre.
Quoting [Thilo Kielmann] (Jan 24 2008):
From: Thilo Kielmann
To: saga-rg@ogf.org Subject: [SAGA-RG] Fwd (ceriel@cs.vu.nl): [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java" Hmm,
do we now have the first item for the "errata" document? ;-)
Thilo
----- Forwarded message from Ceriel Jacobs
----- To: saga-cvs@cct.lsu.edu From: Ceriel Jacobs
Subject: [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java" Update of /projects/SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file In directory asylum.cct.lsu.edu:/tmp/cvs-serv30810/src/org/ogf/saga/file
Modified Files: FileFactory.java Log Message: Inconsistency in the SAGA specification: Buffer constructor throws NotImplemented, but IOVec does'nt? In the Java version, it does now!
_______________________________________________ saga-cvs mailing list saga-cvs@cct.lsu.edu https://mail.cct.lsu.edu/mailman/listinfo/saga-cvs ----- End forwarded message ----- -- No trees were destroyed in the sending of this message, however, a significant number of electrons were terribly inconvenienced.
Hi Ceriel, Quoting [Ceriel Jacobs] (Jan 24 2008):
Hi,
I'm really, really sorry ...
You better are!! ;-)
I have some more remarks now on the iovec specifications and the readv and writev specifications: this all concerns the "offset" field.
- the set_offset method does not consider the current value of len_in. Is it not an error if size >= 0 && len_in + offset > size? Maybe only if the buffer is not implementation-managed? - the set_len_in method does not consider the current value of offset. Is it not an error if size >= 0 && len_in + offset > size? Maybe only if the buffer is not implementation-managed? - the readv notes mention that if no len_in is specified, the buffer size is used as len_in. But what if offset > 0? - the above remark also holds for writev.
Yes - spec mostly ignores out-of-bound errors.
As far as I am concerned, the "offset" field can completely be removed from the specs. POSIX iovec does not have an offset field, and I don't know why it made it to the SAGA specs.
To simplify the reuse of memory segments w/o the need for pointer arythmetics: char mem[1024]; saga::iovec iov_1 (mem, 1024, 0, 512); saga::iovec iov_2 (mem, 1024, 512, 512); std::vector saga::iovec iovecs; iovecs.push_back (iov_1); iovecs.push_back (iov_2); file.readv (iovecs); without offset that woyuld work as well, as: char mem[1024]; saga::iovec iov_1 (mem , 512, 512); saga::iovec iov_2 (mem + 512, 512, 512); std::vector saga::iovec iovecs; iovecs.push_back (iov_1); iovecs.push_back (iov_2); file.readv (iovecs); although size and len_in are somehwat redundant here. If offsets are really needed can certainly be disputed. In C++, where pointer arithmetic is easy, one could certainly do without. I'd actually thought that it helps in Java. Ah, well... ;-)
Cheers, Ceriel
P.S. Sorry that I keep on having remarks, but these are things that come up while actually implementing it. Apparently, just reading the specs is not good enough.
Yep, I guess so. We are grateful for the comments: much better to have fixes and errata than a faulty spec! Thanks! Cheers, Andre.
Thilo Kielmann wrote:
Thank you, Ceriel! ;-)
Thilo
On Thu, Jan 24, 2008 at 03:42:14PM +0100, Andre Merzky wrote:
From: Andre Merzky
To: Thilo Kielmann Cc: saga-rg@ogf.org Subject: Re: [SAGA-RG] Fwd (ceriel@cs.vu.nl): [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java" Yep, thats an error - all c'tors should be able to throe NotImplemented.
So, thats a good occasion to test the errata procedure :-)
Thanks, Andre.
Quoting [Thilo Kielmann] (Jan 24 2008):
From: Thilo Kielmann
To: saga-rg@ogf.org Subject: [SAGA-RG] Fwd (ceriel@cs.vu.nl): [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java" Hmm,
do we now have the first item for the "errata" document? ;-)
Thilo
----- Forwarded message from Ceriel Jacobs
----- To: saga-cvs@cct.lsu.edu From: Ceriel Jacobs
Subject: [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java" Update of /projects/SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file In directory asylum.cct.lsu.edu:/tmp/cvs-serv30810/src/org/ogf/saga/file
Modified Files: FileFactory.java Log Message: Inconsistency in the SAGA specification: Buffer constructor throws NotImplemented, but IOVec does'nt? In the Java version, it does now!
_______________________________________________ saga-cvs mailing list saga-cvs@cct.lsu.edu https://mail.cct.lsu.edu/mailman/listinfo/saga-cvs ----- End forwarded message ----- -- No trees were destroyed in the sending of this message, however, a significant number of electrons were terribly inconvenienced. -- No trees were destroyed in the sending of this message, however, a significant number of electrons were terribly inconvenienced.
Hi Andre, Andre Merzky wrote:
Hi Ceriel,
Quoting [Ceriel Jacobs] (Jan 24 2008):
As far as I am concerned, the "offset" field can completely be removed from the specs. POSIX iovec does not have an offset field, and I don't know why it made it to the SAGA specs.
To simplify the reuse of memory segments w/o the need for pointer arythmetics: ... If offsets are really needed can certainly be disputed. In C++, where pointer arithmetic is easy, one could certainly do without. I'd actually thought that it helps in Java. Ah, well... ;-)
Well, java.io.InputStream has a read method that has an offset, so it is certainly common usage in Java to have an offset. But then, the offset should be in buffer, not in iovec. I think that that would make more sense than to have it in iovec. O well, I guess this is a done deal. Ceriel
Hi all, I suggest to do the following: - add the error conditions pointed out by Ceriel as throwing "BadParameter" in the errata doc. - putting the offset from iovec to buffer can not be done in the current SAGA Core 1.0. We could only do that in a final recommendation, or else in a SAGA Core 2.0. However, I am wondering if we could do this in the Java language binding. After all, this would be a pure extension to the language-independent spec. (You can still use the offset in the iovec, but in Java also in the buffer.) That would be along the lines of other bindings to the Java language, like adding i/o streams next to random file i/o. If Java buffers have an offset, shouldn't then SAGA's language binding also have this? Wouldn't this just be the "natural" thing??? Thilo On Thu, Jan 24, 2008 at 06:34:44PM +0100, Ceriel Jacobs wrote:
From: Ceriel Jacobs
To: Andre Merzky CC: Thilo Kielmann , SAGA RG Subject: Re: [SAGA-RG] Fwd (ceriel@cs.vu.nl): [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java" Hi Andre,
Andre Merzky wrote:
Hi Ceriel,
Quoting [Ceriel Jacobs] (Jan 24 2008):
As far as I am concerned, the "offset" field can completely be removed from the specs. POSIX iovec does not have an offset field, and I don't know why it made it to the SAGA specs.
To simplify the reuse of memory segments w/o the need for pointer arythmetics: ... If offsets are really needed can certainly be disputed. In C++, where pointer arithmetic is easy, one could certainly do without. I'd actually thought that it helps in Java. Ah, well... ;-)
Well, java.io.InputStream has a read method that has an offset, so it is certainly common usage in Java to have an offset. But then, the offset should be in buffer, not in iovec. I think that that would make more sense than to have it in iovec. O well, I guess this is a done deal.
Ceriel
-- Thilo Kielmann http://www.cs.vu.nl/~kielmann/
Thilo Kielmann wrote:
Hi all,
I suggest to do the following:
- add the error conditions pointed out by Ceriel as throwing "BadParameter" in the errata doc.
- putting the offset from iovec to buffer can not be done in the current SAGA Core 1.0. We could only do that in a final recommendation, or else in a SAGA Core 2.0.
However, I am wondering if we could do this in the Java language binding. After all, this would be a pure extension to the language-independent spec. (You can still use the offset in the iovec, but in Java also in the buffer.) That would be along the lines of other bindings to the Java language, like adding i/o streams next to random file i/o. If Java buffers have an offset, shouldn't then SAGA's language binding also have this? Wouldn't this just be the "natural" thing???
I think the "natural" thing in Java would be to have an explicit "offset" parameter in the write() and read() method. That would make them look the most like the write and read from [In|Out]putStream. I could, of course, just add write and read versions with an offset to the methods that are already there, in the Java bindings. Having those would also allow for simple implementations of readv()/writev(). Ceriel
Quoting [Ceriel Jacobs] (Jan 25 2008):
From: Ceriel Jacobs
To: Thilo Kielmann CC: Andre Merzky , SAGA RG Subject: Re: [SAGA-RG] Fwd (ceriel@cs.vu.nl): [saga-cvs] "SAGA-RG/SAGA-Bindings/Java/OGF/src/org/ogf/saga/file FileFactory.java" Thilo Kielmann wrote:
Hi all, I suggest to do the following: - add the error conditions pointed out by Ceriel as throwing "BadParameter" in the errata doc. - putting the offset from iovec to buffer can not be done in the current SAGA Core 1.0. We could only do that in a final recommendation, or else in a SAGA Core 2.0. However, I am wondering if we could do this in the Java language binding. After all, this would be a pure extension to the language-independent spec. (You can still use the offset in the iovec, but in Java also in the buffer.) That would be along the lines of other bindings to the Java language, like adding i/o streams next to random file i/o. If Java buffers have an offset, shouldn't then SAGA's language binding also have this? Wouldn't this just be the "natural" thing???
I think the "natural" thing in Java would be to have an explicit "offset" parameter in the write() and read() method. That would make them look the most like the write and read from [In|Out]putStream.
I could, of course, just add write and read versions with an offset to the methods that are already there, in the Java bindings. Having those would also allow for simple implementations of readv()/writev().
If the offset is on the methods, one needs to take care that the user does not confuse file/stream offset and buffer offset. If thats the custom syntax in Java that should not be a problem I guess? Andre. -- No trees were destroyed in the sending of this message, however, a significant number of electrons were terribly inconvenienced.
participants (3)
-
Andre Merzky
-
Ceriel Jacobs
-
Thilo Kielmann