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 */ |