ddc
LeafServer.h
Go to the documentation of this file.
1 //-*- Mode: C++ -*-
2 //
3 // DDC originally by Alexey Sokirko
4 // Changes and modifications 2011-2020 by Bryan Jurish
5 //
6 // This file is part of DDC.
7 //
8 // DDC is free software: you can redistribute it and/or modify
9 // it under the terms of the GNU Lesser General Public License as published by
10 // the Free Software Foundation, either version 3 of the License, or
11 // (at your option) any later version.
12 //
13 // DDC is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public License
19 // along with DDC. If not, see <http://www.gnu.org/licenses/>.
20 //
21 #ifndef DDC_LEAF_SERVER_H
22 #define DDC_LEAF_SERVER_H
23 
24 #include "../ConcordDmnLib/BranchServer.h"
25 
27 class CDDCLeafServer : public CDDCServer
28 {
29 public:
30  //--------------------------------------------------------------
31  // local corpus data
33 
34 public:
35  //--------------------------------------------------------------
36  // Constructors etc.
37 
40  : m_pHolder(NULL)
41  {};
42 
44  virtual ~CDDCLeafServer()
45  {};
46 
48  virtual void Shutdown();
49 
50 public:
51  //--------------------------------------------------------------
52  // DDCServer API: client threads
53 
55  virtual CDDCServer *WorkerClone(void) const
56  { return (CDDCServer*)new CDDCLeafServer(); };
57 
59  virtual void WorkerCloneInit(const CDDCServer *Parent, size_t WorkerId);
60 
62  virtual void WorkerCloneFree(void);
63 
64 public:
65  //--------------------------------------------------------------
66  // CHost API: overrides
68  virtual bool Close(SOCKET& rConnectedSocket, bool linger=false, int timeout=5);
69 
70 public:
71  //--------------------------------------------------------------
72  // DDCServer API: request handlers: required
73 
75  virtual void handle__get_first_hits(string &Result, const char *Query, int TimeOut, size_t ResultLimit, const string& ReqPath, const NavHint& Hint);
76 
78  virtual void handle__get_hit_strings(string &Result, const char *ResultType, size_t StartHitNo, size_t ResultLimit);
79 
80  /* request handler: run_query: required (branch) */
81  virtual void handle__run_query(string &Result, const char *CorpusName, const char *Query, const char *ResultType, size_t StartHitNo, size_t ResultLimit, int TimeOut, const string& ReqPath, const NavHint& Hint);
82 
84  virtual void handle__expand_terms(string &Result, const string& pipeline, const string& terms, int timeout, const string &corpus);
85 
87  virtual void handle__status(string &Result, int timeout=10, bool verbose=false);
88 
90  virtual void handle__info(string &Result, int timeout=10, bool verbose=false);
91 
93  virtual void handle__reload(string &Result, int depth=0);
94 
96  virtual void handle__clear_cache(string &Result, int depth=0);
97 
99  virtual void handle__nodes(string &Result, int depth=-1);
100 
101 public:
102  //--------------------------------------------------------------
103  // local methods
104 
106  void LoadHolder(CConcHolder **ppHolder=NULL);
107 
109  void GetHitCounts(CRunQueryData &runq, DDCFormatTypeEnum ResultTypeE);
110 
112  void GetHitContexts(CRunQueryData &runq, DDCFormatTypeEnum ResultTypeE);
113 };
114 
117 
118 
119 #endif /* DDC_LEAF_SERVER_H */
120 
121 /*--- emacs style variables ---
122  * Local Variables:
123  * mode: C++
124  * c-file-style: "ellemtel"
125  * c-basic-offset: 4
126  * tab-width: 8
127  * indent-tabs-mode: nil
128  * End:
129  */
CDDCLeafServer()
Definition: LeafServer.h:39
virtual void WorkerCloneFree(void)
Definition: LeafServer.cpp:46
virtual void handle__run_query(string &Result, const char *CorpusName, const char *Query, const char *ResultType, size_t StartHitNo, size_t ResultLimit, int TimeOut, const string &ReqPath, const NavHint &Hint)
Definition: LeafServer.cpp:133
virtual CDDCServer * WorkerClone(void) const
Definition: LeafServer.h:55
Definition: BranchServer.h:197
DDCFormatTypeEnum
FormatTypeEnum defines the format of output hits:
Definition: ConcCommon.h:468
void LoadHolder(CConcHolder **ppHolder=NULL)
Definition: LeafServer.cpp:506
#define SOCKET
Definition: string_socket.h:66
CConcHolder * m_pHolder
Definition: LeafServer.h:32
virtual void handle__info(string &Result, int timeout=10, bool verbose=false)
Definition: LeafServer.cpp:279
virtual void handle__reload(string &Result, int depth=0)
Definition: LeafServer.cpp:469
virtual void WorkerCloneInit(const CDDCServer *Parent, size_t WorkerId)
Definition: LeafServer.cpp:38
class for a single (thread-local) DDC query session; formerly CConcHolder An instance of CConcSessio...
Definition: ConcSession.h:54
virtual void handle__status(string &Result, int timeout=10, bool verbose=false)
Definition: LeafServer.cpp:233
virtual void handle__clear_cache(string &Result, int depth=0)
Definition: LeafServer.cpp:487
virtual void handle__nodes(string &Result, int depth=-1)
Definition: LeafServer.cpp:497
virtual void handle__expand_terms(string &Result, const string &pipeline, const string &terms, int timeout, const string &corpus)
Definition: LeafServer.cpp:213
Definition: Server.h:46
Definition: LeafServer.h:27
navigation hint with respect to local subcorpus tree, for get_first_hits "paging" ...
Definition: NavHint.h:115
virtual void Shutdown()
Definition: LeafServer.cpp:29
virtual void handle__get_hit_strings(string &Result, const char *ResultType, size_t StartHitNo, size_t ResultLimit)
Definition: LeafServer.cpp:100
virtual ~CDDCLeafServer()
Definition: LeafServer.h:44
void GetHitCounts(CRunQueryData &runq, DDCFormatTypeEnum ResultTypeE)
Definition: LeafServer.cpp:537
virtual bool Close(int &rConnectedSocket, bool linger=false, int timeout=5)
Definition: LeafServer.cpp:55
CDDCLeafServer CDDCCorpusListenHost
Definition: LeafServer.h:116
void GetHitContexts(CRunQueryData &runq, DDCFormatTypeEnum ResultTypeE)
Definition: LeafServer.cpp:561
virtual void handle__get_first_hits(string &Result, const char *Query, int TimeOut, size_t ResultLimit, const string &ReqPath, const NavHint &Hint)
Definition: LeafServer.cpp:71