struct _GossipMessagePriv {
GossipMessageType type;
GossipContact *sender;
+ GossipContact *receiver;
gchar *body;
GossipTime timestamp;
PROP_0,
PROP_TYPE,
PROP_SENDER,
+ PROP_RECEIVER,
PROP_BODY,
PROP_TIMESTAMP,
};
"The sender of the message",
GOSSIP_TYPE_CONTACT,
G_PARAM_READWRITE));
-
+ g_object_class_install_property (object_class,
+ PROP_RECEIVER,
+ g_param_spec_object ("receiver",
+ "Message Receiver",
+ "The receiver of the message",
+ GOSSIP_TYPE_CONTACT,
+ G_PARAM_READWRITE));
g_object_class_install_property (object_class,
PROP_BODY,
g_param_spec_string ("body",
priv = GET_PRIV (message);
- priv->type = GOSSIP_MESSAGE_TYPE_NORMAL;
- priv->sender = NULL;
- priv->body = NULL;
priv->timestamp = gossip_time_get_current ();
}
if (priv->sender) {
g_object_unref (priv->sender);
}
+ if (priv->receiver) {
+ g_object_unref (priv->receiver);
+ }
g_free (priv->body);
case PROP_SENDER:
g_value_set_object (value, priv->sender);
break;
+ case PROP_RECEIVER:
+ g_value_set_object (value, priv->receiver);
+ break;
case PROP_BODY:
g_value_set_string (value, priv->body);
break;
gossip_message_set_sender (GOSSIP_MESSAGE (object),
GOSSIP_CONTACT (g_value_get_object (value)));
break;
+ case PROP_RECEIVER:
+ gossip_message_set_receiver (GOSSIP_MESSAGE (object),
+ GOSSIP_CONTACT (g_value_get_object (value)));
+ break;
case PROP_BODY:
gossip_message_set_body (GOSSIP_MESSAGE (object),
g_value_get_string (value));
g_object_notify (G_OBJECT (message), "sender");
}
+GossipContact *
+gossip_message_get_receiver (GossipMessage *message)
+{
+ GossipMessagePriv *priv;
+
+ g_return_val_if_fail (GOSSIP_IS_MESSAGE (message), NULL);
+
+ priv = GET_PRIV (message);
+
+ return priv->receiver;
+}
+
+void
+gossip_message_set_receiver (GossipMessage *message, GossipContact *contact)
+{
+ GossipMessagePriv *priv;
+ GossipContact *old_receiver;
+
+ g_return_if_fail (GOSSIP_IS_MESSAGE (message));
+ g_return_if_fail (GOSSIP_IS_CONTACT (contact));
+
+ priv = GET_PRIV (message);
+
+ old_receiver = priv->receiver;
+ priv->receiver = g_object_ref (contact);
+
+ if (old_receiver) {
+ g_object_unref (old_receiver);
+ }
+
+ g_object_notify (G_OBJECT (message), "receiver");
+}
+
const gchar *
gossip_message_get_body (GossipMessage *message)
{