On Fri, Feb 16, 2007 at 07:07:00PM +0000, Niels Nes wrote:
> Update of /cvsroot/monetdb/MonetDB/src/common
> In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv11260/src/common
> 
> Modified Files:
>       Tag: MonetDB_1-16
>       stream.mx 
> Log Message:
> removed stream_r/wstream_byteorder
> replaced with stream_set_byteorder
> 
> the block_stream now always sends the blocksize/lastblock short in little
> endian format (ie this is now fully controlled in streams).
> The stream_set_byteorder only stores if the other end has little or bigendian
> byte orders (this can later be use when we send/receive binary data)
> 
> 
> 
> Index: stream.mx
> ===================================================================
> RCS file: /cvsroot/monetdb/MonetDB/src/common/stream.mx,v
> retrieving revision 1.133.2.2
> retrieving revision 1.133.2.3
> diff -u -d -r1.133.2.2 -r1.133.2.3
> --- stream.mx 16 Feb 2007 15:27:20 -0000      1.133.2.2
> +++ stream.mx 16 Feb 2007 19:06:57 -0000      1.133.2.3
> @@ -555,6 +554,22 @@
>       return s->byteorder;
>  }
>  
> +void 
> +stream_set_byteorder(stream *s, char bigendian)
> +{
> +#ifdef STREAM_DEBUG
> +     printf("stream_set_byteorder %s, %d\n", s->name ? s->name : 
> "<unnamed>");
> +#endif
> +     assert(s->access == ST_READ);

Hi Niels,

Won't this assert kill all write streams, since their access is set to
ST_WRITE?

If I use MapiClient, I get the following:

(in shell 1)
$ Mserver
# Monet Database Server V4.16.1
# Copyright (c) 1993-2007, CWI. All rights reserved.
# Compiled for x86_64-redhat-linux-gnu/64bit with 64bit OIDs;
# dynamically linked.
# Visit http://monetdb.cwi.nl/ for further information.
MonetDB>module(mapi);
MonetDB>

(in shell 2)
$ MapiClient
MapiClient: ../../../src/common/stream.mx:563: stream_set_byteorder:
Assertion `s->access == 0' failed.
Aborted


In 'connect_to_server', mid->to->access is set to ST_WRITE.


Jennie




> +     s->type = ST_BIN;
> +#ifdef WORDS_BIGENDIAN
> +     s->byteorder = bigendian ? 1234 : 3412;
> +#else
> +     s->byteorder = bigendian ? 3412 : 1234;
> +#endif
> +}
> +
> +
>  void
>  close_stream(stream *s)
>  {
> @@ -576,22 +591,6 @@
>  }
>  
>  stream *
> -stream_rstream_byteorder(stream *s, char bigendian)
> -{
> -#ifdef STREAM_DEBUG
> -     printf("stream_rstream_byteorder %s, %d\n", s->name ? s->name : 
> "<unnamed>", bigendian);
> -#endif
> -     assert(s->access == ST_READ);
> -     s->type = ST_BIN;
> -#ifdef WORDS_BIGENDIAN
> -     s->byteorder = bigendian ? 1234 : 3412;
> -#else
> -     s->byteorder = bigendian ? 3412 : 1234;
> -#endif
> -     return s;
> -}
> -
> -stream *
>  stream_wstream(stream *s)
>  {
>  #ifdef STREAM_DEBUG
> @@ -604,22 +603,6 @@
>       return s;
>  }
>  
> -stream *
> -stream_wstream_byteorder(stream *s, char bigendian)
> -{
> -#ifdef STREAM_DEBUG
> -     printf("stream_wstream_byteorder %s, %d\n", s->name ? s->name : 
> "<unnamed>");
> -#endif
> -     assert(s->access == ST_WRITE);
> -     s->type = ST_BIN;
> -#ifdef WORDS_BIGENDIAN
> -     s->byteorder = bigendian ? 1234 : 3412;
> -#else
> -     s->byteorder = bigendian ? 3412 : 1234;
> -#endif
> -     return s;
> -}
> -
>  #define EXT_LEN 4
>  static const char *
>  get_extention(const char *file)
> @@ -2222,6 +2205,9 @@
>                       /* the last bit tells whether a flush is in there, it's 
> not
>                        * at this moment, so shift it to the left */
>                       blksize <<= 1;
> +#ifdef WORDS_BIGENDIAN
> +                     blksize = short_int_SWAP(blksize);
> +#endif
>                       if (!stream_writeSht(s->s, blksize) || 
> s->s->write(s->s, s->buf, 1, s->nr) != (ssize_t) s->nr) {
>                               ss->errnr = WRITE_ERROR;
>                               return -1;
> @@ -2451,6 +2437,10 @@
>               return NULL;
>       if ((b = bs_create(s)) == NULL)
>               ns->errnr = OPEN_ERROR;
> +     /* blocksizes have a fixed little endian byteorder */ 
> +#ifdef WORDS_BIGENDIAN
> +     s->byteorder = 3412; /* simply != 1234 */
> +#endif
>       ns->type = s->type;
>       ns->access = s->access;
>       ns->read = bs_read;
> 
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Monetdb-checkins mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/monetdb-checkins

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Monetdb-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-developers

Reply via email to