~drizzle-trunk/drizzle/development

390.1.4 by Monty Taylor
More copyright header file fixes.
1
/* - mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
 *
4
 *  Copyright (C) 2008 Sun Microsystems, Inc.
5
 *
6
 *  This program is free software; you can redistribute it and/or modify
7
 *  it under the terms of the GNU General Public License as published by
8
 *  the Free Software Foundation; version 2 of the License.
9
 *
10
 *  This program is distributed in the hope that it will be useful,
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 *  GNU General Public License for more details.
14
 *
15
 *  You should have received a copy of the GNU General Public License
16
 *  along with this program; if not, write to the Free Software
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
 */
1 by brian
clean slate
19
1241.9.1 by Monty Taylor
Removed global.h. Fixed all the headers.
20
#include "config.h"
971.7.1 by Eric Day
Client/Listen cleanup, moved globals, console plugin cleanup.
21
#include <drizzled/korr.h>
22
23
#include <stdint.h>
24
779.3.37 by Monty Taylor
Renmaed libdrizzle in the tree to libdrizzleclient to avoid namespace clashes
25
#include "pack.h"
26
1300.5.1 by Monty Taylor
Put drizzle_protocol plugin in to its own namespace so that symbols won't
27
namespace drizzle_protocol
28
{
29
1 by brian
clean slate
30
/* Get the length of next field. Change parameter to point at fieldstart */
840.1.20 by Monty Taylor
Renamed non-prefixed things from libdrizzleclient to drizzleclient.
31
uint32_t drizzleclient_net_field_length(unsigned char **packet)
1 by brian
clean slate
32
{
390.1.6 by Monty Taylor
Oh dear god the changes. The changes. I'd tell you what they are, but I'd just be making stuff up. Suffice it to day it's mostly all around splitting files in libdrizzle into different files and removing interdepends. And whatever else I happened to see...
33
  register unsigned char *pos= (unsigned char *)*packet;
1 by brian
clean slate
34
  if (*pos < 251)
35
  {
36
    (*packet)++;
294 by Brian Aker
libdrizzle has ulong removed.
37
    return (uint32_t) *pos;
1 by brian
clean slate
38
  }
39
  if (*pos == 251)
40
  {
41
    (*packet)++;
42
    return NULL_LENGTH;
43
  }
44
  if (*pos == 252)
45
  {
46
    (*packet)+=3;
294 by Brian Aker
libdrizzle has ulong removed.
47
    return (uint32_t) uint2korr(pos+1);
1 by brian
clean slate
48
  }
49
  if (*pos == 253)
50
  {
51
    (*packet)+=4;
294 by Brian Aker
libdrizzle has ulong removed.
52
    return (uint32_t) uint3korr(pos+1);
1 by brian
clean slate
53
  }
206.3.1 by Patrick Galbraith
Most everything working with client rename
54
  (*packet)+=9;          /* Must be 254 when here */
294 by Brian Aker
libdrizzle has ulong removed.
55
  return (uint32_t) uint4korr(pos+1);
1 by brian
clean slate
56
}
57
152 by Brian Aker
longlong replacement
58
/* The same as above but returns int64_t */
840.1.20 by Monty Taylor
Renamed non-prefixed things from libdrizzleclient to drizzleclient.
59
uint64_t drizzleclient_drizzleclient_net_field_length_ll(unsigned char **packet)
1 by brian
clean slate
60
{
390.1.6 by Monty Taylor
Oh dear god the changes. The changes. I'd tell you what they are, but I'd just be making stuff up. Suffice it to day it's mostly all around splitting files in libdrizzle into different files and removing interdepends. And whatever else I happened to see...
61
  register unsigned char *pos= *packet;
1 by brian
clean slate
62
  if (*pos < 251)
63
  {
64
    (*packet)++;
155 by Brian Aker
Removing a few "additional" ways of saying uint64_t
65
    return (uint64_t) *pos;
1 by brian
clean slate
66
  }
67
  if (*pos == 251)
68
  {
69
    (*packet)++;
155 by Brian Aker
Removing a few "additional" ways of saying uint64_t
70
    return (uint64_t) NULL_LENGTH;
1 by brian
clean slate
71
  }
72
  if (*pos == 252)
73
  {
74
    (*packet)+=3;
155 by Brian Aker
Removing a few "additional" ways of saying uint64_t
75
    return (uint64_t) uint2korr(pos+1);
1 by brian
clean slate
76
  }
77
  if (*pos == 253)
78
  {
79
    (*packet)+=4;
155 by Brian Aker
Removing a few "additional" ways of saying uint64_t
80
    return (uint64_t) uint3korr(pos+1);
1 by brian
clean slate
81
  }
206.3.1 by Patrick Galbraith
Most everything working with client rename
82
  (*packet)+=9;          /* Must be 254 when here */
1 by brian
clean slate
83
#ifdef NO_CLIENT_LONGLONG
155 by Brian Aker
Removing a few "additional" ways of saying uint64_t
84
  return (uint64_t) uint4korr(pos+1);
1 by brian
clean slate
85
#else
155 by Brian Aker
Removing a few "additional" ways of saying uint64_t
86
  return (uint64_t) uint8korr(pos+1);
1 by brian
clean slate
87
#endif
88
}
89
90
/*
91
  Store an integer with simple packing into a output package
92
93
  SYNOPSIS
840.1.20 by Monty Taylor
Renamed non-prefixed things from libdrizzleclient to drizzleclient.
94
    drizzleclient_net_store_length()
206.3.1 by Patrick Galbraith
Most everything working with client rename
95
    pkg      Store the packed integer here
96
    length    integers to store
1 by brian
clean slate
97
98
  NOTES
99
    This is mostly used to store lengths of strings.
100
    We have to cast the result for the LL() becasue of a bug in Forte CC
101
    compiler.
102
103
  RETURN
104
   Position in 'pkg' after the packed length
105
*/
106
840.1.20 by Monty Taylor
Renamed non-prefixed things from libdrizzleclient to drizzleclient.
107
unsigned char *drizzleclient_net_store_length(unsigned char *packet, uint64_t length)
1 by brian
clean slate
108
{
151 by Brian Aker
Ulonglong to uint64_t
109
  if (length < (uint64_t) 251LL)
1 by brian
clean slate
110
  {
390.1.6 by Monty Taylor
Oh dear god the changes. The changes. I'd tell you what they are, but I'd just be making stuff up. Suffice it to day it's mostly all around splitting files in libdrizzle into different files and removing interdepends. And whatever else I happened to see...
111
    *packet=(unsigned char) length;
1 by brian
clean slate
112
    return packet+1;
113
  }
114
  /* 251 is reserved for NULL */
151 by Brian Aker
Ulonglong to uint64_t
115
  if (length < (uint64_t) 65536LL)
1 by brian
clean slate
116
  {
117
    *packet++=252;
395 by Brian Aker
Fixed uint/ushort issue in libdrizzle
118
    int2store(packet,(uint32_t) length);
1 by brian
clean slate
119
    return packet+2;
120
  }
151 by Brian Aker
Ulonglong to uint64_t
121
  if (length < (uint64_t) 16777216LL)
1 by brian
clean slate
122
  {
123
    *packet++=253;
294 by Brian Aker
libdrizzle has ulong removed.
124
    int3store(packet,(uint32_t) length);
1 by brian
clean slate
125
    return packet+3;
126
  }
127
  *packet++=254;
128
  int8store(packet,length);
129
  return packet+8;
130
}
131
1320.2.1 by Monty Taylor
Merged in drizzle_protocol namespace change.
132
} /* namespace drizzle_protocol */