00001 /* 00002 * Funambol is a mobile platform developed by Funambol, Inc. 00003 * Copyright (C) 2003 - 2007 Funambol, Inc. 00004 * 00005 * This program is free software; you can redistribute it and/or modify it under 00006 * the terms of the GNU Affero General Public License version 3 as published by 00007 * the Free Software Foundation with the addition of the following permission 00008 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED 00009 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE 00010 * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. 00011 * 00012 * This program is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00014 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 00015 * details. 00016 * 00017 * You should have received a copy of the GNU Affero General Public License 00018 * along with this program; if not, see http://www.gnu.org/licenses or write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 00020 * MA 02110-1301 USA. 00021 * 00022 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite 00023 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com. 00024 * 00025 * The interactive user interfaces in modified source and object code versions 00026 * of this program must display Appropriate Legal Notices, as required under 00027 * Section 5 of the GNU Affero General Public License version 3. 00028 * 00029 * In accordance with Section 7(b) of the GNU Affero General Public License 00030 * version 3, these Appropriate Legal Notices must retain the display of the 00031 * "Powered by Funambol" logo. If the display of the logo is not reasonably 00032 * feasible for technical reasons, the Appropriate Legal Notices must display 00033 * the words "Powered by Funambol". 00034 */ 00035 00036 00037 00038 #ifndef INCL_ABSTRACT_SYNC_SOURCE_CONFIG 00039 #define INCL_ABSTRACT_SYNC_SOURCE_CONFIG 00040 /** @cond API */ 00041 /** @addtogroup Client */ 00042 /** @{ */ 00043 00044 #include "base/fscapi.h" 00045 #include "spds/constants.h" 00046 #include "syncml/core/CTCap.h" 00047 #include "base/globalsdef.h" 00048 00049 BEGIN_NAMESPACE 00050 00051 /** 00052 * This class is the API expected by SyncClient/SyncManager for each sync source. 00053 * AbstractSyncSourceConfig is a part of SyncManagerConfig (along with AccessConfig 00054 * and an array of DeviceConfig). 00055 */ 00056 class AbstractSyncSourceConfig { 00057 public: 00058 static const int FLEVEL_UNDEFINED = -1; 00059 static const int FLEVEL_ENABLED = 1; 00060 static const int FLEVEL_DISABLED = 0; 00061 00062 /** 00063 * Destructor 00064 */ 00065 virtual ~AbstractSyncSourceConfig() {} 00066 00067 /** 00068 * Returns the SyncSource name. 00069 */ 00070 virtual const char* getName() const = 0; 00071 00072 /** 00073 * Returns the SyncSource URI (used in SyncML addressing). 00074 */ 00075 virtual const char* getURI() const = 0; 00076 00077 /** 00078 * Returns a comma separated list of the possible syncModes for the 00079 * SyncSource. Sync modes can be one of 00080 * - slow 00081 * - two-way 00082 * - one-way-from-server 00083 * - one-way-from-client 00084 * - refresh-from-server 00085 * - refresh-from-client 00086 * - one-way-from-server 00087 * - one-way-from-client 00088 * - addrchange 00089 */ 00090 virtual const char* getSyncModes() const = 0; 00091 00092 /** 00093 * Returns the mime type of the items handled by the sync source. 00094 */ 00095 virtual const char* getType() const = 0; 00096 00097 /** 00098 * Gets the default syncMode as one of the strings listed in setSyncModes. 00099 */ 00100 virtual const char* getSync() const = 0; 00101 00102 /** 00103 * Specifies how the content of an outgoing item should be 00104 * encoded by the client library if the sync source does not 00105 * set an encoding on the item that it created. Valid values 00106 * are listed in SyncItem::encodings. 00107 */ 00108 virtual const char* getEncoding() const = 0; 00109 00110 /** 00111 * Returns the version of the source type used by client. 00112 */ 00113 virtual const char* getVersion() const = 0; 00114 00115 /** 00116 * A string representing the source types (with versions) supported by the SyncSource. 00117 * The string must be formatted as a sequence of "type:version" separated by commas ','. 00118 * For example: "text/x-vcard:2.1,text/vcard:3.0". 00119 * The version can be left empty, for example: "text/x-s4j-sifc:". 00120 * Supported types will be sent as part of the DevInf. 00121 */ 00122 virtual const char* getSupportedTypes() const = 0; 00123 00124 /** 00125 * Sets the last sync timestamp. Called by the sync engine at 00126 * the end of a sync. The client must save that modified 00127 * value; it is needed to decide during the next sync whether 00128 * an incremental sync is possible. 00129 * 00130 * A client which wants to force a slow sync after a failed 00131 * sync can reset the time stamp. The sync engine itself won't 00132 * do that. 00133 * 00134 * @param timestamp the last sync timestamp 00135 */ 00136 virtual void setLast(unsigned long timestamp) = 0; 00137 00138 /** 00139 * Returns the last sync timestamp 00140 */ 00141 virtual unsigned long getLast() const = 0; 00142 00143 /** 00144 * Specifies if the content of an outgoing item should be encrypted. 00145 * If this property is not empty and valid, the 'encodings' value is ignored 00146 * for outgoing items. The only valid value is "des". 00147 */ 00148 virtual const char* getEncryption() const = 0; 00149 00150 /** 00151 * Returns an array of CtCap with all the capabilities for this Source 00152 * 00153 * @return an ArrayList of CTCap 00154 */ 00155 virtual const ArrayList& getCtCaps() const = 0; 00156 00157 /** 00158 * Return fieldLevel param. Not implemented yet. Now just returns false 00159 * 00160 * Note: explaining the method "getFieldLevel()" as "return 00161 * fieldLevel param" does not add any information and might as 00162 * well be left out. 00163 * 00164 * @return fieldLevel ... which is what? 00165 */ 00166 virtual bool getFieldLevel() const { return false; } 00167 }; 00168 00169 00170 END_NAMESPACE 00171 00172 /** @} */ 00173 /** @endcond */ 00174 #endif