1 : //=============================================================================
2 : // File <$/src/cpp/prod/com/Defragmenter.h>
3 : // This file is part of YaOrb : Yet Another Object Request Broker,
4 : // Copyright (c) 2000-2003, Marc Alff.
5 : //
6 : // This program is free software; you can redistribute it and/or
7 : // modify it under the terms of the GNU General Public License
8 : // as published by the Free Software Foundation; either version 2
9 : // of the License, or (at your option) any later version.
10 : //
11 : // This program is distributed in the hope that it will be useful,
12 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : // GNU General Public License for more details.
15 : //
16 : // You should have received a copy of the GNU General Public License
17 : // along with this program; if not, write to the Free Software
18 : // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 : //
20 : //=============================================================================
21 :
22 : #ifndef DEFRAGMENTER_H
23 : #define DEFRAGMENTER_H
24 :
25 : #include "src/cpp/prod/tool/Hash.h"
26 :
27 : class Fragment ;
28 : class CDRFragment ;
29 :
30 : class FragInfo
31 : {
32 : public :
33 : FragInfo(Fragment *frag, CORBA::ULong requestId) ;
34 : ~FragInfo() ;
35 :
36 : void AddFragment(Fragment *frag) ;
37 : Fragment *GetFragmentChain(void) ;
38 : CORBA::ULong GetRequestId(void) const ;
39 :
40 : private :
41 : Fragment *_first ;
42 : Fragment *_last ;
43 : CORBA::ULong _requestId ;
44 :
45 : private :
46 : FragInfo(const FragInfo& ) ;
47 : FragInfo& operator=(const FragInfo& ) ;
48 : } ;
49 :
50 : class FragInfoHash : public THash<FragInfo, CORBA::ULong>
51 : {
52 : public :
53 : FragInfoHash(int size) ;
54 0 : ~FragInfoHash() {}
55 :
56 : private :
57 : static int myHashFn(const CORBA::ULong* key) ;
58 : static bool myCmpFn(const FragInfo* obj,
59 : const CORBA::ULong* key) ;
60 :
61 : } ;
62 :
63 : class Defragmenter
64 : {
65 : public :
66 : Defragmenter() ;
67 : ~Defragmenter() ;
68 :
69 : void AddFirstFragment(Fragment* frag, CORBA::ULong requestId) ;
70 : void AddNextFragment(Fragment* frag, CORBA::ULong requestId) ;
71 : CDRFragment* AddLastFragment(Fragment* frag, CORBA::ULong requestId) ;
72 :
73 : private :
74 : FragInfoHash _hash ;
75 : } ;
76 :
77 : #endif
78 :
79 :
|