InfChatSession

InfChatSession — Simple standalone chat

Stability Level

Unstable, unless otherwise indicated

Functions

Properties

gchar * log-file Read / Write

Signals

void receive-message Run Last
void send-message Run Last

Types and Values

Object Hierarchy

    GObject
    ╰── InfSession
        ╰── InfChatSession

Implemented Interfaces

InfChatSession implements InfCommunicationObject.

Includes

#include <libinfinity/common/inf-chat-session.h>

Description

InfChatSession represents a chat session. Normally, there is one chat session per server, and it can be enabled via infd_directory_enable_chat(). Clients can subscribe to the chat session via infc_browser_subscribe_chat().

Functions

inf_chat_session_new ()

InfChatSession *
inf_chat_session_new (InfCommunicationManager *manager,
                      InfChatBuffer *buffer,
                      InfSessionStatus status,
                      InfCommunicationGroup *sync_group,
                      InfXmlConnection *sync_connection);

Creates a new InfChatSession with the messages contained in buffer as initial messages. The communication manager is used to send and receive requests from subscription and synchronization.

If status is INF_SESSION_PRESYNC or INF_SESSION_SYNCHRONIZING, then the session will initially be synchronized, meaning an initial backlog is retrieved from sync_connection (which must not be NULL in this case). If you are subscribed to the session, set the subscription group via inf_session_set_subscription_group().

[constructor]

Parameters

manager

A InfCommunicationManager.

 

buffer

The InfChatBuffer to use for the session.

 

status

Initial status of the session. If this is INF_SESSION_SYNCHRONIZING or INF_SESSION_PRESYNC, then sync_group and sync_connection need to be set.

 

sync_group

A group in which the session is synchronized. Ignored if status is INF_SESSION_RUNNING.

 

sync_connection

A connection to synchronize the session from. Ignored if status is INF_SESSION_RUNNING.

 

Returns

A new InfChatSession.

[transfer full]


inf_chat_session_set_log_file ()

gboolean
inf_chat_session_set_log_file (InfChatSession *session,
                               const gchar *log_file,
                               GError **error);

Sets a file onto which all received messages are appended. The file is created if it does not exist. If a previous log file was set, then it is closed before opening the new file.

Backlog messages received upon synchronization are not logged.

Parameters

session

A InfChatSession.

 

log_file

A filename to store all received messages into.

[type filename]

error

Location to store error information, if any.

 

Returns

TRUE if the log file could be opened, FALSE otherwise (in which case error is set).

Types and Values

struct InfChatSession

struct InfChatSession;

InfChatSession is an opaque data type. You should only access it via the public API functions.


struct InfChatSessionClass

struct InfChatSessionClass {
  void (*receive_message)(InfChatSession* session,
                          const InfChatBufferMessage* message);
  void (*send_message)(InfChatSession* session,
                       const InfChatBufferMessage* message);
};

This structure contains default signal handlers for InfChatSession.

Members

receive_message ()

Default signal handler for the “receive-message” signal.

 

send_message ()

Default signal handler for the “send-message” signal.

 

enum InfChatSessionError

Errors that can occur with a chat session, especially in the process_xml_sync and process_xml_run vfunc implementations.

Members

INF_CHAT_SESSION_ERROR_TYPE_INVALID

An invalid message type was sent.

 

INF_CHAT_SESSION_ERROR_NO_SUCH_USER

A message referred to a nonexisting user.

 

INF_CHAT_SESSION_ERROR_FAILED

Generic error code when no further reason of failure is known.

 

Property Details

The “log-file” property

  “log-file”                 gchar *

The file into which to store all received messages.

Owner: InfChatSession

Flags: Read / Write

Default value: NULL

Signal Details

The “receive-message” signal

void
user_function (InfChatSession       *session,
               InfChatBufferMessage *message,
               gpointer              user_data)

This signal is emitted whenever a message has been received. If the session is in INF_SESSION_SYNCHRONIZING state the received message was a backlog message.

Parameters

session

The InfChatSession that is receiving a message.

 

message

The InfChatBufferMessage that was received.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “send-message” signal

void
user_function (InfChatSession       *session,
               InfChatBufferMessage *message,
               gpointer              user_data)

This signal is emitted whenever a message is sent. Messages can be sent by calling inf_chat_buffer_add_message() or inf_chat_buffer_add_emote_message() on the session's InfChatBuffer. Messages of type INF_CHAT_BUFFER_MESSAGE_USERJOIN or INF_CHAT_BUFFER_MESSAGE_USERPART can not be sent explicitely, so this signal will never be emitted for such messages.

Parameters

session

The InfChatSession that is sending a message.

 

message

The InfChatBufferMessage that is sent.

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last