diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-04-30 10:52:16 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-04-30 10:52:16 -0500 |
commit | c7ef06f91e32c1fa07a5cf8cf6f6b487eee021a9 (patch) | |
tree | 763174159e2a1126d2356c5d51232882c88b7e53 | |
parent | 5ef90f934b28cb696b86f7852306f67120cc4046 (diff) | |
download | ofono-c7ef06f91e32c1fa07a5cf8cf6f6b487eee021a9.tar.bz2 |
ppp: Add _from_io constructor
-rw-r--r-- | gatchat/gatppp.c | 39 | ||||
-rw-r--r-- | gatchat/gatppp.h | 3 |
2 files changed, 34 insertions, 8 deletions
diff --git a/gatchat/gatppp.c b/gatchat/gatppp.c index 2446d4e3..4205a795 100644 --- a/gatchat/gatppp.c +++ b/gatchat/gatppp.c @@ -396,7 +396,7 @@ void g_at_ppp_unref(GAtPPP *ppp) g_free(ppp); } -GAtPPP *g_at_ppp_new(GIOChannel *modem) +static GAtPPP *ppp_init_common(GAtHDLC *hdlc) { GAtPPP *ppp; @@ -404,12 +404,7 @@ GAtPPP *g_at_ppp_new(GIOChannel *modem) if (!ppp) return NULL; - ppp->hdlc = g_at_hdlc_new(modem); - - if (ppp->hdlc == NULL) { - g_free(ppp); - return NULL; - } + ppp->hdlc = g_at_hdlc_ref(hdlc); ppp->ref_count = 1; @@ -429,3 +424,33 @@ GAtPPP *g_at_ppp_new(GIOChannel *modem) return ppp; } + +GAtPPP *g_at_ppp_new(GIOChannel *modem) +{ + GAtHDLC *hdlc; + GAtPPP *ppp; + + hdlc = g_at_hdlc_new(modem); + if (hdlc == NULL) + return NULL; + + ppp = ppp_init_common(hdlc); + g_at_hdlc_unref(hdlc); + + return ppp; +} + +GAtPPP *g_at_ppp_new_from_io(GAtIO *io) +{ + GAtHDLC *hdlc; + GAtPPP *ppp; + + hdlc = g_at_hdlc_new_from_io(io); + if (hdlc == NULL) + return NULL; + + ppp = ppp_init_common(hdlc); + g_at_hdlc_unref(hdlc); + + return ppp; +} diff --git a/gatchat/gatppp.h b/gatchat/gatppp.h index a9252378..7631fe58 100644 --- a/gatchat/gatppp.h +++ b/gatchat/gatppp.h @@ -43,7 +43,8 @@ typedef void (*GAtPPPConnectFunc)(GAtPPPConnectStatus success, const char *dns1, const char *dns2, gpointer user_data); -GAtPPP * g_at_ppp_new(GIOChannel *modem); +GAtPPP *g_at_ppp_new(GIOChannel *modem); +GAtPPP *g_at_ppp_new_from_io(GAtIO *io); void g_at_ppp_open(GAtPPP *ppp); void g_at_ppp_set_connect_function(GAtPPP *ppp, GAtPPPConnectFunc callback, gpointer user_data); |