Chat-O-Matic/protocols/purple/PurpleMessages.h
Jaidyn Ann 588b32b9c3 (purple) Main loop, server→add-on→app communication
Now the purple add-on's starting to come together with a clear
structure:
	* Add-on sends IM_MESSAGES etc to the server for processing
	* Server sends all (reply/etc) messages to add-on, which sends
	  to app

It's worth noting that on the add-on's side, no looper or handler is
used for receiving messages, it's all through sending serialized
BMessages to the add-on's connect_thread buffer.

PurpleAccounts are now reliably associated with Cardie's account names
and the thread ID of their respective connect_thread.

The GLib main-loop is gone over regularly thanks to a message runner.

Now, the add-on can log into/create accounts, connect to them, and send
the IM_PROTOCOL_READY notification to Cardie as appropriate.
2021-06-27 16:46:38 -05:00

59 lines
2.1 KiB
C

/*
* Copyright 2021, Jaidyn Levesque <jadedctrl@teknik.io>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef _PURPLE_MESSAGES_H
#define _PURPLE_MESSAGES_H
#include <SupportDefs.h>
enum purple_message {
/*
* Messages between the Purple add-on and server
*/
/*! Request a count of protocols. →Server
* Response is sent directly to the requesting thread
* as a message's code, use receive_data() to catch it.
* Requires: int64 thread_id */
PURPLE_REQUEST_PROTOCOL_COUNT = 'PApc',
/*! Request protocol metadata. →Server
* Response is sent directly to the requesting thread
* with two subsquent messages (using receive_data())―
* the first sending the size of the subsequently sent
* flattened BMessage.
* Requires: int32 protocol_index, int64 thread_id */
PURPLE_REQUEST_PROTOCOL_INFO = 'PApi',
/*! Load/start connecting the account →Server
* Just the account's settings message from Cardie's end.
* It's the server's job to tie the Cardie account name
* to the PurpleAccount. */
PURPLE_LOAD_ACCOUNT = 'PAla',
/*! Associate account with thread →Server
* Makes the server associate the given account with
* the given thread. All subsequent Server→Add-On
* messages related to the account will be sent to this
* thread.
* Requires: String account_name, int64 thread_id */
PURPLE_REGISTER_THREAD = 'PArl'
};
#endif // _PURPLE_MESSAGES_H