aboutsummaryrefslogtreecommitdiff
path: root/src/mm-sms-list.c
diff options
context:
space:
mode:
authorDan Williams <dan@ioncontrol.co>2025-04-19 10:30:58 -0500
committerDan Williams <dan@ioncontrol.co>2025-05-08 20:24:37 -0500
commitb81f23e24aad7d4fb37e837bbdcab4f43bccfc71 (patch)
tree2750873e396cc0176926f4deca31bc6fa835044a /src/mm-sms-list.c
parent9830e3955a3e45ff82c1c76bcba3b53432eaa51e (diff)
base-sms,sms-list,iface-messaging: move MMBaseSms creation to MMBroadbandModem class
This commit moves creation of the MMBaseSms objects out of MMSmsList and up into MMIfaceModemMessaging (which is already a MMBroadbandModem) and the MMBroadbandModem subclasses themselves. This flattens the creation of MMBaseSms objects by passing them down from the object that creates the SMS parts, rather than having a convoluted callback scheme relying on MMSmsList and MMBaseSms having direct knowledge of their owning modem. The goal is to eventually remove usage of MMBaseModem from MMBaseSms and MMSmsList so that we can test them more easily. Signed-off-by: Dan Williams <dan@ioncontrol.co>
Diffstat (limited to 'src/mm-sms-list.c')
-rw-r--r--src/mm-sms-list.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/mm-sms-list.c b/src/mm-sms-list.c
index f2401dae..21515aa5 100644
--- a/src/mm-sms-list.c
+++ b/src/mm-sms-list.c
@@ -259,24 +259,23 @@ cmp_sms_by_part_index_and_storage (MMBaseSms *sms,
static gboolean
take_singlepart (MMSmsList *self,
+ MMBaseSms *sms,
MMSmsPart *part,
MMSmsState state,
MMSmsStorage storage,
GError **error)
{
- MMBaseSms *sms;
-
- sms = mm_base_sms_singlepart_new (self->priv->modem,
+ if (!mm_base_sms_singlepart_init (sms,
+ self->priv->modem,
state,
storage,
part,
- error);
- if (!sms)
+ error))
return FALSE;
mm_obj_dbg (sms, "creating new singlepart SMS object");
- self->priv->list = g_list_prepend (self->priv->list, sms);
+ self->priv->list = g_list_prepend (self->priv->list, g_object_ref (sms));
g_signal_emit (self, signals[SIGNAL_ADDED], 0,
mm_base_sms_get_path (sms),
state == MM_SMS_STATE_RECEIVED);
@@ -285,13 +284,13 @@ take_singlepart (MMSmsList *self,
static gboolean
take_multipart (MMSmsList *self,
+ MMBaseSms *sms,
MMSmsPart *part,
MMSmsState state,
MMSmsStorage storage,
GError **error)
{
GList *l;
- MMBaseSms *sms;
guint concat_reference;
concat_reference = mm_sms_part_get_concat_reference (part);
@@ -304,20 +303,20 @@ take_multipart (MMSmsList *self,
}
/* Create new Multipart */
- sms = mm_base_sms_multipart_new (self->priv->modem,
+ if (!mm_base_sms_multipart_init (sms,
+ self->priv->modem,
state,
storage,
concat_reference,
mm_sms_part_get_concat_max (part),
part,
- error);
- if (!sms)
+ error))
return FALSE;
mm_obj_dbg (sms, "creating new multipart SMS object: need to receive %u parts with reference '%u'",
mm_sms_part_get_concat_max (part),
concat_reference);
- self->priv->list = g_list_prepend (self->priv->list, sms);
+ self->priv->list = g_list_prepend (self->priv->list, g_object_ref (sms));
g_signal_emit (self, signals[SIGNAL_ADDED], 0,
mm_base_sms_get_path (sms),
(state == MM_SMS_STATE_RECEIVED ||
@@ -347,6 +346,7 @@ mm_sms_list_has_part (MMSmsList *self,
gboolean
mm_sms_list_take_part (MMSmsList *self,
+ MMBaseSms *uninitialized_sms,
MMSmsPart *part,
MMSmsState state,
MMSmsStorage storage,
@@ -379,7 +379,7 @@ mm_sms_list_take_part (MMSmsList *self,
mm_sms_part_get_concat_sequence (part),
mm_sms_part_get_concat_max (part));
- return take_multipart (self, part, state, storage, error);
+ return take_multipart (self, uninitialized_sms, part, state, storage, error);
}
/* Otherwise, we build a whole new single-part MMSms just from this part */
@@ -389,7 +389,7 @@ mm_sms_list_take_part (MMSmsList *self,
mm_sms_part_get_index (part));
else
mm_obj_dbg (self, "SMS part (not stored) is from a singlepart SMS");
- return take_singlepart (self, part, state, storage, error);
+ return take_singlepart (self, uninitialized_sms, part, state, storage, error);
}
/*****************************************************************************/