Re: [PATCH] more precise throughput using double [v3]

Alexander Malysh <[email protected]>
Newsgroups gmane.comp.mobile.kannel.devel
Message-ID <[email protected]>
Vincent CHAVANIS schrieb:
> great !
> 
> One more thing in Changelog
> 
>>    that changes throughput from interger
>                                                      ^^ should read integer

fixed as well, thanks ;)

Thanks,
Alex

> 
> regards
> 
> Vincent
> 
> --
> Telemaque - NICE - (FR)
> Service Technique - Developpement
> http://www.telemaque.fr/
> [email protected]
> Tel : +33 4 93 97 71 64 (fax 68)
> 
> ----- Original Message ----- 
> From: "Alexander Malysh" <[email protected]>
> To: <[email protected]>
> Sent: Friday, April 07, 2006 6:37 PM
> Subject: Re: [PATCH] more precise throughput using double [v3]
> 
> 
>> oops, you are right... this patch committed to cvs:
>>
>> Index: gw/smscconn.c
>> ===================================================================
>> RCS file: /home/cvs/gateway/gw/smscconn.c,v
>> retrieving revision 1.54
>> diff -a -u -p -r1.54 smscconn.c
>> --- gw/smscconn.c       7 Apr 2006 12:49:50 -0000       1.54
>> +++ gw/smscconn.c       7 Apr 2006 16:35:33 -0000
>> @@ -151,7 +151,6 @@ SMSCConn *smscconn_create(CfgGroup *grp,
>>      SMSCConn *conn;
>>      Octstr *smsc_type;
>>      int ret;
>> -    double throughput;
>>      Octstr *allowed_smsc_id_regex;
>>      Octstr *denied_smsc_id_regex;
>>      Octstr *allowed_prefix_regex;
>> @@ -218,10 +217,10 @@ SMSCConn *smscconn_create(CfgGroup *grp,
>>              panic(0, "Could not compile pattern '%s'", 
>> octstr_get_cstr(preferred_prefix_regex));
>>
>>      if ((tmp = cfg_get(grp, octstr_imm("throughput"))) != NULL) {
>> -        if (octstr_parse_double(&throughput, tmp, 0) == -1)
>> +        if (octstr_parse_double(&conn->throughput, tmp, 0) == -1)
>>              conn->throughput = 0;
>>          octstr_destroy(tmp);
>> -        info(0, "Set throughput to %.3f for smsc id <%s>", throughput, 
>> octstr_get_cstr(conn->id));
>> +        info(0, "Set throughput to %.3f for smsc id <%s>", 
>> conn->throughput, octstr_get_cstr(conn->id));
>>      }
>>
>>      /* configure the internal rerouting rules for this smsc id */
>>
>>
>> Thanks,
>> Alex
>>
>> Vincent CHAVANIS schrieb:
>>> wow, something is going wrong with your modifications.
>>>
>>> Here is the fix, 
>>>
>>> --- /gateway-cvs/gw/smscconn.c  2006-04-07 14:54:05.000000000 +0200
>>> +++ /gateway/gw/smscconn.c      2006-04-07 16:54:44.000000000 +0200
>>> @@ -220,8 +220,10 @@
>>>      if ((tmp = cfg_get(grp, octstr_imm("throughput"))) != NULL) {
>>>          if (octstr_parse_double(&throughput, tmp, 0) == -1)
>>>              conn->throughput = 0;
>>> +        else
>>> +            conn->throughput = (double) throughput;
>>>          octstr_destroy(tmp);
>>> -        info(0, "Set throughput to %.3f for smsc id <%s>", throughput, octstr_get_cstr(conn->id));
>>> +        info(0, "Set throughput to %.3f for smsc id <%s>", conn->throughput, octstr_get_cstr(conn->id));
>>>      }
>>>
>>> Vincent
>>>
>>> --
>>> Telemaque - NICE - (FR)
>>> Service Technique - Developpement
>>> http://www.telemaque.fr/
>>> [email protected]
>>> Tel : +33 4 93 97 71 64 (fax 68)
>>>
>>> ----- Original Message ----- 
>>> From: "Alexander Malysh" <[email protected]>
>>> To: <[email protected]>
>>> Sent: Friday, April 07, 2006 4:32 PM
>>> Subject: Re: [PATCH] more precise throughput using double [v3]
>>>
>>>
>>>> Vincent CHAVANIS schrieb:
>>>>> Thanks++,
>>>>>
>>>>> I did not see that point.
>>>> cfg_get(...) returns Octstr* that must be destroyed afterwards. and we 
>>>> avoid using strXXX functions if we have the same functionality in Octstr.
>>>>
>>>> Thanks,
>>>> Alex
>>>>
>>>>> Vincent
>>>>>
>>>>> --
>>>>> Telemaque - NICE - (FR)
>>>>> Service Technique - Developpement
>>>>> http://www.telemaque.fr/
>>>>> [email protected]
>>>>> Tel : +33 4 93 97 71 64 (fax 68)
>>>>>
>>>>> ----- Original Message ----- 
>>>>> From: "Alexander Malysh" <[email protected]>
>>>>> To: <[email protected]>
>>>>> Sent: Friday, April 07, 2006 2:51 PM
>>>>> Subject: Re: [PATCH] more precise throughput using double [v3]
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> this patch applies ok and committed to cvs in modified form.
>>>>>>
>>>>>>>> +    throughput = strtod(octstr_get_cstr(cfg_get(grp, 
>>>>>> octstr_imm("throughput"))),(char **) NULL);
>>>>>>>> +    if (throughput == ERANGE || throughput <= 0)
>>>>>>>>          conn->throughput = 0;   /* defaults to no throughtput
>>>>>> ...
>>>>>>
>>>>>> Here you have memleak. Look into committed version where it's fixed.
>>>>>>
>>>>>> Thanks,
>>>>>> Alex
>>>>>>
>>>>>> Vincent CHAVANIS schrieb:
>>>>>>> is this new one is ok ?
>>>>>>>
>>>>>>> --
>>>>>>> Telemaque - NICE - (FR)
>>>>>>> Service Technique - Developpement
>>>>>>> http://www.telemaque.fr/
>>>>>>> [email protected]
>>>>>>> Tel : +33 4 93 97 71 64 (fax 68)
>>>>>>>
>>>>>>> ----- Original Message ----- 
>>>>>>> From: "Alexander Malysh" <[email protected]>
>>>>>>> To: <[email protected]>
>>>>>>> Sent: Thursday, April 06, 2006 7:23 PM
>>>>>>> Subject: Re: [PATCH] more precise throughput using double [v3]
>>>>>>>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> you patch doesn't apply. Please redo your patch with cvs -Nau from 
>>>>>>>> within gateway dir.
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Alex
>>>>>>>>
>>>>>>>> ------------------------------------------------------------------------
>>>>>>>>
>>>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_emi.c gateway-patch/gw/smsc/smsc_emi.c
>>>>>>>> --- gateway/gw/smsc/smsc_emi.c  2005-02-11 16:35:48.000000000 +0100
>>>>>>>> +++ gateway-patch/gw/smsc/smsc_emi.c    2006-04-06 19:42:24.000000000 +0200
>>>>>>>> @@ -992,7 +992,7 @@
>>>>>>>>      Msg *msg;
>>>>>>>>      double delay = 0;
>>>>>>>>  
>>>>>>>> -    if (conn->throughput) {
>>>>>>>> +    if (conn->throughput > 0) {
>>>>>>>>          delay = 1.0 / conn->throughput;
>>>>>>>>      }
>>>>>>>>      
>>>>>>>> @@ -1001,7 +1001,7 @@
>>>>>>>>             (msg = gw_prioqueue_remove(PRIVDATA(conn)->outgoing_queue)) != NULL) {
>>>>>>>>          int nexttrn = emi2_next_trn(conn);
>>>>>>>>  
>>>>>>>> -        if (conn->throughput)
>>>>>>>> +        if (conn->throughput > 0)
>>>>>>>>              gwthread_sleep(delay);
>>>>>>>>  
>>>>>>>>          /* convert the generic Kannel message into an EMI type message */
>>>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_fake.c gateway-patch/gw/smsc/smsc_fake.c
>>>>>>>> --- gateway/gw/smsc/smsc_fake.c 2005-02-11 16:35:48.000000000 +0100
>>>>>>>> +++ gateway-patch/gw/smsc/smsc_fake.c   2006-04-06 19:42:38.000000000 +0200
>>>>>>>> @@ -243,7 +243,7 @@
>>>>>>>>      Msg        *msg;
>>>>>>>>      double delay = 0;
>>>>>>>>  
>>>>>>>> -    if (conn->throughput) {
>>>>>>>> +    if (conn->throughput > 0) {
>>>>>>>>          delay = 1.0 / conn->throughput;
>>>>>>>>      }
>>>>>>>>  
>>>>>>>> @@ -297,7 +297,7 @@
>>>>>>>>              }
>>>>>>>>  
>>>>>>>>              /* obey throughput speed limit, if any */
>>>>>>>> -            if (conn->throughput) {
>>>>>>>> +            if (conn->throughput > 0) {
>>>>>>>>                  gwthread_sleep(delay);
>>>>>>>>              }
>>>>>>>>          }
>>>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_http.c gateway-patch/gw/smsc/smsc_http.c
>>>>>>>> --- gateway/gw/smsc/smsc_http.c 2006-03-29 11:17:55.000000000 +0200
>>>>>>>> +++ gateway-patch/gw/smsc/smsc_http.c   2006-04-06 19:43:00.000000000 +0200
>>>>>>>> @@ -1308,7 +1308,7 @@
>>>>>>>>      Msg *sms = msg_duplicate(msg);
>>>>>>>>      double delay = 0;
>>>>>>>>  
>>>>>>>> -    if (conn->throughput) {
>>>>>>>> +    if (conn->throughput > 0) {
>>>>>>>>          delay = 1.0 / conn->throughput;
>>>>>>>>      }
>>>>>>>>  
>>>>>>>> @@ -1316,7 +1316,7 @@
>>>>>>>>      conndata->send_sms(conn, sms);
>>>>>>>>  
>>>>>>>>      /* obey throughput speed limit, if any */
>>>>>>>> -    if (conn->throughput)
>>>>>>>> +    if (conn->throughput > 0)
>>>>>>>>          gwthread_sleep(delay);
>>>>>>>>  
>>>>>>>>      return 0;
>>>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_smasi.c gateway-patch/gw/smsc/smsc_smasi.c
>>>>>>>> --- gateway/gw/smsc/smsc_smasi.c        2005-02-11 16:35:48.000000000 +0100
>>>>>>>> +++ gateway-patch/gw/smsc/smsc_smasi.c  2006-04-06 19:43:19.000000000 +0200
>>>>>>>> @@ -872,7 +872,7 @@
>>>>>>>>  
>>>>>>>>      if (*pending_submits == -1) return;
>>>>>>>>  
>>>>>>>> -    if (smasi->conn->throughput) {
>>>>>>>> +    if (smasi->conn->throughput > 0) {
>>>>>>>>          delay = 1.0 / smasi->conn->throughput;
>>>>>>>>      }
>>>>>>>>  
>>>>>>>> @@ -894,7 +894,7 @@
>>>>>>>>          smasi_pdu_destroy(pdu);
>>>>>>>>  
>>>>>>>>          /* obey throughput speed limit, if any */
>>>>>>>> -        if (smasi->conn->throughput)
>>>>>>>> +        if (smasi->conn->throughput > 0)
>>>>>>>>              gwthread_sleep(delay);
>>>>>>>>  
>>>>>>>>          ++(*pending_submits);
>>>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_smpp.c gateway-patch/gw/smsc/smsc_smpp.c
>>>>>>>> --- gateway/gw/smsc/smsc_smpp.c 2006-02-07 15:54:44.000000000 +0100
>>>>>>>> +++ gateway-patch/gw/smsc/smsc_smpp.c   2006-04-06 19:44:14.000000000 +0200
>>>>>>>> @@ -1013,7 +1013,7 @@
>>>>>>>>              /*
>>>>>>>>               * obey throughput speed limit, if any.
>>>>>>>>               */
>>>>>>>> -            if (smpp->conn->throughput)
>>>>>>>> +            if (smpp->conn->throughput > 0)
>>>>>>>>                  gwthread_sleep(delay);
>>>>>>>>          }
>>>>>>>>          else { /* write error occurs */
>>>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smscconn.c gateway-patch/gw/smscconn.c
>>>>>>>> --- gateway/gw/smscconn.c       2006-04-01 19:48:51.000000000 +0200
>>>>>>>> +++ gateway-patch/gw/smscconn.c 2006-04-06 19:51:57.000000000 +0200
>>>>>>>> @@ -64,6 +64,7 @@
>>>>>>>>  
>>>>>>>>  #include <signal.h>
>>>>>>>>  #include <time.h>
>>>>>>>> +#include <errno.h>
>>>>>>>>  
>>>>>>>>  #include "gwlib/gwlib.h"
>>>>>>>>  #include "gwlib/regex.h"
>>>>>>>> @@ -151,7 +152,7 @@
>>>>>>>>      SMSCConn *conn;
>>>>>>>>      Octstr *smsc_type;
>>>>>>>>      int ret;
>>>>>>>> -    long throughput;
>>>>>>>> +    double throughput;
>>>>>>>>      Octstr *allowed_smsc_id_regex;
>>>>>>>>      Octstr *denied_smsc_id_regex;
>>>>>>>>      Octstr *allowed_prefix_regex;
>>>>>>>> @@ -216,10 +217,13 @@
>>>>>>>>          if ((conn->preferred_prefix_regex = gw_regex_comp(preferred_prefix_regex, REG_EXTENDED)) == NULL)
>>>>>>>>              panic(0, "Could not compile pattern '%s'", octstr_get_cstr(preferred_prefix_regex));
>>>>>>>>  
>>>>>>>> -    if (cfg_get_integer(&throughput, grp, octstr_imm("throughput")) == -1)
>>>>>>>> +    throughput = strtod(octstr_get_cstr(cfg_get(grp, octstr_imm("throughput"))),(char **) NULL);
>>>>>>>> +    if (throughput == ERANGE || throughput <= 0)
>>>>>>>>          conn->throughput = 0;   /* defaults to no throughtput limitation */
>>>>>>>>      else
>>>>>>>> -        conn->throughput = (int) throughput;
>>>>>>>> +        conn->throughput = throughput;
>>>>>>>> +
>>>>>>>> +    info(0, "Set throughput to %.3f for smsc id <%s>", throughput, octstr_get_cstr(conn->id));
>>>>>>>>  
>>>>>>>>      /* configure the internal rerouting rules for this smsc id */
>>>>>>>>      init_reroute(conn, grp);
>>>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smscconn_p.h gateway-patch/gw/smscconn_p.h
>>>>>>>> --- gateway/gw/smscconn_p.h     2005-02-11 16:35:48.000000000 +0100
>>>>>>>> +++ gateway-patch/gw/smscconn_p.h       2006-04-06 19:46:51.000000000 +0200
>>>>>>>> @@ -194,7 +194,7 @@
>>>>>>>>  
>>>>>>>>      int alt_dcs; /* use alternate DCS 0xFX */
>>>>>>>>  
>>>>>>>> -    int throughput;     /* message thoughput per sec. to be delivered to SMSC */
>>>>>>>> +    double throughput;     /* message thoughput per sec. to be delivered to SMSC */
>>>>>>>>  
>>>>>>>>      /* Stores rerouting information for this specific smsc-id */
>>>>>>>>      int reroute;                /* simply turn MO into MT and process internally */
>>>>>
>>>>
>>>
>>>
>>
>>
> 
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.