diff options
author | Not Zed <NotZed@Ximian.com> | 2001-11-30 11:09:38 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2001-11-30 11:09:38 +0800 |
commit | d46cb0fd8d142c6dfa186db76202bb9912fbb7fa (patch) | |
tree | 09283efea0e5fd246a897b62fa211e96a858d329 /camel/providers/nntp/camel-nntp-store.h | |
parent | 1af092ec093994115d64ed30f04d11bb322aba35 (diff) | |
download | gsoc2013-evolution-d46cb0fd8d142c6dfa186db76202bb9912fbb7fa.tar gsoc2013-evolution-d46cb0fd8d142c6dfa186db76202bb9912fbb7fa.tar.gz gsoc2013-evolution-d46cb0fd8d142c6dfa186db76202bb9912fbb7fa.tar.bz2 gsoc2013-evolution-d46cb0fd8d142c6dfa186db76202bb9912fbb7fa.tar.lz gsoc2013-evolution-d46cb0fd8d142c6dfa186db76202bb9912fbb7fa.tar.xz gsoc2013-evolution-d46cb0fd8d142c6dfa186db76202bb9912fbb7fa.tar.zst gsoc2013-evolution-d46cb0fd8d142c6dfa186db76202bb9912fbb7fa.zip |
Completely new implementation of NNTP.
2001-11-30 Not Zed <NotZed@Ximian.com>
* providers/nntp/camel-nntp-*.c:
Completely new implementation of NNTP.
Doesn't support subscriptions yet (lists all folders), but should
be more reliable (faster?), and has an integrated cache.
* camel-exception.c (camel_exception_new): Use e_memchunks for
exception blocks.
(camel_exception_free): Same.
* camel-data-cache.[ch]: New object for managing on-disk caches of
anything that can be stored in a camel-stream.
* camel-file-utils.c (camel_file_util_mkdir): New function, just a
nicer place to put this (than camel-store), should be removed from
camel-store.
(camel_file_util_safe_filename): New function to url-encode a
filename.
* camel-mime-parser.c (drop_states): New func to drop the parser
state to initial state.
(folder_scan_init_with_fd):
(folder_scan_init_with_stream): Call above func to reset state if
the stream is changed on us so we can change streams to reuse a
parser object.
svn path=/trunk/; revision=14822
Diffstat (limited to 'camel/providers/nntp/camel-nntp-store.h')
-rw-r--r-- | camel/providers/nntp/camel-nntp-store.h | 79 |
1 files changed, 20 insertions, 59 deletions
diff --git a/camel/providers/nntp/camel-nntp-store.h b/camel/providers/nntp/camel-nntp-store.h index 0f373dd0bc..04a69b02e7 100644 --- a/camel/providers/nntp/camel-nntp-store.h +++ b/camel/providers/nntp/camel-nntp-store.h @@ -30,41 +30,15 @@ extern "C" { #pragma } #endif /* __cplusplus }*/ -#include "camel-remote-store.h" -#include "camel-nntp-newsrc.h" -#include "camel-nntp-types.h" - -#include "config.h" - -#ifdef ENABLE_THREADS -#include "e-util/e-msgport.h" -#endif +#include "camel/camel-remote-store.h" +#include "camel/camel-exception.h" +#include "camel/camel-folder.h" #define CAMEL_NNTP_STORE_TYPE (camel_nntp_store_get_type ()) #define CAMEL_NNTP_STORE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_NNTP_STORE_TYPE, CamelNNTPStore)) #define CAMEL_NNTP_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_NNTP_STORE_TYPE, CamelNNTPStoreClass)) #define CAMEL_IS_NNTP_STORE(o) (CAMEL_CHECK_TYPE((o), CAMEL_NNTP_STORE_TYPE)) -enum { - CAMEL_NNTP_OVER_FROM, - CAMEL_NNTP_OVER_SUBJECT, - CAMEL_NNTP_OVER_DATE, - CAMEL_NNTP_OVER_MESSAGE_ID, - CAMEL_NNTP_OVER_REFERENCES, - CAMEL_NNTP_OVER_BYTES, - - CAMEL_NNTP_OVER_LAST -}; - -struct CamelNNTPOverField { - int index; - gboolean full; /* full in the OVER sense - the field name - precedes the ':' in the XOVER list. */ -}; - -struct CamelNNTPStore { - CamelRemoteStore parent_object; - #define CAMEL_NNTP_EXT_SEARCH (1<<0) #define CAMEL_NNTP_EXT_SETGET (1<<1) #define CAMEL_NNTP_EXT_OVER (1<<2) @@ -73,51 +47,38 @@ struct CamelNNTPStore { #define CAMEL_NNTP_EXT_LISTMOTD (1<<5) #define CAMEL_NNTP_EXT_LISTSUBSCR (1<<6) #define CAMEL_NNTP_EXT_LISTPNAMES (1<<7) + +typedef struct _CamelNNTPStore CamelNNTPStore; +typedef struct _CamelNNTPStoreClass CamelNNTPStoreClass; + +struct _CamelNNTPStore { + CamelRemoteStore parent_object; + + struct _CamelNNTPStorePrivate *priv; + guint32 extensions; gboolean posting_allowed; - int num_overview_fields; - CamelNNTPOverField overview_field[ CAMEL_NNTP_OVER_LAST ]; + struct _CamelNNTPStream *stream; + struct _CamelStreamMem *mem; - CamelNNTPNewsrc *newsrc; - CamelNNTPGroupList *group_list; + struct _CamelDataCache *cache; -#ifdef ENABLE_THREADS - EMutex *command_lock; -#endif + char *current_folder; }; -struct CamelNNTPStoreClass { +struct _CamelNNTPStoreClass { CamelRemoteStoreClass parent_class; }; -#ifdef ENABLE_THREADS -#define CAMEL_NNTP_STORE_LOCK(f) (e_mutex_lock(((CamelNNTPStore *) f)->command_lock)) -#define CAMEL_NNTP_STORE_UNLOCK(f) (e_mutex_unlock(((CamelNNTPStore *) f)->command_lock)) -#else -#define CAMEL_NNTP_STORE_LOCK(f) -#define CAMEL_NNTP_STORE_UNLOCK(f) -#endif - -/* public methods */ -void camel_nntp_store_open (CamelNNTPStore *store, CamelException *ex); -void camel_nntp_store_close (CamelNNTPStore *store, gboolean expunge, - CamelException *ex); - -void camel_nntp_store_subscribe_group (CamelStore *store, const gchar *group_name); -void camel_nntp_store_unsubscribe_group (CamelStore *store, const gchar *group_name); -GList *camel_nntp_store_list_subscribed_groups(CamelStore *store); - -gchar *camel_nntp_store_get_toplevel_dir (CamelNNTPStore *store); - -/* support functions */ -int camel_nntp_command (CamelNNTPStore *store, CamelException *ex, char **ret, char *fmt, ...); - /* Standard Camel function */ CamelType camel_nntp_store_get_type (void); +int camel_nntp_command(CamelNNTPStore *store, char **line, const char *fmt, ...); +int camel_nntp_store_set_folder(CamelNNTPStore *store, CamelFolder *folder, CamelFolderChangeInfo *changes, CamelException *ex); + #ifdef __cplusplus } #endif /* __cplusplus */ |