#include <RNewsgroup.h>
Inheritance diagram for RNewsgroup:

Public Member Functions | |
| RNewsgroup () | |
| RNewsgroup (RServer *srvr, OverviewFmt *fmt, const char *name) | |
| ~RNewsgroup () | |
| virtual void | getsize (unsigned int *f, unsigned int *l) |
| virtual void | setsize (unsigned int f, unsigned int l) |
| virtual void | prefetchGroup (int lockgrp=1) |
| virtual void | prefetchOverview (void) |
| virtual unsigned int | firstnbr () |
| virtual unsigned int | lastnbr () |
| virtual int | hasrecord (unsigned int i) |
| virtual Article * | getarticle (unsigned int nbr) |
| virtual void | freearticle (Article *artp) |
| virtual void | setarticle (Article *art) |
| virtual void | printarticle (std::ostream &os, unsigned int nbr) |
| virtual const char * | getover (unsigned int nbr) |
| virtual void | setover (const string &over) |
| virtual void | readoverdb (std::istream &is) |
| virtual void | printheaderdb (ostream &os, const char *header, unsigned int f=0, unsigned int l=UINT_MAX) |
| virtual void | printlistgroup (ostream &os) |
Private Types | |
| typedef std::map< unsigned int, string >::iterator | iterator |
Private Attributes | |
| std::map< unsigned int, string > | _OverviewDB |
| unsigned int | _first |
| unsigned int | _last |
| RServer * | _RemoteServer |
Definition at line 32 of file RNewsgroup.h.
|
|
Definition at line 33 of file RNewsgroup.h. Referenced by getover(), printheaderdb(), and printlistgroup(). |
|
|
Definition at line 42 of file RNewsgroup.h.
00042 :Newsgroup(NULL, NULL) { 00043 } RNewsgroup(RServer * srvr, OverviewFmt * fmt, const char *name) |
|
||||||||||||||||
|
Definition at line 43 of file RNewsgroup.h.
00044 :Newsgroup(fmt, name), _first(1), _last(0), _RemoteServer(srvr) { 00045 } |
|
|
Definition at line 46 of file RNewsgroup.h.
00046 {
00047 }
|
|
|
Implements Newsgroup. Definition at line 61 of file RNewsgroup.h. References _first.
00061 {
00062 return _first;
00063 }
|
|
|
Implements Newsgroup. Definition at line 82 of file RNewsgroup.h.
00082 {
00083 delete artp;
00084 }
|
|
|
Implements Newsgroup. Definition at line 71 of file RNewsgroup.h. References _RemoteServer, and RServer::article().
00071 {
00072 try {
00073 Article *a = new Article;
00074 _RemoteServer->article(_NewsgroupName, nbr, a);
00075 return a;
00076 }
00077 catch(...) {
00078 return NULL;
00079 }
00080 }
|
|
|
Implements Newsgroup. Definition at line 89 of file RNewsgroup.h. References _OverviewDB, and iterator.
00089 {
00090 iterator over = _OverviewDB.find(nbr);
00091 if (over != _OverviewDB.end())
00092 return over->second.c_str();
00093 else
00094 return NULL;
00095 }
|
|
||||||||||||
|
Implements Newsgroup. Definition at line 49 of file RNewsgroup.h.
|
|
|
Implements Newsgroup. Definition at line 67 of file RNewsgroup.h. References _OverviewDB.
00067 {
00068 return (_OverviewDB.find(i) != _OverviewDB.end());
00069 }
|
|
|
Implements Newsgroup. Definition at line 64 of file RNewsgroup.h. References _last.
00064 {
00065 return _last;
00066 }
|
|
|
Implements Newsgroup. Definition at line 56 of file RNewsgroup.h.
00056 {
00057 }
|
|
|
Implements Newsgroup. Definition at line 58 of file RNewsgroup.h.
00058 {
00059 }
|
|
||||||||||||
|
Implements Newsgroup. Definition at line 25 of file RNewsgroup.cc. References _RemoteServer, and RServer::article().
00026 {
00027 try {
00028 Article article;
00029 _RemoteServer->article(_NewsgroupName, nbr, &article);
00030 os << article;
00031 } catch(...) {
00032 }
00033 }
|
|
||||||||||||||||||||
|
Implements Newsgroup. Definition at line 124 of file RNewsgroup.h. References _OverviewDB, and iterator.
00127 {
00128 char xheader[512], *p;
00129 const char *q;
00130 string fld;
00131
00132 p = xheader;
00133 q = header;
00134 while ((*p++ = *q++));
00135 *(p - 1) = ':';
00136 *p = '\0';
00137
00138 iterator begin = _OverviewDB.lower_bound(f), end =
00139 _OverviewDB.end();
00140
00141 while (begin != end) {
00142 unsigned int i = begin->first;
00143 if (l < i)
00144 break;
00145
00146 try {
00147 fld =
00148 _OverviewFormat->
00149 getfield(_OverviewDB[i].c_str(),
00150 xheader, 0);
00151 os << i << " " << fld << "\r\n";
00152 }
00153 catch(NoSuchFieldError & nsfe) {
00154 os << i << " (none)\r\n";
00155 }
00156 ++begin;
00157 }
00158 }
|
|
|
Implements Newsgroup. Definition at line 160 of file RNewsgroup.h. References _OverviewDB, and iterator.
00160 {
00161 iterator begin = _OverviewDB.begin(), end =
00162 _OverviewDB.end();
00163
00164 while (begin != end) {
00165 os << begin->first << "\r\n";
00166 ++begin;
00167 }
00168 }
|
|
|
Implements Newsgroup. Definition at line 105 of file RNewsgroup.h. References OverviewFmt::convert(), OverviewFmt::dotrans, nlreadline(), setover(), slog, and VERB.
00105 {
00106 VERB(slog.
00107 p(Logger::Debug) << "RNewsgroup::readoverdb(&is)\n");
00108 string line1, line2;
00109
00110 for (;;) {
00111 nlreadline(is, line1, 0);
00112 if (line1 == "." || is.eof())
00113 break;
00114 if (_OverviewFormat->dotrans) {
00115 // Convert Record
00116 _OverviewFormat->convert(line1, line2);
00117 setover(line2);
00118 } else {
00119 setover(line1);
00120 }
00121 }
00122 }
|
|
|
Implements Newsgroup. Definition at line 85 of file RNewsgroup.h.
00085 {
00086 }
|
|
|
Implements Newsgroup. Definition at line 97 of file RNewsgroup.h. References _first, _last, and _OverviewDB. Referenced by readoverdb().
00097 {
00098 unsigned int i = atoi(over.c_str());
00099
00100 if (_first <= i && i <= _last) {
00101 _OverviewDB[i] = over;
00102 }
00103 }
|
|
||||||||||||
|
Implements Newsgroup. Definition at line 3 of file RNewsgroup.cc. References _first, _last, _OverviewDB, _RemoteServer, RServer::overviewdb(), Logger::p(), and slog. Referenced by CServer::getgroup(), and RServer::getgroup().
00004 {
00005 if (f < _first || l < _last) {
00006 slog.p(Logger::Notice) << "watermark(s) decreased?!?\n";
00007 _OverviewDB.erase(_OverviewDB.begin(), _OverviewDB.end());
00008 _first = f;
00009 _last = l;
00010 _RemoteServer->overviewdb(this, f, l);
00011 } else {
00012 if (_first < f) {
00013 _OverviewDB.erase(_OverviewDB.begin(),
00014 _OverviewDB.lower_bound(f));
00015 }
00016 if (_last < l) {
00017 int old_last = _last;
00018 _first = f;
00019 _last = l;
00020 _RemoteServer->overviewdb(this, old_last + 1, l);
00021 }
00022 }
00023 }
|
|
|
Definition at line 36 of file RNewsgroup.h. Referenced by firstnbr(), getsize(), setover(), and setsize(). |
|
|
Definition at line 36 of file RNewsgroup.h. Referenced by getsize(), lastnbr(), setover(), and setsize(). |
|
|
Definition at line 35 of file RNewsgroup.h. Referenced by getover(), hasrecord(), printheaderdb(), printlistgroup(), setover(), and setsize(). |
|
|
Definition at line 39 of file RNewsgroup.h. Referenced by getarticle(), printarticle(), and setsize(). |
1.3.6-20040222