| mw_channel.h | | mw_channel.h | |
| | | | |
| skipping to change at line 24 | | skipping to change at line 24 | |
| Library General Public License for more details. | | Library General Public License for more details. | |
| | | | |
| You should have received a copy of the GNU Library General Public | | You should have received a copy of the GNU Library General Public | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_CHANNEL_H | | #ifndef _MW_CHANNEL_H | |
| #define _MW_CHANNEL_H | | #define _MW_CHANNEL_H | |
| | | | |
|
| #include <time.h> | | | |
| #include "mw_common.h" | | | |
| | | | |
| /** @file mw_channel.h | | /** @file mw_channel.h | |
| | | | |
| Life-cycle of an outgoing channel: | | Life-cycle of an outgoing channel: | |
| | | | |
| 1: mwChannel_new is called. If there is a channel in the outgoing | | 1: mwChannel_new is called. If there is a channel in the outgoing | |
| collection in state NEW, then it is returned. Otherwise, a channel | | collection in state NEW, then it is returned. Otherwise, a channel | |
| is allocated, assigned a unique outgoing id, marked as NEW, and | | is allocated, assigned a unique outgoing id, marked as NEW, and | |
| returned. | | returned. | |
| | | | |
| 2: channel is set to INIT status (effectively earmarking it as in- | | 2: channel is set to INIT status (effectively earmarking it as in- | |
| | | | |
| skipping to change at line 80 | | skipping to change at line 77 | |
| out queues for that channel are processed. The channel is now ready | | out queues for that channel are processed. The channel is now ready | |
| to be used. | | to be used. | |
| | | | |
| 4: data is sent and received over the channel | | 4: data is sent and received over the channel | |
| | | | |
| 5: The channel is closed either by receipt of a close message or by | | 5: The channel is closed either by receipt of a close message or by | |
| local action. If by local action, then a close message is sent to | | local action. If by local action, then a close message is sent to | |
| the server. The channel is cleaned up, its queues dumped, and it | | the server. The channel is cleaned up, its queues dumped, and it | |
| is deallocated. */ | | is deallocated. */ | |
| | | | |
|
| | | #include <time.h> | |
| | | #include "mw_common.h" | |
| | | | |
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| /* place-holders */ | | /* place-holders */ | |
| struct mwCipherInstance; | | struct mwCipherInstance; | |
| struct mwMsgChannelAccept; | | struct mwMsgChannelAccept; | |
| struct mwMsgChannelCreate; | | struct mwMsgChannelCreate; | |
| struct mwMsgChannelDestroy; | | struct mwMsgChannelDestroy; | |
| struct mwMsgChannelSend; | | struct mwMsgChannelSend; | |
| struct mwService; | | struct mwService; | |
| struct mwSession; | | struct mwSession; | |
| | | | |
| /** @struct mwChannel | | /** @struct mwChannel | |
| | | | |
| skipping to change at line 254 | | skipping to change at line 258 | |
| | | | |
| /** the list of supported ciphers for a channel. This list will be | | /** the list of supported ciphers for a channel. This list will be | |
| empty once a cipher has been selected for the channel */ | | empty once a cipher has been selected for the channel */ | |
| GList *mwChannel_getSupportedCipherInstances(struct mwChannel *chan); | | GList *mwChannel_getSupportedCipherInstances(struct mwChannel *chan); | |
| | | | |
| /** select a cipher instance for a channel. A NULL instance indicates | | /** select a cipher instance for a channel. A NULL instance indicates | |
| that no encryption should be used. */ | | that no encryption should be used. */ | |
| void mwChannel_selectCipherInstance(struct mwChannel *chan, | | void mwChannel_selectCipherInstance(struct mwChannel *chan, | |
| struct mwCipherInstance *ci); | | struct mwCipherInstance *ci); | |
| | | | |
|
| | | struct mwCipherInstance * | |
| | | mwChannel_getCipherInstance(struct mwChannel *chan); | |
| | | | |
| /** get the state of a channel */ | | /** get the state of a channel */ | |
| enum mwChannelState mwChannel_getState(struct mwChannel *); | | enum mwChannelState mwChannel_getState(struct mwChannel *); | |
| | | | |
| /** obtain the value for a statistic field as a gpointer */ | | /** obtain the value for a statistic field as a gpointer */ | |
| gpointer mwChannel_getStatistic(struct mwChannel *chan, | | gpointer mwChannel_getStatistic(struct mwChannel *chan, | |
| enum mwChannelStatField stat); | | enum mwChannelStatField stat); | |
| | | | |
| /** Formally open a channel. | | /** Formally open a channel. | |
| | | | |
| For outgoing channels: instruct the session to send a channel | | For outgoing channels: instruct the session to send a channel | |
| | | | |
| skipping to change at line 314 | | skipping to change at line 321 | |
| void mwChannel_recvAccept(struct mwChannel *chan, | | void mwChannel_recvAccept(struct mwChannel *chan, | |
| struct mwMsgChannelAccept *msg); | | struct mwMsgChannelAccept *msg); | |
| | | | |
| /** pass a destroy message to a channel for handling */ | | /** pass a destroy message to a channel for handling */ | |
| void mwChannel_recvDestroy(struct mwChannel *chan, | | void mwChannel_recvDestroy(struct mwChannel *chan, | |
| struct mwMsgChannelDestroy *msg); | | struct mwMsgChannelDestroy *msg); | |
| | | | |
| /** Feed data into a channel. */ | | /** Feed data into a channel. */ | |
| void mwChannel_recv(struct mwChannel *chan, struct mwMsgChannelSend *msg); | | void mwChannel_recv(struct mwChannel *chan, struct mwMsgChannelSend *msg); | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_CHANNEL_H */ | |
| | | | |
End of changes. 5 change blocks. |
| 3 lines changed or deleted | | 12 lines changed or added | |
|
| mw_cipher.h | | mw_cipher.h | |
| | | | |
| skipping to change at line 27 | | skipping to change at line 27 | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_CIPHER_H | | #ifndef _MW_CIPHER_H | |
| #define _MW_CIPHER_H | | #define _MW_CIPHER_H | |
| | | | |
| #include <glib.h> | | #include <glib.h> | |
| #include "mw_common.h" | | #include "mw_common.h" | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| /* place-holders */ | | /* place-holders */ | |
| struct mwChannel; | | struct mwChannel; | |
| struct mwSession; | | struct mwSession; | |
| | | | |
| /** @enum mwCipherType | | /** @enum mwCipherType | |
| Common cipher types */ | | Common cipher types */ | |
| enum mwCipherType { | | enum mwCipherType { | |
| mwCipher_RC2_40 = 0x0000, | | mwCipher_RC2_40 = 0x0000, | |
| mwCipher_RC2_128 = 0x0001, | | mwCipher_RC2_128 = 0x0001, | |
| }; | | }; | |
| | | | |
| struct mwCipher; | | struct mwCipher; | |
| struct mwCipherInstance; | | struct mwCipherInstance; | |
| | | | |
| /** Obtain an instance of a given cipher, which can be used for the | | /** Obtain an instance of a given cipher, which can be used for the | |
| processing of a single channel. */ | | processing of a single channel. */ | |
| typedef struct mwCipherInstance *(*mwCipherInstantiator) | | typedef struct mwCipherInstance *(*mwCipherInstantiator) | |
| (struct mwCipher *cipher, struct mwChannel *chan); | | (struct mwCipher *cipher, struct mwChannel *chan); | |
| | | | |
|
| /** Generate a descriptor for use in a channel create message to | | | |
| indicate the availability of this cipher | | | |
| | | | |
| @todo remove for 1.0 | | | |
| */ | | | |
| typedef struct mwEncryptItem *(*mwCipherDescriptor) | | | |
| (struct mwCipherInstance *instance); | | | |
| | | | |
| /** Process (encrypt or decrypt, depending) the given data. The passed | | /** Process (encrypt or decrypt, depending) the given data. The passed | |
| buffer may be freed in processing and be replaced with a freshly | | buffer may be freed in processing and be replaced with a freshly | |
| allocated buffer. The post-processed buffer must in turn be freed | | allocated buffer. The post-processed buffer must in turn be freed | |
| after use */ | | after use */ | |
| typedef int (*mwCipherProcessor) | | typedef int (*mwCipherProcessor) | |
| (struct mwCipherInstance *ci, struct mwOpaque *data); | | (struct mwCipherInstance *ci, struct mwOpaque *data); | |
| | | | |
| /** A cipher. Ciphers are primarily used to provide cipher instances | | /** A cipher. Ciphers are primarily used to provide cipher instances | |
| for bi-directional encryption on channels, but some may be used | | for bi-directional encryption on channels, but some may be used | |
| for other activities. Expand upon this structure to create a | | for other activities. Expand upon this structure to create a | |
| | | | |
| skipping to change at line 80 | | skipping to change at line 76 | |
| struct mwSession *session; | | struct mwSession *session; | |
| | | | |
| guint16 type; /**< @see mwCipher_getType */ | | guint16 type; /**< @see mwCipher_getType */ | |
| const char *(*get_name)(); /**< @see mwCipher_getName */ | | const char *(*get_name)(); /**< @see mwCipher_getName */ | |
| const char *(*get_desc)(); /**< @see mwCipher_getDesc */ | | const char *(*get_desc)(); /**< @see mwCipher_getDesc */ | |
| | | | |
| /** Generate a new Cipher Instance for use on a channel | | /** Generate a new Cipher Instance for use on a channel | |
| @see mwCipher_newInstance */ | | @see mwCipher_newInstance */ | |
| mwCipherInstantiator new_instance; | | mwCipherInstantiator new_instance; | |
| | | | |
|
| /** @see mwCipher_newItem | | | |
| @todo remove for 1.0 | | | |
| */ | | | |
| mwCipherDescriptor new_item; | | | |
| | | | |
| void (*offered)(struct mwCipherInstance *ci, struct mwEncryptItem *item); | | void (*offered)(struct mwCipherInstance *ci, struct mwEncryptItem *item); | |
| struct mwEncryptItem *(*offer)(struct mwCipherInstance *ci); | | struct mwEncryptItem *(*offer)(struct mwCipherInstance *ci); | |
| void (*accepted)(struct mwCipherInstance *ci, struct mwEncryptItem *item)
; | | void (*accepted)(struct mwCipherInstance *ci, struct mwEncryptItem *item)
; | |
| struct mwEncryptItem *(*accept)(struct mwCipherInstance *ci); | | struct mwEncryptItem *(*accept)(struct mwCipherInstance *ci); | |
| | | | |
| mwCipherProcessor encrypt; /**< @see mwCipherInstance_encrypt */ | | mwCipherProcessor encrypt; /**< @see mwCipherInstance_encrypt */ | |
| mwCipherProcessor decrypt; /**< @see mwCipherInstance_decrypt */ | | mwCipherProcessor decrypt; /**< @see mwCipherInstance_decrypt */ | |
| | | | |
| /** prepare this cipher for being free'd | | /** prepare this cipher for being free'd | |
| @see mwCipher_free */ | | @see mwCipher_free */ | |
| | | | |
| skipping to change at line 137 | | skipping to change at line 128 | |
| | | | |
| struct mwCipherInstance *mwCipher_newInstance(struct mwCipher *cipher, | | struct mwCipherInstance *mwCipher_newInstance(struct mwCipher *cipher, | |
| struct mwChannel *channel); | | struct mwChannel *channel); | |
| | | | |
| /** destroy a cipher */ | | /** destroy a cipher */ | |
| void mwCipher_free(struct mwCipher* cipher); | | void mwCipher_free(struct mwCipher* cipher); | |
| | | | |
| /** reference the parent cipher of an instance */ | | /** reference the parent cipher of an instance */ | |
| struct mwCipher *mwCipherInstance_getCipher(struct mwCipherInstance *ci); | | struct mwCipher *mwCipherInstance_getCipher(struct mwCipherInstance *ci); | |
| | | | |
|
| /** | | /** reference the channel a cipher instance is attached to */ | |
| Deprecated in favor of the methods mwCipherInstance_offer and | | struct mwChannel *mwCipherInstance_getChannel(struct mwCipherInstance *ci); | |
| mwCipherInstance_accept | | | |
| */ | | | |
| struct mwEncryptItem *mwCipherInstance_newItem(struct mwCipherInstance *ci) | | | |
| ; | | | |
| | | | |
| /** Indicates a cipher has been offered to our channel */ | | /** Indicates a cipher has been offered to our channel */ | |
| void mwCipherInstance_offered(struct mwCipherInstance *ci, | | void mwCipherInstance_offered(struct mwCipherInstance *ci, | |
| struct mwEncryptItem *item); | | struct mwEncryptItem *item); | |
| | | | |
| /** Offer a cipher */ | | /** Offer a cipher */ | |
| struct mwEncryptItem * | | struct mwEncryptItem * | |
| mwCipherInstance_offer(struct mwCipherInstance *ci); | | mwCipherInstance_offer(struct mwCipherInstance *ci); | |
| | | | |
| /** Indicates an offered cipher has been accepted */ | | /** Indicates an offered cipher has been accepted */ | |
| | | | |
| skipping to change at line 182 | | skipping to change at line 170 | |
| | | | |
| These functions are reused where encryption is necessary outside of | | These functions are reused where encryption is necessary outside of | |
| a channel (eg. session authentication) | | a channel (eg. session authentication) | |
| */ | | */ | |
| /* @{ */ | | /* @{ */ | |
| | | | |
| /** generate some pseudo-random bytes | | /** generate some pseudo-random bytes | |
| @param keylen count of bytes to write into key | | @param keylen count of bytes to write into key | |
| @param key buffer to write keys into | | @param key buffer to write keys into | |
| */ | | */ | |
|
| void mwKeyRandom(char *key, gsize keylen); | | void mwKeyRandom(guchar *key, gsize keylen); | |
| | | | |
| /** Setup an Initialization Vector. IV must be at least 8 bytes */ | | /** Setup an Initialization Vector. IV must be at least 8 bytes */ | |
|
| void mwIV_init(char *iv); | | void mwIV_init(guchar *iv); | |
| | | | |
| /** Expand a variable-length key into a 128-byte key (represented as | | /** Expand a variable-length key into a 128-byte key (represented as | |
| an an array of 64 ints) */ | | an an array of 64 ints) */ | |
|
| void mwKeyExpand(int *ekey, const char *key, gsize keylen); | | void mwKeyExpand(int *ekey, const guchar *key, gsize keylen); | |
| | | | |
| /** Encrypt data using an already-expanded key */ | | /** Encrypt data using an already-expanded key */ | |
|
| void mwEncryptExpanded(const int *ekey, char *iv, | | void mwEncryptExpanded(const int *ekey, guchar *iv, | |
| struct mwOpaque *in, | | struct mwOpaque *in, | |
| struct mwOpaque *out); | | struct mwOpaque *out); | |
| | | | |
| /** Encrypt data using an expanded form of the given key */ | | /** Encrypt data using an expanded form of the given key */ | |
|
| void mwEncrypt(const char *key, gsize keylen, char *iv, | | void mwEncrypt(const guchar *key, gsize keylen, guchar *iv, | |
| struct mwOpaque *in, struct mwOpaque *out); | | struct mwOpaque *in, struct mwOpaque *out); | |
| | | | |
| /** Decrypt data using an already expanded key */ | | /** Decrypt data using an already expanded key */ | |
|
| void mwDecryptExpanded(const int *ekey, char *iv, | | void mwDecryptExpanded(const int *ekey, guchar *iv, | |
| struct mwOpaque *in, | | struct mwOpaque *in, | |
| struct mwOpaque *out); | | struct mwOpaque *out); | |
| | | | |
| /** Decrypt data using an expanded form of the given key */ | | /** Decrypt data using an expanded form of the given key */ | |
|
| void mwDecrypt(const char *key, gsize keylen, char *iv, | | void mwDecrypt(const guchar *key, gsize keylen, guchar *iv, | |
| struct mwOpaque *in, struct mwOpaque *out); | | struct mwOpaque *in, struct mwOpaque *out); | |
| | | | |
| /* @} */ | | /* @} */ | |
| | | | |
| /** | | /** | |
| @section Diffie-Hellman Functions | | @section Diffie-Hellman Functions | |
| | | | |
| These functions are reused where DH Key negotiation is necessary | | These functions are reused where DH Key negotiation is necessary | |
|
| outside of a channel (eg. session authentication). You'll need to | | outside of a channel (eg. session authentication). These are | |
| include <gmp.h> in order to use these functions. | | wrapping a full multiple-precision integer math library, but most of | |
| | | the functionality there-of is not exposed. Currently, the math is | |
| | | provided by a copy of the public domain libmpi. | |
| | | | |
| | | for more information on the used MPI Library, visit | |
| | | http://www.cs.dartmouth.edu/~sting/mpi/ | |
| */ | | */ | |
| /* @{ */ | | /* @{ */ | |
|
| #ifdef __GMP_H__ | | | |
| | | | |
|
| /** initialize and set a big integer to the Sametime Prime value */ | | /** @struct mwMpi */ | |
| void mwInitDHPrime(mpz_t z); | | struct mwMpi; | |
| | | | |
|
| /** initialize and set a big integer to the Sametime Base value */ | | /** prepare a new mpi value */ | |
| void mwInitDHBase(mpz_t z); | | struct mwMpi *mwMpi_new(); | |
| | | | |
| | | /** destroy an mpi value */ | |
| | | void mwMpi_free(struct mwMpi *i); | |
| | | | |
| | | /** Import a value from an opaque */ | |
| | | void mwMpi_import(struct mwMpi *i, struct mwOpaque *o); | |
| | | | |
| | | /** Export a value into an opaque */ | |
| | | void mwMpi_export(struct mwMpi *i, struct mwOpaque *o); | |
| | | | |
| | | /** set a big integer to the Sametime Prime value */ | |
| | | void mwMpi_setDHPrime(struct mwMpi *i); | |
| | | | |
| | | /** set a big integer to the Sametime Base value */ | |
| | | void mwMpi_setDHBase(struct mwMpi *i); | |
| | | | |
| /** sets private to a randomly generated value, and calculates public | | /** sets private to a randomly generated value, and calculates public | |
| using the Sametime Prime and Base */ | | using the Sametime Prime and Base */ | |
|
| void mwDHRandKeypair(mpz_t private, mpz_t public); | | void mwMpi_randDHKeypair(struct mwMpi *private, struct mwMpi *public); | |
| | | | |
| /** sets the shared key value based on the remote and private keys, | | /** sets the shared key value based on the remote and private keys, | |
| using the Sametime Prime and Base */ | | using the Sametime Prime and Base */ | |
|
| void mwDHCalculateShared(mpz_t shared, mpz_t remote, mpz_t private); | | void mwMpi_calculateDHShared(struct mwMpi *shared, struct mwMpi *remote, | |
| | | struct mwMpi *private); | |
| /** Import a DH key from an opaque */ | | | |
| void mwDHImportKey(mpz_t key, struct mwOpaque *o); | | | |
| | | | |
| /** Export a DH key into an opaque */ | | | |
| void mwDHExportKey(mpz_t key, struct mwOpaque *o); | | | |
| | | | |
|
| #endif | | | |
| /* @} */ | | /* @} */ | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_CIPHER_H */ | |
| | | | |
End of changes. 20 change blocks. |
| 42 lines changed or deleted | | 44 lines changed or added | |
|
| mw_common.h | | mw_common.h | |
| | | | |
| skipping to change at line 24 | | skipping to change at line 24 | |
| Library General Public License for more details. | | Library General Public License for more details. | |
| | | | |
| You should have received a copy of the GNU Library General Public | | You should have received a copy of the GNU Library General Public | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_COMMON_H | | #ifndef _MW_COMMON_H | |
| #define _MW_COMMON_H | | #define _MW_COMMON_H | |
| | | | |
|
| #include <glib.h> | | | |
| | | | |
| /** @file mw_common.h | | /** @file mw_common.h | |
| | | | |
| Common data types and functions for handling those types. | | Common data types and functions for handling those types. | |
| | | | |
| Functions in this file all fit into similar naming conventions of | | Functions in this file all fit into similar naming conventions of | |
| <code>TYPE_ACTION</code> as per the activity they perform. The | | <code>TYPE_ACTION</code> as per the activity they perform. The | |
| following actions are available: | | following actions are available: | |
| | | | |
| <code>void TYPE_put(struct mwPutBuffer *b, TYPE *val)</code> | | <code>void TYPE_put(struct mwPutBuffer *b, TYPE *val)</code> | |
| - marshalls val onto the buffer b. The buffer will grow as necessary | | - marshalls val onto the buffer b. The buffer will grow as necessary | |
| | | | |
| skipping to change at line 61 | | skipping to change at line 59 | |
| | | | |
| <code>void TYPE_clone(TYPE *to, TYPE *from)</code> | | <code>void TYPE_clone(TYPE *to, TYPE *from)</code> | |
| - copies/clones members of from into to. May result in memory | | - copies/clones members of from into to. May result in memory | |
| allocation for some types. Note that to is not cleared | | allocation for some types. Note that to is not cleared | |
| before-hand, it must already be in a pristine condition. | | before-hand, it must already be in a pristine condition. | |
| | | | |
| <code>gboolean TYPE_equal(TYPE *y, TYPE *z)</code> | | <code>gboolean TYPE_equal(TYPE *y, TYPE *z)</code> | |
| - simple equality test. | | - simple equality test. | |
| */ | | */ | |
| | | | |
|
| | | #include <glib.h> | |
| | | | |
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| /** @struct mwPutBuffer | | /** @struct mwPutBuffer | |
| buffer to be written to */ | | buffer to be written to */ | |
| struct mwPutBuffer; | | struct mwPutBuffer; | |
| | | | |
| /** @struct mwGetBuffer | | /** @struct mwGetBuffer | |
| buffer to be read from */ | | buffer to be read from */ | |
| struct mwGetBuffer; | | struct mwGetBuffer; | |
| | | | |
| /** A length of binary data, not null-terminated. */ | | /** A length of binary data, not null-terminated. */ | |
| struct mwOpaque { | | struct mwOpaque { | |
|
| gsize len; /**< length of data. */ | | gsize len; /**< length of data. */ | |
| char *data; /**< data, normally with no NULL termination */ | | guchar *data; /**< data, normally with no NULL termination */ | |
| }; | | }; | |
| | | | |
| /* 8.3.6 Login Types */ | | /* 8.3.6 Login Types */ | |
| | | | |
| /** The type of login. Normally meaning the type of client code being | | /** The type of login. Normally meaning the type of client code being | |
| used to login with. | | used to login with. | |
| | | | |
| If you know of any additional client identifiers, please add them | | If you know of any additional client identifiers, please add them | |
|
| below. | | below or submit an RFE to the meanwhile tracker. | |
| | | | |
| If you are using Meanwhile in your client code and would like to | | | |
| differentiate yourself, please email siege at preoccupied dot net | | | |
| with all the relevant information you can think of and I'll add it | | | |
| to the text mapping as well | | | |
| | | | |
| @see mwLoginType_getName | | | |
| */ | | */ | |
| enum mwLoginType { | | enum mwLoginType { | |
| mwLogin_LIB = 0x1000, /**< official Lotus binary library */ | | mwLogin_LIB = 0x1000, /**< official Lotus binary library */ | |
| mwLogin_JAVA_WEB = 0x1001, /**< official Lotus Java applet */ | | mwLogin_JAVA_WEB = 0x1001, /**< official Lotus Java applet */ | |
| mwLogin_BINARY = 0x1002, /**< official Lotus binary application *
/ | | mwLogin_BINARY = 0x1002, /**< official Lotus binary application *
/ | |
| mwLogin_JAVA_APP = 0x1003, /**< official Lotus Java application */ | | mwLogin_JAVA_APP = 0x1003, /**< official Lotus Java application */ | |
| mwLogin_LINKS = 0x100a, /**< official Sametime Links toolkit */ | | mwLogin_LINKS = 0x100a, /**< official Sametime Links toolkit */ | |
| | | | |
| /* now we're getting crazy */ | | /* now we're getting crazy */ | |
| mwLogin_NOTES_6_5 = 0x1200, | | mwLogin_NOTES_6_5 = 0x1200, | |
|
| mwLogin_NOTES_7_0 = 0x1210, | | mwLogin_NOTES_6_5_3 = 0x1203, | |
| | | mwLogin_NOTES_7_0_beta = 0x1210, | |
| | | mwLogin_NOTES_7_0 = 0x1214, | |
| mwLogin_ICT = 0x1300, | | mwLogin_ICT = 0x1300, | |
| mwLogin_ICT_1_7_8_2 = 0x1302, | | mwLogin_ICT_1_7_8_2 = 0x1302, | |
|
| mwLogin_NOTESBUDDY = 0x1400, /**< 0xff00 mask? */ | | mwLogin_ICT_SIP = 0x1303, | |
| | | mwLogin_NOTESBUDDY_4_14 = 0x1400, /**< 0xff00 mask? */ | |
| mwLogin_NOTESBUDDY_4_15 = 0x1405, | | mwLogin_NOTESBUDDY_4_15 = 0x1405, | |
|
| | | mwLogin_NOTESBUDDY_4_16 = 0x1406, | |
| mwLogin_SANITY = 0x1600, | | mwLogin_SANITY = 0x1600, | |
| mwLogin_ST_PERL = 0x1625, | | mwLogin_ST_PERL = 0x1625, | |
| mwLogin_PMR_ALERT = 0x1650, | | mwLogin_PMR_ALERT = 0x1650, | |
| mwLogin_TRILLIAN = 0x16aa, /**< http://sf.net/st-plugin/ */ | | mwLogin_TRILLIAN = 0x16aa, /**< http://sf.net/st-plugin/ */ | |
| mwLogin_TRILLIAN_IBM = 0x16bb, | | mwLogin_TRILLIAN_IBM = 0x16bb, | |
| mwLogin_MEANWHILE = 0x1700, /**< Meanwhile library */ | | mwLogin_MEANWHILE = 0x1700, /**< Meanwhile library */ | |
| }; | | }; | |
| | | | |
| /* 8.2 Common Structures */ | | /* 8.2 Common Structures */ | |
| /* 8.2.1 Login Info block */ | | /* 8.2.1 Login Info block */ | |
| | | | |
| skipping to change at line 257 | | skipping to change at line 258 | |
| | | | |
| /** count of remaining available bytes */ | | /** count of remaining available bytes */ | |
| gsize mwGetBuffer_remaining(struct mwGetBuffer *b); | | gsize mwGetBuffer_remaining(struct mwGetBuffer *b); | |
| | | | |
| /** TRUE if an error occurred while reading a basic type from this | | /** TRUE if an error occurred while reading a basic type from this | |
| buffer */ | | buffer */ | |
| gboolean mwGetBuffer_error(struct mwGetBuffer *b); | | gboolean mwGetBuffer_error(struct mwGetBuffer *b); | |
| | | | |
| /*@}*/ | | /*@}*/ | |
| | | | |
|
| /** provides a textual name for a given login type. If the type is not | | /** @name Basic Data Types | |
| known by name, returns NULL */ | | The basic types are combined to construct the compound types. | |
| const char *mwLoginType_getName(enum mwLoginType type); | | | |
| | | | |
| /** @name Basic Data Type Marshalling | | | |
| The basic types are combined to construct the complex types. | | | |
| */ | | */ | |
| /*@{*/ | | /*@{*/ | |
| | | | |
| void guint16_put(struct mwPutBuffer *b, guint16 val); | | void guint16_put(struct mwPutBuffer *b, guint16 val); | |
| | | | |
| void guint16_get(struct mwGetBuffer *b, guint16 *val); | | void guint16_get(struct mwGetBuffer *b, guint16 *val); | |
| | | | |
| guint16 guint16_peek(struct mwGetBuffer *b); | | guint16 guint16_peek(struct mwGetBuffer *b); | |
| | | | |
| void guint32_put(struct mwPutBuffer *b, guint32 val); | | void guint32_put(struct mwPutBuffer *b, guint32 val); | |
| | | | |
| skipping to change at line 300 | | skipping to change at line 297 | |
| void mwOpaque_get(struct mwGetBuffer *b, struct mwOpaque *o); | | void mwOpaque_get(struct mwGetBuffer *b, struct mwOpaque *o); | |
| | | | |
| void mwOpaque_clear(struct mwOpaque *o); | | void mwOpaque_clear(struct mwOpaque *o); | |
| | | | |
| void mwOpaque_free(struct mwOpaque *o); | | void mwOpaque_free(struct mwOpaque *o); | |
| | | | |
| void mwOpaque_clone(struct mwOpaque *to, const struct mwOpaque *from); | | void mwOpaque_clone(struct mwOpaque *to, const struct mwOpaque *from); | |
| | | | |
| /*@}*/ | | /*@}*/ | |
| | | | |
|
| /** @name Complex Data Type Marshalling */ | | /** @name Compound Data Types */ | |
| /*@{*/ | | /*@{*/ | |
| | | | |
| void mwLoginInfo_put(struct mwPutBuffer *b, const struct mwLoginInfo *info)
; | | void mwLoginInfo_put(struct mwPutBuffer *b, const struct mwLoginInfo *info)
; | |
| | | | |
| void mwLoginInfo_get(struct mwGetBuffer *b, struct mwLoginInfo *info); | | void mwLoginInfo_get(struct mwGetBuffer *b, struct mwLoginInfo *info); | |
| | | | |
| void mwLoginInfo_clear(struct mwLoginInfo *info); | | void mwLoginInfo_clear(struct mwLoginInfo *info); | |
| | | | |
| void mwLoginInfo_clone(struct mwLoginInfo *to, const struct mwLoginInfo *fr
om); | | void mwLoginInfo_clone(struct mwLoginInfo *to, const struct mwLoginInfo *fr
om); | |
| | | | |
| | | | |
| skipping to change at line 387 | | skipping to change at line 384 | |
| const struct mwEncryptItem *item); | | const struct mwEncryptItem *item); | |
| | | | |
| void mwEncryptItem_get(struct mwGetBuffer *b, struct mwEncryptItem *item); | | void mwEncryptItem_get(struct mwGetBuffer *b, struct mwEncryptItem *item); | |
| | | | |
| void mwEncryptItem_clear(struct mwEncryptItem *item); | | void mwEncryptItem_clear(struct mwEncryptItem *item); | |
| | | | |
| void mwEncryptItem_free(struct mwEncryptItem *item); | | void mwEncryptItem_free(struct mwEncryptItem *item); | |
| | | | |
| /*@}*/ | | /*@}*/ | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_COMMON_H */ | |
| | | | |
End of changes. 11 change blocks. |
| 21 lines changed or deleted | | 20 lines changed or added | |
|
| mw_error.h | | mw_error.h | |
| | | | |
| skipping to change at line 24 | | skipping to change at line 24 | |
| Library General Public License for more details. | | Library General Public License for more details. | |
| | | | |
| You should have received a copy of the GNU Library General Public | | You should have received a copy of the GNU Library General Public | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_ERROR_H | | #ifndef _MW_ERROR_H | |
| #define _MW_ERROR_H | | #define _MW_ERROR_H | |
| | | | |
|
| #include <glib.h> | | | |
| | | | |
| /** @file mw_error.h | | /** @file mw_error.h | |
| | | | |
| Common error code constants used by Meanwhile. | | Common error code constants used by Meanwhile. | |
| | | | |
| Not all of these error codes (or even many, really) will ever | | Not all of these error codes (or even many, really) will ever | |
| actually appear from Meanwhile. These are taken directly from the | | actually appear from Meanwhile. These are taken directly from the | |
| houri draft, along with the minimal explanation for each. | | houri draft, along with the minimal explanation for each. | |
| */ | | */ | |
| | | | |
|
| | | #include <glib.h> | |
| | | | |
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| /** reference to a new string appropriate for the given error code.*/ | | /** reference to a new string appropriate for the given error code.*/ | |
| char* mwError(guint32 code); | | char* mwError(guint32 code); | |
| | | | |
| /* 8.3 Constants */ | | /* 8.3 Constants */ | |
| /* 8.3.1 Error Codes */ | | /* 8.3.1 Error Codes */ | |
| /* 8.3.1.1 General error/success codes */ | | /* 8.3.1.1 General error/success codes */ | |
| | | | |
| /** @enum ERR_GENERAL | | /** @enum ERR_GENERAL | |
| general error codes */ | | general error codes */ | |
| enum ERR_GENERAL { | | enum ERR_GENERAL { | |
| | | | |
| skipping to change at line 156 | | skipping to change at line 160 | |
| enum ERR_IM { | | enum ERR_IM { | |
| ERR_IM_COULDNT_REGISTER = 0x80002003, | | ERR_IM_COULDNT_REGISTER = 0x80002003, | |
| ERR_IM_ALREADY_REGISTERED = 0x80002004, | | ERR_IM_ALREADY_REGISTERED = 0x80002004, | |
| | | | |
| /** apparently, this is used to mean that the requested feature (per | | /** apparently, this is used to mean that the requested feature (per | |
| the channel create addtl data) is not supported by the client on | | the channel create addtl data) is not supported by the client on | |
| the other end of the IM channel */ | | the other end of the IM channel */ | |
| ERR_IM_NOT_REGISTERED = 0x80002005, | | ERR_IM_NOT_REGISTERED = 0x80002005, | |
| }; | | }; | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_ERROR_H */ | |
| | | | |
End of changes. 4 change blocks. |
| 2 lines changed or deleted | | 8 lines changed or added | |
|
| mw_session.h | | mw_session.h | |
| | | | |
| skipping to change at line 47 | | skipping to change at line 47 | |
| | | | |
| A session does not perform reads on a socket directly. Instead, it | | A session does not perform reads on a socket directly. Instead, it | |
| must be fed from an outside source via the mwSession_recv | | must be fed from an outside source via the mwSession_recv | |
| function. The session will buffer and merge data passed to this | | function. The session will buffer and merge data passed to this | |
| function to build complete protocol messages, and will act upon | | function to build complete protocol messages, and will act upon | |
| each complete message accordingly. | | each complete message accordingly. | |
| */ | | */ | |
| | | | |
| #include "mw_common.h" | | #include "mw_common.h" | |
| | | | |
|
| | | #ifdef __cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| struct mwChannelSet; | | struct mwChannelSet; | |
| struct mwCipher; | | struct mwCipher; | |
| struct mwMessage; | | struct mwMessage; | |
| struct mwService; | | struct mwService; | |
| | | | |
| /** default protocol major version */ | | /** default protocol major version */ | |
| #define MW_PROTOCOL_VERSION_MAJOR 0x001e | | #define MW_PROTOCOL_VERSION_MAJOR 0x001e | |
| | | | |
| /** default protocol minor version */ | | /** default protocol minor version */ | |
| #define MW_PROTOCOL_VERSION_MINOR 0x001d | | #define MW_PROTOCOL_VERSION_MINOR 0x001d | |
| | | | |
| skipping to change at line 143 | | skipping to change at line 147 | |
| struct mwSession; | | struct mwSession; | |
| | | | |
| /** @struct mwSessionHandler | | /** @struct mwSessionHandler | |
| | | | |
| session handler. Structure which interfaces a session with client | | session handler. Structure which interfaces a session with client | |
| code to provide I/O and event handling */ | | code to provide I/O and event handling */ | |
| struct mwSessionHandler { | | struct mwSessionHandler { | |
| | | | |
| /** write data to the server connection. Required. Should return | | /** write data to the server connection. Required. Should return | |
| zero for success, non-zero for error */ | | zero for success, non-zero for error */ | |
|
| int (*io_write)(struct mwSession *, const char *buf, gsize len); | | int (*io_write)(struct mwSession *, const guchar *buf, gsize len); | |
| | | | |
| /** close the server connection. Required */ | | /** close the server connection. Required */ | |
| void (*io_close)(struct mwSession *); | | void (*io_close)(struct mwSession *); | |
| | | | |
| /** triggered by mwSession_free. Optional. Put cleanup code here */ | | /** triggered by mwSession_free. Optional. Put cleanup code here */ | |
| void (*clear)(struct mwSession *); | | void (*clear)(struct mwSession *); | |
| | | | |
| /** Called when the session has changed status. | | /** Called when the session has changed status. | |
| | | | |
| @see mwSession_getStateInfo for uses of info field | | @see mwSession_getStateInfo for uses of info field | |
| | | | |
| skipping to change at line 201 | | skipping to change at line 205 | |
| /** instruct the session to begin. This will result in the initial | | /** instruct the session to begin. This will result in the initial | |
| handshake message being sent. */ | | handshake message being sent. */ | |
| void mwSession_start(struct mwSession *); | | void mwSession_start(struct mwSession *); | |
| | | | |
| /** instruct the session to shut down with the following reason | | /** instruct the session to shut down with the following reason | |
| code. */ | | code. */ | |
| void mwSession_stop(struct mwSession *, guint32 reason); | | void mwSession_stop(struct mwSession *, guint32 reason); | |
| | | | |
| /** Data is buffered, unpacked, and parsed into a message, then | | /** Data is buffered, unpacked, and parsed into a message, then | |
| processed accordingly. */ | | processed accordingly. */ | |
|
| void mwSession_recv(struct mwSession *, const char *, gsize); | | void mwSession_recv(struct mwSession *, const guchar *, gsize); | |
| | | | |
| /** primarily used by services to have messages serialized and sent | | /** primarily used by services to have messages serialized and sent | |
| @param s session to send message over | | @param s session to send message over | |
| @param msg message to serialize and send | | @param msg message to serialize and send | |
| @returns 0 for success */ | | @returns 0 for success */ | |
| int mwSession_send(struct mwSession *s, struct mwMessage *msg); | | int mwSession_send(struct mwSession *s, struct mwMessage *msg); | |
| | | | |
| /** sends the keepalive byte */ | | /** sends the keepalive byte */ | |
| int mwSession_sendKeepalive(struct mwSession *s); | | int mwSession_sendKeepalive(struct mwSession *s); | |
| | | | |
| | | | |
| skipping to change at line 342 | | skipping to change at line 346 | |
| */ | | */ | |
| void mwSession_setClientData(struct mwSession *session, | | void mwSession_setClientData(struct mwSession *session, | |
| gpointer data, GDestroyNotify clear); | | gpointer data, GDestroyNotify clear); | |
| | | | |
| gpointer mwSession_getClientData(struct mwSession *session); | | gpointer mwSession_getClientData(struct mwSession *session); | |
| | | | |
| /** remove client data, calling the optional GDestroyNotify function | | /** remove client data, calling the optional GDestroyNotify function | |
| indicated in mwSession_setClientData if applicable */ | | indicated in mwSession_setClientData if applicable */ | |
| void mwSession_removeClientData(struct mwSession *session); | | void mwSession_removeClientData(struct mwSession *session); | |
| | | | |
|
| | | #ifdef __cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_SESSION_H */ | |
| | | | |
End of changes. 5 change blocks. |
| 2 lines changed or deleted | | 8 lines changed or added | |
|
| mw_srvc_aware.h | | mw_srvc_aware.h | |
| | | | |
| skipping to change at line 24 | | skipping to change at line 24 | |
| Library General Public License for more details. | | Library General Public License for more details. | |
| | | | |
| You should have received a copy of the GNU Library General Public | | You should have received a copy of the GNU Library General Public | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_SRVC_AWARE_H | | #ifndef _MW_SRVC_AWARE_H | |
| #define _MW_SRVC_AWARE_H | | #define _MW_SRVC_AWARE_H | |
| | | | |
|
| #include "mw_common.h" | | | |
| | | | |
| /** @file mw_srvc_aware.h | | /** @file mw_srvc_aware.h | |
| | | | |
| The aware service... | | The aware service... | |
| | | | |
| @todo remove the whole idea of an instantiated mwAwareList and | | @todo remove the whole idea of an instantiated mwAwareList and | |
| instead use arbitrary pointers (including NULL) as keys to | | instead use arbitrary pointers (including NULL) as keys to | |
| internally stored lists. This removes the problem of the service | | internally stored lists. This removes the problem of the service | |
| free'ing its lists and invalidating mwAwareList references from | | free'ing its lists and invalidating mwAwareList references from | |
| client code. | | client code. | |
| */ | | */ | |
| | | | |
|
| | | #include "mw_common.h" | |
| | | | |
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| /** Type identifier for the aware service */ | | /** Type identifier for the aware service */ | |
| #define mwService_AWARE 0x00000011 | | #define mwService_AWARE 0x00000011 | |
| | | | |
| /** @struct mwServiceAware | | /** @struct mwServiceAware | |
| | | | |
| Instance of an Aware Service. The members of this structure are | | Instance of an Aware Service. The members of this structure are | |
| not made available. Accessing the parts of an aware service should | | not made available. Accessing the parts of an aware service should | |
| be performed through the appropriate functions. Note that | | be performed through the appropriate functions. Note that | |
| instances of this structure can be safely cast to a mwService. | | instances of this structure can be safely cast to a mwService. | |
| */ | | */ | |
| | | | |
| skipping to change at line 226 | | skipping to change at line 230 | |
| const char *mwServiceAware_getText(struct mwServiceAware *srvc, | | const char *mwServiceAware_getText(struct mwServiceAware *srvc, | |
| struct mwAwareIdBlock *user); | | struct mwAwareIdBlock *user); | |
| | | | |
| /** look up the last known copy of an attribute for a user by the | | /** look up the last known copy of an attribute for a user by the | |
| attribute's key */ | | attribute's key */ | |
| const struct mwAwareAttribute * | | const struct mwAwareAttribute * | |
| mwServiceAware_getAttribute(struct mwServiceAware *srvc, | | mwServiceAware_getAttribute(struct mwServiceAware *srvc, | |
| struct mwAwareIdBlock *user, | | struct mwAwareIdBlock *user, | |
| guint32 key); | | guint32 key); | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_SRVC_AWARE_H */ | |
| | | | |
End of changes. 4 change blocks. |
| 2 lines changed or deleted | | 8 lines changed or added | |
|
| mw_srvc_conf.h | | mw_srvc_conf.h | |
| | | | |
| skipping to change at line 27 | | skipping to change at line 27 | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_SRVC_CONF_H | | #ifndef _MW_SRVC_CONF_H | |
| #define _MW_SRVC_CONF_H | | #define _MW_SRVC_CONF_H | |
| | | | |
| #include <glib/glist.h> | | #include <glib/glist.h> | |
| #include "mw_common.h" | | #include "mw_common.h" | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| /** Type identifier for the conference service */ | | /** Type identifier for the conference service */ | |
| #define mwService_CONFERENCE 0x80000010 | | #define mwService_CONFERENCE 0x80000010 | |
| | | | |
| enum mwConferenceState { | | enum mwConferenceState { | |
| mwConference_NEW, /**< new outgoing conference */ | | mwConference_NEW, /**< new outgoing conference */ | |
| mwConference_PENDING, /**< outgoing conference pending creation */ | | mwConference_PENDING, /**< outgoing conference pending creation */ | |
| mwConference_INVITED, /**< invited to incoming conference */ | | mwConference_INVITED, /**< invited to incoming conference */ | |
| mwConference_OPEN, /**< conference open and active */ | | mwConference_OPEN, /**< conference open and active */ | |
| mwConference_CLOSING, /**< conference is closing */ | | mwConference_CLOSING, /**< conference is closing */ | |
| mwConference_ERROR, /**< conference is closing due to error */ | | mwConference_ERROR, /**< conference is closing due to error */ | |
| | | | |
| skipping to change at line 173 | | skipping to change at line 177 | |
| void mwConference_setClientData(struct mwConference *conf, | | void mwConference_setClientData(struct mwConference *conf, | |
| gpointer data, GDestroyNotify clear); | | gpointer data, GDestroyNotify clear); | |
| | | | |
| /** reference associated client data */ | | /** reference associated client data */ | |
| gpointer mwConference_getClientData(struct mwConference *conf); | | gpointer mwConference_getClientData(struct mwConference *conf); | |
| | | | |
| /** remove associated client data if any, and call the cleanup | | /** remove associated client data if any, and call the cleanup | |
| function on the data as necessary */ | | function on the data as necessary */ | |
| void mwConference_removeClientData(struct mwConference *conf); | | void mwConference_removeClientData(struct mwConference *conf); | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_SRVC_CONF_H */ | |
| | | | |
End of changes. 3 change blocks. |
| 0 lines changed or deleted | | 6 lines changed or added | |
|
| mw_srvc_im.h | | mw_srvc_im.h | |
| | | | |
| skipping to change at line 24 | | skipping to change at line 24 | |
| Library General Public License for more details. | | Library General Public License for more details. | |
| | | | |
| You should have received a copy of the GNU Library General Public | | You should have received a copy of the GNU Library General Public | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_SRVC_IM_H | | #ifndef _MW_SRVC_IM_H | |
| #define _MW_SRVC_IM_H | | #define _MW_SRVC_IM_H | |
| | | | |
|
| #include <glib.h> | | | |
| #include "mw_common.h" | | | |
| | | | |
| /** @file mw_srvc_im.h | | /** @file mw_srvc_im.h | |
| | | | |
| The IM service provides one-on-one communication between | | The IM service provides one-on-one communication between | |
| users. Messages sent over conversations may relay different types | | users. Messages sent over conversations may relay different types | |
| of information, in a variety of formats. The basic feature-set | | of information, in a variety of formats. The basic feature-set | |
| provides plain-text chat with typing notification. More complex | | provides plain-text chat with typing notification. More complex | |
| features may be negotiated transparently by setting the IM Client | | features may be negotiated transparently by setting the IM Client | |
| Type for a conversation, or for the service as a whole. | | Type for a conversation, or for the service as a whole. | |
|
| */ | | */ | |
| | | | |
|
| /** Type identifier for the IM service */ | | #include <glib.h> | |
| | | #include "mw_common.h" | |
| | | | |
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| | | /* identifier for the IM service */ | |
| #define mwService_IM 0x00001000 | | #define mwService_IM 0x00001000 | |
| | | | |
| /** @struct mwServiceIm | | /** @struct mwServiceIm | |
| | | | |
| An instance of the IM service. This service provides simple | | An instance of the IM service. This service provides simple | |
| instant messaging functionality */ | | instant messaging functionality */ | |
| struct mwServiceIm; | | struct mwServiceIm; | |
| | | | |
| /** @struct mwConversation | | /** @struct mwConversation | |
| | | | |
| | | | |
| skipping to change at line 78 | | skipping to change at line 82 | |
| @see mwConversation_supports | | @see mwConversation_supports | |
| @see mwConversation_send | | @see mwConversation_send | |
| @see mwServiceImHandler::conversation_recv | | @see mwServiceImHandler::conversation_recv | |
| */ | | */ | |
| enum mwImSendType { | | enum mwImSendType { | |
| mwImSend_PLAIN, /**< char *, plain-text message */ | | mwImSend_PLAIN, /**< char *, plain-text message */ | |
| mwImSend_TYPING, /**< gboolean, typing status */ | | mwImSend_TYPING, /**< gboolean, typing status */ | |
| mwImSend_HTML, /**< char *, HTML formatted message (NOTESBUDDY) */ | | mwImSend_HTML, /**< char *, HTML formatted message (NOTESBUDDY) */ | |
| mwImSend_SUBJECT, /**< char *, conversation subject (NOTESBUDDY) */ | | mwImSend_SUBJECT, /**< char *, conversation subject (NOTESBUDDY) */ | |
| mwImSend_MIME, /**< char *, MIME-encoded message (NOTESBUDDY) */ | | mwImSend_MIME, /**< char *, MIME-encoded message (NOTESBUDDY) */ | |
|
| | | mwImSend_TIMESTAMP, /**< char *, YYYY:MM:DD:HH:mm:SS format (NOTESBUDDY)
*/ | |
| }; | | }; | |
| | | | |
| /** @see mwConversation_getState */ | | /** @see mwConversation_getState */ | |
| enum mwConversationState { | | enum mwConversationState { | |
| mwConversation_CLOSED, /**< conversation is not open */ | | mwConversation_CLOSED, /**< conversation is not open */ | |
| mwConversation_PENDING, /**< conversation is opening */ | | mwConversation_PENDING, /**< conversation is opening */ | |
| mwConversation_OPEN, /**< conversation is open */ | | mwConversation_OPEN, /**< conversation is open */ | |
| mwConversation_UNKNOWN, /**< unknown state */ | | mwConversation_UNKNOWN, /**< unknown state */ | |
| }; | | }; | |
| | | | |
| | | | |
| skipping to change at line 230 | | skipping to change at line 235 | |
| | | | |
| @see mwConversation_setClientData | | @see mwConversation_setClientData | |
| @see mwConversation_getClientData | | @see mwConversation_getClientData | |
| */ | | */ | |
| void mwConversation_removeClientData(struct mwConversation *conv); | | void mwConversation_removeClientData(struct mwConversation *conv); | |
| | | | |
| /** close and destroy the conversation and its backing channel, and | | /** close and destroy the conversation and its backing channel, and | |
| call the optional client data cleanup function */ | | call the optional client data cleanup function */ | |
| void mwConversation_free(struct mwConversation *conv); | | void mwConversation_free(struct mwConversation *conv); | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_SRVC_IM_H */ | |
| | | | |
End of changes. 6 change blocks. |
| 5 lines changed or deleted | | 12 lines changed or added | |
|
| mw_srvc_place.h | | mw_srvc_place.h | |
| | | | |
| skipping to change at line 27 | | skipping to change at line 27 | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_SRVC_PLACE_H | | #ifndef _MW_SRVC_PLACE_H | |
| #define _MW_SRVC_PLACE_H | | #define _MW_SRVC_PLACE_H | |
| | | | |
| #include <glib/glist.h> | | #include <glib/glist.h> | |
| #include "mw_common.h" | | #include "mw_common.h" | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| /** Type identifier for the place service */ | | /** Type identifier for the place service */ | |
| #define mwService_PLACE 0x80000022 | | #define mwService_PLACE 0x80000022 | |
| | | | |
| /** @struct mwServicePlace */ | | /** @struct mwServicePlace */ | |
| struct mwServicePlace; | | struct mwServicePlace; | |
| | | | |
| /** @struct mwPlace */ | | /** @struct mwPlace */ | |
| struct mwPlace; | | struct mwPlace; | |
| | | | |
| struct mwPlaceHandler { | | struct mwPlaceHandler { | |
| | | | |
| skipping to change at line 94 | | skipping to change at line 98 | |
| | | | |
| int mwPlace_destroy(struct mwPlace *place, guint32 code); | | int mwPlace_destroy(struct mwPlace *place, guint32 code); | |
| | | | |
| /** returns a GList* of struct mwIdBlock*. The GList will need to be | | /** returns a GList* of struct mwIdBlock*. The GList will need to be | |
| freed after use, the mwIdBlock structures should not be modified | | freed after use, the mwIdBlock structures should not be modified | |
| or freed */ | | or freed */ | |
| GList *mwPlace_getMembers(struct mwPlace *place); | | GList *mwPlace_getMembers(struct mwPlace *place); | |
| | | | |
| int mwPlace_sendText(struct mwPlace *place, const char *msg); | | int mwPlace_sendText(struct mwPlace *place, const char *msg); | |
| | | | |
|
| | | /** send a legacy invitation for this place to a user. The user will | |
| | | receive an apparent invitation from a Conference (rather than a | |
| | | Place) */ | |
| | | int mwPlace_legacyInvite(struct mwPlace *place, | |
| | | struct mwIdBlock *idb, | |
| | | const char *message); | |
| | | | |
| int mwPlace_setAttribute(struct mwPlace *place, guint32 attrib, | | int mwPlace_setAttribute(struct mwPlace *place, guint32 attrib, | |
| struct mwOpaque *data); | | struct mwOpaque *data); | |
| | | | |
| int mwPlace_unsetAttribute(struct mwPlace *place, guint32 attrib); | | int mwPlace_unsetAttribute(struct mwPlace *place, guint32 attrib); | |
| | | | |
| void mwPlace_setClientData(struct mwPlace *place, | | void mwPlace_setClientData(struct mwPlace *place, | |
| gpointer data, GDestroyNotify clean); | | gpointer data, GDestroyNotify clean); | |
| | | | |
| gpointer mwPlace_getClientData(struct mwPlace *place); | | gpointer mwPlace_getClientData(struct mwPlace *place); | |
| | | | |
| void mwPlace_removeClientData(struct mwPlace *place); | | void mwPlace_removeClientData(struct mwPlace *place); | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_SRVC_PLACE_H */ | |
| | | | |
End of changes. 4 change blocks. |
| 0 lines changed or deleted | | 13 lines changed or added | |
|
| mw_srvc_resolve.h | | mw_srvc_resolve.h | |
| | | | |
| skipping to change at line 27 | | skipping to change at line 27 | |
| License along with this library; if not, write to the Free | | License along with this library; if not, write to the Free | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | | */ | |
| | | | |
| #ifndef _MW_SRVC_RESOLVE_H | | #ifndef _MW_SRVC_RESOLVE_H | |
| #define _MW_SRVC_RESOLVE_H | | #define _MW_SRVC_RESOLVE_H | |
| | | | |
| #include <glib.h> | | #include <glib.h> | |
| #include <glib/glist.h> | | #include <glib/glist.h> | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | extern "C" { | |
| | | #endif | |
| | | | |
| /** Type identifier for the conference service */ | | /** Type identifier for the conference service */ | |
| #define mwService_RESOLVE 0x00000015 | | #define mwService_RESOLVE 0x00000015 | |
| | | | |
| /** Return value of mwServiceResolve_search indicating an error */ | | /** Return value of mwServiceResolve_search indicating an error */ | |
| #define SEARCH_ERROR 0x00 | | #define SEARCH_ERROR 0x00 | |
| | | | |
| /** @struct mwServiceResolve | | /** @struct mwServiceResolve | |
| User lookup service */ | | User lookup service */ | |
| struct mwServiceResolve; | | struct mwServiceResolve; | |
| | | | |
| | | | |
| skipping to change at line 126 | | skipping to change at line 130 | |
| guint32 mwServiceResolve_resolve(struct mwServiceResolve *srvc, | | guint32 mwServiceResolve_resolve(struct mwServiceResolve *srvc, | |
| GList *queries, enum mwResolveFlag flags, | | GList *queries, enum mwResolveFlag flags, | |
| mwResolveHandler handler, | | mwResolveHandler handler, | |
| gpointer data, GDestroyNotify cleanup); | | gpointer data, GDestroyNotify cleanup); | |
| | | | |
| /** Cancel a resolve request by its generated ID. The handler function | | /** Cancel a resolve request by its generated ID. The handler function | |
| will not be called, and the optional cleanup function will be | | will not be called, and the optional cleanup function will be | |
| called upon the optional user data for the request */ | | called upon the optional user data for the request */ | |
| void mwServiceResolve_cancelResolve(struct mwServiceResolve *, guint32); | | void mwServiceResolve_cancelResolve(struct mwServiceResolve *, guint32); | |
| | | | |
|
| | | #ifdef _cplusplus | |
| | | } | |
| #endif | | #endif | |
|
| | | | |
| | | #endif /* _MW_SRVC_RESOLVE_H */ | |
| | | | |
End of changes. 3 change blocks. |
| 0 lines changed or deleted | | 6 lines changed or added | |
|