1 /* Copyright (c) 2003-2005 MySQL AB
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; version 2 of the License.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software
14 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
16 #ifndef LONG_SIGNAL_HPP
17 #define LONG_SIGNAL_HPP
20 #include <ArrayPool.hpp>
25 struct SectionSegment
{
27 STATIC_CONST( DataLength
= NDB_SECTION_SEGMENT_SZ
);
36 Uint32 theData
[DataLength
];
40 * Pool for SectionSegments
42 class SectionSegmentPool
: public ArrayPool
<SectionSegment
> {};
47 extern SectionSegmentPool g_sectionSegmentPool
;
52 void print(SegmentedSectionPtr ptr
, FILE* out
);
53 void copy(SegmentedSectionPtr dst
, Uint32
* src
, Uint32 len
);
54 void copy(Uint32
* dst
, SegmentedSectionPtr src
);
55 bool import(Ptr
<SectionSegment
> & first
, const Uint32
* src
, Uint32 len
);
57 extern class SectionSegmentPool g_sectionSegmentPool
;
58 void getSection(SegmentedSectionPtr
& ptr
, Uint32 id
);
59 void linkSegments(Uint32 head
, Uint32 tail
);
61 void getSections(Uint32 secCount
, SegmentedSectionPtr ptr
[3]);
62 void releaseSections(Uint32 secCount
, SegmentedSectionPtr ptr
[3]);
65 #include "DataBuffer.hpp"
69 append(DataBuffer
<sz
>& dst
, SegmentedSectionPtr ptr
, SectionSegmentPool
& pool
){
71 while(len
> SectionSegment::DataLength
){
72 dst
.append(ptr
.p
->theData
, SectionSegment::DataLength
);
73 ptr
.p
= pool
.getPtr(ptr
.p
->m_nextSegment
);
74 len
-= SectionSegment::DataLength
;
76 dst
.append(ptr
.p
->theData
, len
);