Revision control

Copy as Markdown

Other Tools

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* This interface provides management of traits that are used to categorize
* messages. A trait is some characteristic of a message, such as being "junk"
* or "personal", that may be discoverable by analysis of the message.
*
* Traits are described by a universal identifier "id" as a string, as well
* as a local integer identifier "index". One purpose of this service is to
* provide the mapping between those forms.
*
* Recommended (but not required) format for id:
* "extensionName@example.org#traitName"
*/
#include "nsISupports.idl"
[scriptable, uuid(2CB15FB0-A912-40d3-8882-F2765C75655F)]
interface nsIMsgTraitService : nsISupports
{
/**
* the highest ever index for a registered trait. The first trait is 1,
* == 0 means no traits are defined
*/
readonly attribute long lastIndex;
/**
* Register a trait. May be called multiple times, but subsequent
* calls do not register the trait
*
* @param id the trait universal identifier
*
* @return the internal index for the registered trait if newly
* registered, else 0
*/
unsigned long registerTrait(in ACString id);
/**
* Unregister a trait.
*
* @param id the trait universal identifier
*/
void unRegisterTrait(in ACString id);
/**
* is a trait registered?
*
* @param id the trait universal identifier
*
* @return true if registered
*/
boolean isRegistered(in ACString id);
/**
* set the trait name, which is an optional short description of the trait
*
* @param id the trait universal identifier
* @param name description of the trait.
*/
void setName(in ACString id, in ACString name);
/**
* get the trait name, which is an optional short description of the trait
*
* @param id the trait universal identifier
*
* @return description of the trait
*/
ACString getName(in ACString id);
/**
* get the internal index number for the trait.
*
* @param id the trait universal identifier
*
* @return internal index number for the trait
*/
unsigned long getIndex(in ACString id);
/**
* get the trait universal identifier for an internal trait index
*
* @param index the internal identifier for the trait
*
* @return trait universal identifier
*/
ACString getId(in unsigned long index);
/**
* enable the trait for analysis. Each enabled trait will be analyzed by
* the bayesian code. The enabled trait is the "pro" trait that represents
* messages matching the trait. Each enabled trait also needs a corresponding
* anti trait defined, which represents messages that do not match the trait.
* The anti trait does not need to be enabled
*
* @param id the trait universal identifier
* @param enabled should this trait be processed by the bayesian analyzer?
*/
void setEnabled(in ACString id, in boolean enabled);
/**
* Should this trait be processed by the bayes analyzer?
*
* @param id the trait universal identifier
*
* @return true if this is a "pro" trait to process
*/
boolean getEnabled(in ACString id);
/**
* set the anti trait, which indicates messages that have been marked as
* NOT matching a particular trait.
*
* @param id the trait universal identifier
* @param antiId trait id for messages marked as not matching the trait
*/
void setAntiId(in ACString id, in ACString antiId);
/**
* get the id of traits that do not match a particular trait
*
* @param id the trait universal identifier for a "pro" trait
*
* @return universal trait identifier for an "anti" trait that does not
* match the "pro" trait messages
*/
ACString getAntiId(in ACString id);
/**
* Get an array of "pro" traits to be analyzed by the bayesian code. This is
* a "pro" trait of messages that match the trait.
* Only enabled traits are returned.
* This should return the same number of indices as the corresponding call to
* getEnabledAntiIndices().
*
* @return an array of trait internal indices for "pro" trait to analyze
*/
Array<unsigned long> getEnabledProIndices();
/**
* Get an array of "anti" traits to be analyzed by the bayesian code. This is
* a "anti" trait of messages that do not match the trait.
* Only enabled traits are returned.
* This should return the same number of indices as the corresponding call to
* getEnabledProIndices().
*
* @return an array of trait internal indices for "anti" trait to analyze
*/
Array<unsigned long> getEnabledAntiIndices();
/**
* Add a trait as an alias of another trait. An alias is a trait whose
* counts will be combined with the aliased trait. This allows multiple sets
* of corpus data to be used to provide information on a single message
* characteristic, while allowing each individual set of corpus data to
* retain its own identity.
*
* @param aTraitIndex the internal identifier for the aliased trait
* @param aTraitAlias the internal identifier for the alias to add
*/
void addAlias(in unsigned long aTraitIndex, in unsigned long aTraitAlias);
/**
* Removes a trait as an alias of another trait.
*
* @param aTraitIndex the internal identifier for the aliased trait
* @param aTraitAlias the internal identifier for the alias to remove
*/
void removeAlias(in unsigned long aTraitIndex, in unsigned long aTraitAlias);
/**
* Get an array of trait aliases for a trait index, if any
*
* @param aTraitIndex the internal identifier for the aliased trait
*
* @return an array of internal identifiers for aliases
*/
Array<unsigned long> getAliases(in unsigned long aTraitIndex);
};