Re: Teoretical Question

Rodrigo Montiel <[email protected]> Tue, 24 Nov 2015 15:56:58 -0300
Newsgroups gmane.linux.drivers.gnokii
Message-ID <[email protected]>
Thank you sir!

El 11/20/15 a las 4:44 PM, Jan Derfinak escribió:
> On Fri, 20 Nov 2015, Rodrigo Montiel wrote:
>
> Hello Rodrigo.
>
>> Below is just an example of my scenario:
>>
>> +--------------+-------+-------+---------+-----------+
>> | number       | phone | error | dreport | processed |
>> +--------------+-------+-------+---------+-----------+
>> | number-here  |     3 |     4 |       0 |         1 |
>> | number-here   |     3 |     11 |       0 |         1 |
>>
>>
>> I have an option in my gnokii file (sms_retry) that as far as I know impacts
>> the error type 11 ( GN_ERR_TIMEOUT).
>> So when error type 11 appears, I believe the message is being retried due to
>> the timeout issue, prior to set processed column to true.
> There are 2 levels of controlling timeout. Sm_retry is lowlevel option which
> is not pertinent directly to SMS sending. It is connected to all
> communication with the phone, to any frame which is send to phone.
>
> My understandig is that GN_ERR_TIMEOUT is pertinent to entire command which
> was send to phone. So, it is the result of high level command.
>
> Sm_retry instructs libgnokii to repeat a frame, but GN_ERR_TIMEOUT gives
> posibillity for an application to react on such kind of error.
>   
>> I would like to know what happens when error type 4? ( GN_ERR_INTERNALERROR
>> - Problem occurred internal to model specific code).
>> Is processed column set to true automatically?
>> Can we setup a sms_retry value on gnokii config file to keep retrying for
>> any kind of error type received by gn_sms_send() function?
> Smsd processes error handling in this case in DB module code. For example in
> pq.c (postgres), following code is used:
>
> numError = 0;
> do
> {
>    if ((error = WriteSMS (&sms)) == GN_ERR_NONE)
>      break;
>    sleep (1);
> }
> while ((error == GN_ERR_TIMEOUT || error == GN_ERR_FAILED) && numError++ < 3);
>
> g_string_printf (buf, "UPDATE %s.outbox SET processed='t', error='%d', \
>                   processed_date='now' WHERE id='%s'",
>                   schema, error, PQgetvalue (res1, i, 0));
>
> You can see, that if WriteSMS() returned GN_ERR_TIMEOUT or GN_ERR_FAILED,
> smsd tries to repeat sending, but not more than 3 times. This value is
> hardcoded there.
> After smsd leaves the "while" loop, record in table is always updated,
> 'processed' is always set to True and error is set according to actual
> result. Setting 'processed' to True doesn't mean that sms was send. It means
> that smsd processed this record with the result in 'error' column. And
> also, that this record will be excluded from next loops. If you change
> 'processed' back to False, smsd will pick up this record in next try and
> will try to resend sms.
>
> Jan
>   
>
> -- 
>
>
> _______________________________________________
> gnokii-users mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/gnokii-users

-- Rod

_______________________________________________
gnokii-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/gnokii-users