NCBI C++ ToolKit
cass_fetch.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 #ifndef CASS_FETCH__HPP
2 #define CASS_FETCH__HPP
3 
4 /* $Id: cass_fetch.hpp 102004 2024-03-18 15:04:31Z satskyse $
5  * ===========================================================================
6  *
7  * PUBLIC DOMAIN NOTICE
8  * National Center for Biotechnology Information
9  *
10  * This software/database is a "United States Government Work" under the
11  * terms of the United States Copyright Act. It was written as part of
12  * the author's official duties as a United States Government employee and
13  * thus cannot be copyrighted. This software/database is freely available
14  * to the public for use. The National Library of Medicine and the U.S.
15  * Government have not placed any restriction on its use or reproduction.
16  *
17  * Although all reasonable efforts have been taken to ensure the accuracy
18  * and reliability of the software and data, the NLM and the U.S.
19  * Government do not and cannot warrant the performance or results that
20  * may be obtained by using this software or data. The NLM and the U.S.
21  * Government disclaim all warranties, express or implied, including
22  * warranties of performance, merchantability or fitness for any particular
23  * purpose.
24  *
25  * Please cite the author in any work or product based on this material.
26  *
27  * ===========================================================================
28  *
29  * Authors: Sergey Satskiy
30  *
31  * File Description:
32  *
33  */
34 
35 
36 #include "pubseq_gateway_types.hpp"
37 #include "psgs_request.hpp"
38 #include "cass_blob_id.hpp"
39 #include "exclude_blob_cache.hpp"
40 
49 
51 using namespace ipg;
52 
53 class CPendingOperation;
54 class CPSGS_Reply;
55 
56 // Keeps track of the retrieving something from cassandra
58 {
59 public:
61  m_FinishedRead(false),
62  m_InPeek(false),
63  m_FetchType(ePSGS_UnknownFetch),
64  m_Canceled(false),
65  m_ExcludeBlobCacheUpdated(false)
66  {}
67 
68  CCassFetch(const string & client_id,
69  const SCass_BlobId & blob_id) :
70  m_FinishedRead(false),
71  m_InPeek(false),
72  m_FetchType(ePSGS_UnknownFetch),
73  m_Canceled(false),
74  m_ClientId(client_id),
75  m_BlobId(blob_id),
76  m_ExcludeBlobCacheUpdated(false)
77  {}
78 
79  virtual ~CCassFetch()
80  { RemoveFromExcludeBlobCache(); }
81 
82  virtual void ResetCallbacks(void) = 0;
83  virtual string Serialize(void) const = 0;
84 
85 public:
87  { return m_Loader.get(); }
88 
89  void SetReadFinished(void)
90  { m_FinishedRead = true; }
91 
93  { return m_FetchType; }
94 
95  bool ReadFinished(void) const
96  { return m_FinishedRead; }
97 
98  void SetInPeek(bool val)
99  { m_InPeek = val; }
100 
101  bool InPeek(void) const
102  { return m_InPeek; }
103 
104  bool Canceled(void) const
105  { return m_Canceled; }
106 
107  void Cancel(void)
108  {
109  if (m_Loader) {
110  if (!m_Canceled) {
111  m_Canceled = true;
112  m_Loader->Cancel();
113  }
114  }
115  }
116 
117  bool IsBlobFetch(void) const
118  {
119  return m_FetchType == ePSGS_BlobBySeqIdFetch ||
120  m_FetchType == ePSGS_BlobBySatSatKeyFetch ||
121  m_FetchType == ePSGS_AnnotationBlobFetch;
122  }
123 
125  { return m_BlobId; }
126 
127  string GetClientId(void) const
128  { return m_ClientId; }
129 
130  void RemoveFromExcludeBlobCache(void);
131  EPSGS_CacheAddResult AddToExcludeBlobCache(bool & completed,
132  psg_time_point_t & completed_time);
133 
135  { m_ExcludeBlobCacheUpdated = value; }
136 
137  void SetExcludeBlobCacheCompleted(void);
138 
139 protected:
140  // There are multiple types of the loaders stored here:
141  // - CCassBlobTaskLoadBlob to load a blob
142  // - CCassNAnnotTaskFetch to load an annotation
143  // The loader must be here because it exposes a few generic interfaces
144  // including errors
145  unique_ptr<CCassBlobWaiter> m_Loader;
146 
147  // Indication that there will be no more data
149 
150  // Prevent infinite loop
151  bool m_InPeek;
152 
153  // At the time of a x_Peek() there is a last resort error handling.
154  // That code receives a pointer to the base class but it needs to know
155  // what kind of request it was because an appropriate error message needs
156  // to be send. Thus this member is required.
158 
160 
161  // These fields are only for the blob fetches IsBlobFetches() == true
162  string m_ClientId;
165 };
166 
167 
168 
170 {
171 public:
173  {
174  m_FetchType = ePSGS_AnnotationFetch;
175  }
176 
178  {}
179 
181  {}
182 
183  virtual string Serialize(void) const
184  {
185  string names;
186  for (const string & name : m_Names) {
187  if (!names.empty())
188  names += ", ";
189  names += name;
190  }
191  return "CCassNamedAnnotFetch. Keyspace: " + m_Keyspace + " Names: " + names;
192  }
193 
194 public:
196  {
197  m_Keyspace = fetch->GetKeySpace();
198  m_Names = fetch->GetAnnotNames();
199  m_Loader.reset(fetch);
200  }
201 
203  { return static_cast<CCassNAnnotTaskFetch *>(m_Loader.get()); }
204 
205 public:
206  virtual void ResetCallbacks(void);
207 
208 private:
209  string m_Keyspace;
210  vector<string> m_Names;
211 };
212 
213 
215 {
216 public:
218  {
219  m_FetchType = ePSGS_AccVerHistoryFetch;
220  }
221 
223  {}
224 
226  {}
227 
228  virtual string Serialize(void) const
229  {
230  return "CCassAccVerHistoryFetch";
231  }
232 
233 public:
235  { m_Loader.reset(fetch); }
236 
238  { return static_cast<CCassAccVerHistoryTaskFetch *>(m_Loader.get()); }
239 
240 public:
241  virtual void ResetCallbacks(void);
242 };
243 
244 
246 {
247 public:
249  const SCass_BlobId & blob_id) :
250  CCassFetch(blob_request.m_ClientId, blob_id),
251  m_TSEOption(blob_request.m_TSEOption),
252  m_BlobPropSent(false),
253  m_UserProvidedBlobId(false),
254  m_TotalSentBlobChunks(0),
255  m_BlobPropItemId(0),
256  m_BlobChunkItemId(0),
257  m_NeedAddId2ChunkId2Info(false)
258  {
259  m_FetchType = ePSGS_BlobBySeqIdFetch;
260  }
261 
263  const SCass_BlobId & blob_id) :
264  CCassFetch(blob_request.m_ClientId, blob_id),
265  m_TSEOption(blob_request.m_TSEOption),
266  m_BlobPropSent(false),
267  m_UserProvidedBlobId(true),
268  m_TotalSentBlobChunks(0),
269  m_BlobPropItemId(0),
270  m_BlobChunkItemId(0),
271  m_NeedAddId2ChunkId2Info(false)
272  {
273  m_FetchType = ePSGS_BlobBySatSatKeyFetch;
274  }
275 
276  CCassBlobFetch(const SPSGS_AnnotRequest & blob_request,
277  const SCass_BlobId & blob_id) :
278  CCassFetch(blob_request.m_ClientId, blob_id),
279  m_TSEOption(blob_request.m_TSEOption),
280  m_BlobPropSent(false),
281  m_UserProvidedBlobId(true),
282  m_TotalSentBlobChunks(0),
283  m_BlobPropItemId(0),
284  m_BlobChunkItemId(0),
285  m_NeedAddId2ChunkId2Info(false)
286  {
287  // Note: this constructor is for the case when a blob is retrieved for
288  // an annotation after an annotation record is received.
289  m_FetchType = ePSGS_AnnotationBlobFetch;
290  }
291 
292  virtual string Serialize(void) const
293  {
294  return "CCassBlobFetch; BlobId: " + m_BlobId.ToString() +
295  " BlobPropSent: " + to_string(m_BlobPropSent) +
296  " TotalSentBlobChunks: " + to_string(m_TotalSentBlobChunks);
297  }
298 
299  // The TSE chunk request is pretty much the same as a blob request
300  // - eUnknownTSE is used to skip the blob prop analysis logic
301  // - client id is empty so the cache of blobs sent to the user is not used
302  // - UserProvidedBlobId == false is used to report a server error 500 in
303  // case the blob props are not found.
304  CCassBlobFetch(const SPSGS_TSEChunkRequest & chunk_request,
305  const SCass_BlobId & tse_id) :
306  CCassFetch("", tse_id),
307  m_TSEOption(SPSGS_BlobRequestBase::ePSGS_UnknownTSE),
308  m_BlobPropSent(false),
309  m_UserProvidedBlobId(false),
310  m_TotalSentBlobChunks(0),
311  m_BlobPropItemId(0),
312  m_BlobChunkItemId(0),
313  m_NeedAddId2ChunkId2Info(false)
314  {
315  m_FetchType = ePSGS_TSEChunkFetch;
316  }
317 
319  m_TSEOption(SPSGS_BlobRequestBase::ePSGS_UnknownTSE),
320  m_BlobPropSent(false),
321  m_UserProvidedBlobId(true),
322  m_TotalSentBlobChunks(0),
323  m_BlobPropItemId(0),
324  m_BlobChunkItemId(0),
325  m_NeedAddId2ChunkId2Info(false)
326  {}
327 
328  virtual ~CCassBlobFetch()
329  {}
330 
331 public:
332  // string GetClientId(void) const
333  // { return m_ClientId; }
334 
336  { return m_TSEOption; }
337 
338  bool GetUserProvidedBlobId(void) const
339  { return m_UserProvidedBlobId; }
340 
342  { return m_TotalSentBlobChunks; }
343 
345  { ++m_TotalSentBlobChunks; }
346 
348  { m_TotalSentBlobChunks = 0; }
349 
350  void SetBlobPropSent(void)
351  { m_BlobPropSent = true; }
352 
353  // At the time of an error report it needs to be known to what the
354  // error message is associated - to blob properties or to blob chunks
355  bool IsBlobPropStage(void) const
356  { return !m_BlobPropSent; }
357 
359  { m_NeedAddId2ChunkId2Info = val; }
360 
361  bool GetNeedAddId2ChunkId2Info(void) const
362  { return m_NeedAddId2ChunkId2Info; }
363 
365  { m_Loader.reset(fetch); }
366 
368  { return static_cast<CCassBlobTaskLoadBlob *>(m_Loader.get()); }
369 
370 public:
371  size_t GetBlobPropItemId(CPSGS_Reply * reply);
372  size_t GetBlobChunkItemId(CPSGS_Reply * reply);
373 
374  virtual void ResetCallbacks(void);
375 
376 private:
379 
380  // There are three cases when a blob is requested and depending on which
381  // one is used a different error message should be reported (blob
382  // properties are not found):
383  // 1. The user provided seq_id. In this case the error is a server data
384  // error (500) because the seq_id has been resolved
385  // 2. The user provided blob sat & sat_key. In this case it is a client
386  // error (404) because the user provided something unknown
387  // 3. The TSE chunk request also should lead to a server error because
388  // the chunks in this request are coming for already resolved split blob
390 
392 
395 
397 };
398 
399 
401 {
402 public:
404  {
405  m_FetchType = ePSGS_BioseqInfoFetch;
406  }
407 
409  {}
410 
411  virtual string Serialize(void) const
412  {
413  return "CCassBioseqInfoFetch";
414  }
415 
416 public:
418  { m_Loader.reset(fetch); }
419 
421  { return static_cast<CCassBioseqInfoTaskFetch *>(m_Loader.get()); }
422 
423 public:
424  virtual void ResetCallbacks(void);
425 };
426 
427 
429 {
430 public:
432  {
433  m_FetchType = ePSGS_Si2csiFetch;
434  }
435 
437  {}
438 
439  virtual string Serialize(void) const
440  {
441  return "CCassSi2csiFetch";
442  }
443 
444 public:
446  { m_Loader.reset(fetch); }
447 
449  { return static_cast<CCassSI2CSITaskFetch *>(m_Loader.get()); }
450 
451 public:
452  virtual void ResetCallbacks(void);
453 };
454 
455 
457 {
458 public:
460  const SCass_BlobId & tse_id,
461  int64_t split_version) :
462  m_TSEId(tse_id),
463  m_Chunk(chunk_request.m_Id2Chunk),
464  m_SplitVersion(split_version),
465  m_UseCache(chunk_request.m_UseCache)
466  {
467  m_FetchType = ePSGS_SplitHistoryFetch;
468  }
469 
471  {}
472 
473  virtual string Serialize(void) const
474  {
475  return "CCassSplitHistoryFetch";
476  }
477 
478 public:
479  SCass_BlobId GetTSEId(void) const
480  { return m_TSEId; }
481 
482  int64_t GetChunk(void) const
483  { return m_Chunk; }
484 
486  { return m_SplitVersion; }
487 
489  { return m_UseCache; }
490 
492  { m_Loader.reset(fetch); }
493 
495  { return static_cast<CCassBlobTaskFetchSplitHistory *>(m_Loader.get()); }
496 
497 public:
498  virtual void ResetCallbacks(void);
499 
500 private:
505 };
506 
507 
509 {
510 public:
513  ePSGS_ById2
514  };
515 
516 public:
518  m_Identification(ePSGS_ByCassBlob),
519  m_LastModified(-1),
520  m_Id2Chunk(-1)
521  {
522  m_FetchType = ePSGS_PublicCommentFetch;
523  }
524 
526  {}
527 
528  virtual string Serialize(void) const
529  {
530  return "CCassPublicCommentFetch";
531  }
532 
533 public:
535  {
536  return m_Identification;
537  }
538 
540  int64_t last_modified)
541  {
542  m_Identification = ePSGS_ByCassBlob;
543  m_BlobId = blob_id;
544  m_LastModified = last_modified;
545  }
546 
548  const string & id2_info)
549  {
550  m_Identification = ePSGS_ById2;
551  m_Id2Chunk = id2_chunk;
552  m_Id2Info = id2_info;
553  }
554 
556  { return m_BlobId; }
557 
559  { return m_LastModified; }
560 
561  int64_t GetId2Chunk(void) const
562  { return m_Id2Chunk; }
563 
564  string GetId2Info(void) const
565  { return m_Id2Info; }
566 
568  { m_Loader.reset(fetch); }
569 
571  { return static_cast<CCassStatusHistoryTaskGetPublicComment *>(m_Loader.get()); }
572 
573 public:
574  virtual void ResetCallbacks(void);
575 
576 private:
577  // Selector between two options
579 
580  // ePSGS_ByCassBlob
583 
584  // ePSGS_ById2
586  string m_Id2Info;
587 };
588 
589 
590 class CCassIPGFetch : public CCassFetch
591 {
592 public:
593  CCassIPGFetch(const SPSGS_IPGResolveRequest & ipg_resolve_request)
594  {
595  m_FetchType = ePSGS_IPGResolveFetch;
596  }
597 
599  {}
600 
601  virtual ~CCassIPGFetch()
602  {}
603 
604  virtual string Serialize(void) const
605  {
606  return "CCassIPGFetch";
607  }
608 
609 public:
611  { m_Loader.reset(fetch); }
612 
614  { return static_cast<CPubseqGatewayFetchIpgReport *>(m_Loader.get()); }
615 
616 public:
617  virtual void ResetCallbacks(void);
618 };
619 
620 
621 
622 
623 #endif
624 
USING_IDBLOB_SCOPE
Definition: cass_fetch.hpp:50
CCassAccVerHistoryFetch(const SPSGS_AccessionVersionHistoryRequest &acc_version_history_request)
Definition: cass_fetch.hpp:217
void SetLoader(CCassAccVerHistoryTaskFetch *fetch)
Definition: cass_fetch.hpp:234
virtual string Serialize(void) const
Definition: cass_fetch.hpp:228
virtual ~CCassAccVerHistoryFetch()
Definition: cass_fetch.hpp:225
CCassAccVerHistoryTaskFetch * GetLoader(void)
Definition: cass_fetch.hpp:237
CCassBioseqInfoTaskFetch * GetLoader(void)
Definition: cass_fetch.hpp:420
void SetLoader(CCassBioseqInfoTaskFetch *fetch)
Definition: cass_fetch.hpp:417
virtual string Serialize(void) const
Definition: cass_fetch.hpp:411
virtual ~CCassBioseqInfoFetch()
Definition: cass_fetch.hpp:408
bool m_UserProvidedBlobId
Definition: cass_fetch.hpp:389
void IncrementTotalSentBlobChunks(void)
Definition: cass_fetch.hpp:344
CCassBlobFetch(const SPSGS_BlobBySatSatKeyRequest &blob_request, const SCass_BlobId &blob_id)
Definition: cass_fetch.hpp:262
void SetLoader(CCassBlobTaskLoadBlob *fetch)
Definition: cass_fetch.hpp:364
CCassBlobFetch(const SPSGS_BlobBySeqIdRequest &blob_request, const SCass_BlobId &blob_id)
Definition: cass_fetch.hpp:248
CCassBlobFetch(const SPSGS_AnnotRequest &blob_request, const SCass_BlobId &blob_id)
Definition: cass_fetch.hpp:276
void SetBlobPropSent(void)
Definition: cass_fetch.hpp:350
bool GetNeedAddId2ChunkId2Info(void) const
Definition: cass_fetch.hpp:361
int32_t GetTotalSentBlobChunks(void) const
Definition: cass_fetch.hpp:341
CCassBlobTaskLoadBlob * GetLoader(void)
Definition: cass_fetch.hpp:367
bool GetUserProvidedBlobId(void) const
Definition: cass_fetch.hpp:338
SPSGS_BlobRequestBase::EPSGS_TSEOption m_TSEOption
Definition: cass_fetch.hpp:377
size_t m_BlobChunkItemId
Definition: cass_fetch.hpp:394
void SetNeedAddId2ChunkId2Info(bool val)
Definition: cass_fetch.hpp:358
virtual ~CCassBlobFetch()
Definition: cass_fetch.hpp:328
virtual string Serialize(void) const
Definition: cass_fetch.hpp:292
SPSGS_BlobRequestBase::EPSGS_TSEOption GetTSEOption(void) const
Definition: cass_fetch.hpp:335
CCassBlobFetch(const SPSGS_TSEChunkRequest &chunk_request, const SCass_BlobId &tse_id)
Definition: cass_fetch.hpp:304
size_t m_BlobPropItemId
Definition: cass_fetch.hpp:393
int32_t m_TotalSentBlobChunks
Definition: cass_fetch.hpp:391
bool IsBlobPropStage(void) const
Definition: cass_fetch.hpp:355
bool m_NeedAddId2ChunkId2Info
Definition: cass_fetch.hpp:396
void ResetTotalSentBlobChunks(void)
Definition: cass_fetch.hpp:347
string GetKeySpace() const
bool m_FinishedRead
Definition: cass_fetch.hpp:148
virtual void ResetCallbacks(void)=0
void SetInPeek(bool val)
Definition: cass_fetch.hpp:98
void SetReadFinished(void)
Definition: cass_fetch.hpp:89
bool IsBlobFetch(void) const
Definition: cass_fetch.hpp:117
void Cancel(void)
Definition: cass_fetch.hpp:107
bool ReadFinished(void) const
Definition: cass_fetch.hpp:95
string GetClientId(void) const
Definition: cass_fetch.hpp:127
bool Canceled(void) const
Definition: cass_fetch.hpp:104
EPSGS_DbFetchType m_FetchType
Definition: cass_fetch.hpp:157
SCass_BlobId GetBlobId(void) const
Definition: cass_fetch.hpp:124
void SetExcludeBlobCacheUpdated(bool value)
Definition: cass_fetch.hpp:134
virtual ~CCassFetch()
Definition: cass_fetch.hpp:79
unique_ptr< CCassBlobWaiter > m_Loader
Definition: cass_fetch.hpp:145
string m_ClientId
Definition: cass_fetch.hpp:162
CCassBlobWaiter * GetLoader(void)
Definition: cass_fetch.hpp:86
bool InPeek(void) const
Definition: cass_fetch.hpp:101
bool m_Canceled
Definition: cass_fetch.hpp:159
virtual string Serialize(void) const =0
SCass_BlobId m_BlobId
Definition: cass_fetch.hpp:163
EPSGS_DbFetchType GetFetchType(void) const
Definition: cass_fetch.hpp:92
CCassFetch(const string &client_id, const SCass_BlobId &blob_id)
Definition: cass_fetch.hpp:68
bool m_ExcludeBlobCacheUpdated
Definition: cass_fetch.hpp:164
void SetLoader(CPubseqGatewayFetchIpgReport *fetch)
Definition: cass_fetch.hpp:610
virtual string Serialize(void) const
Definition: cass_fetch.hpp:604
CCassIPGFetch(const SPSGS_IPGResolveRequest &ipg_resolve_request)
Definition: cass_fetch.hpp:593
CPubseqGatewayFetchIpgReport * GetLoader(void)
Definition: cass_fetch.hpp:613
virtual ~CCassIPGFetch()
Definition: cass_fetch.hpp:601
vector< string > GetAnnotNames() const
Definition: fetch.hpp:112
vector< string > m_Names
Definition: cass_fetch.hpp:210
virtual string Serialize(void) const
Definition: cass_fetch.hpp:183
CCassNAnnotTaskFetch * GetLoader(void)
Definition: cass_fetch.hpp:202
virtual ~CCassNamedAnnotFetch()
Definition: cass_fetch.hpp:180
CCassNamedAnnotFetch(const SPSGS_AnnotRequest &annot_request)
Definition: cass_fetch.hpp:172
void SetLoader(CCassNAnnotTaskFetch *fetch)
Definition: cass_fetch.hpp:195
EPSGS_Identification m_Identification
Definition: cass_fetch.hpp:578
string GetId2Info(void) const
Definition: cass_fetch.hpp:564
CCassStatusHistoryTaskGetPublicComment * GetLoader(void)
Definition: cass_fetch.hpp:570
void SetCassBlobIdentification(const SCass_BlobId &blob_id, int64_t last_modified)
Definition: cass_fetch.hpp:539
void SetLoader(CCassStatusHistoryTaskGetPublicComment *fetch)
Definition: cass_fetch.hpp:567
EPSGS_Identification GetIdentification(void) const
Definition: cass_fetch.hpp:534
int64_t GetId2Chunk(void) const
Definition: cass_fetch.hpp:561
virtual ~CCassPublicCommentFetch()
Definition: cass_fetch.hpp:525
virtual string Serialize(void) const
Definition: cass_fetch.hpp:528
SCass_BlobId GetBlobId(void) const
Definition: cass_fetch.hpp:555
void SetId2Identification(int64_t id2_chunk, const string &id2_info)
Definition: cass_fetch.hpp:547
int64_t GetLastModified(void) const
Definition: cass_fetch.hpp:558
void SetLoader(CCassSI2CSITaskFetch *fetch)
Definition: cass_fetch.hpp:445
virtual string Serialize(void) const
Definition: cass_fetch.hpp:439
virtual ~CCassSi2csiFetch()
Definition: cass_fetch.hpp:436
CCassSI2CSITaskFetch * GetLoader(void)
Definition: cass_fetch.hpp:448
CCassBlobTaskFetchSplitHistory * GetLoader(void)
Definition: cass_fetch.hpp:494
SCass_BlobId GetTSEId(void) const
Definition: cass_fetch.hpp:479
int64_t GetChunk(void) const
Definition: cass_fetch.hpp:482
SPSGS_RequestBase::EPSGS_CacheAndDbUse m_UseCache
Definition: cass_fetch.hpp:504
CCassSplitHistoryFetch(const SPSGS_TSEChunkRequest &chunk_request, const SCass_BlobId &tse_id, int64_t split_version)
Definition: cass_fetch.hpp:459
virtual ~CCassSplitHistoryFetch()
Definition: cass_fetch.hpp:470
virtual string Serialize(void) const
Definition: cass_fetch.hpp:473
SPSGS_RequestBase::EPSGS_CacheAndDbUse GetUseCache(void) const
Definition: cass_fetch.hpp:488
void SetLoader(CCassBlobTaskFetchSplitHistory *fetch)
Definition: cass_fetch.hpp:491
int64_t GetSplitVersion(void) const
Definition: cass_fetch.hpp:485
EPSGS_CacheAddResult
static const struct name_t names[]
#define true
Definition: bool.h:35
#define false
Definition: bool.h:36
Int4 int32_t
Int8 int64_t
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1227
@ ePSGS_BlobBySatSatKeyFetch
@ ePSGS_BioseqInfoFetch
@ ePSGS_UnknownFetch
@ ePSGS_SplitHistoryFetch
@ ePSGS_AnnotationFetch
@ ePSGS_Si2csiFetch
@ ePSGS_AnnotationBlobFetch
@ ePSGS_TSEChunkFetch
@ ePSGS_BlobBySeqIdFetch
@ ePSGS_PublicCommentFetch
@ ePSGS_AccVerHistoryFetch
@ ePSGS_IPGResolveFetch
psg_clock_t::time_point psg_time_point_t
Modified on Fri Sep 20 14:57:36 2024 by modify_doxy.py rev. 669887