On-line: alex_II, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
Dima
администратор




Пост N: 2728
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 9)


Продолжаем тут

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


alkresin
moderator


Пост N: 752
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 19.12.13 10:42. Заголовок: Павел, а зачем leto_..


Павел, а зачем leto_writelog() урезали ?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3097
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.12.13 13:54. Заголовок: Там было 2 ветки: од..


Там было 2 ветки: одна через функции hb_fs*, другая - через hb_fopen
Первая ветка выполняет все, что нужно. Тогда зачем нужна вторая ? Только лишний модуль цепляется.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 753
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 19.12.13 15:53. Заголовок: Вторая ветка нужна д..


Вторая ветка нужна для того, чтобы реализовать синтаксис, как в printf, например:

leto_writelog( NULL, 0, "Name: %s Number: %d\r\n", szFile, iNum );

Это часто бывает очень удобно - вся нужная информация одной строчкой кода.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3098
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.12.13 09:00. Заголовок: Верну..


Верну

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3101
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.12.13 17:22. Заголовок: А как сделать dll из..


А как сделать dll из letocl.c ? Прицепить к проекту src\vm\maindllh.c, и добавить префикс для экспортируемых функций ?

А надо предусмотреть и создание so-библиотеки для *nix

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3105
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.12.13 15:44. Заголовок: Я в своих программах..


Я в своих программах использую вызов hb_iperrorcode, для диагностики ошибок коннекта с сервером.
Сейчас этой функции нет. Может быть, на клиенте стоит добавить модуль вроде такого:

hbiph.c


#include "hbapi.h"

int hb_iperrorcode( void );

HB_FUNC( HB_IPERRORCODE )
{
hb_retni( hb_iperrorcode( ) );
}

HB_FUNC( HB_IPERRORDESC )
{
hb_retc( strerror( hb_iperrorcode( ) ) );
}

Тогда переменная errorDesc из hbip.c получается не нужна, ее можно будет убрать.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3106
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 23.12.13 16:14. Заголовок: Для LetoMemoRead нуж..


Для LetoMemoRead нужен еще параметр - размер файла (для возможности передачи файлов, содержащих нулевой байт):

char * LetoMemoRead( LETOCONNECTION * pConnection, char * szFile, unsigned long * ulLen )

И у меня что-то сваливается leto_MemoRead, размер файла десятки килобайт.
Пока ищу причину.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 754
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 23.12.13 19:32. Заголовок: Pasha пишет: А как ..


Pasha пишет:

 цитата:
А как сделать dll из letocl.c ? Прицепить к проекту src\vm\maindllh.c, и добавить префикс для экспортируемых функций ?


Еще не думал на эту тему. Наверное, просто поставить соответствующую опцию линкера. Maindllh.c тут, скорее всего, не нужен.

 цитата:
Я в своих программах использую вызов hb_iperrorcode, для диагностики ошибок коннекта с сервером.
Сейчас этой функции нет. Может быть, на клиенте стоит добавить модуль вроде такого:


Да, стоит.

 цитата:
Для LetoMemoRead нужен еще параметр - размер файла (для возможности передачи файлов, содержащих нулевой байт):


Добавлю.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3107
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.12.13 17:41. Заголовок: Кажется, я понял при..


Кажется, я понял причину падения leto_MemoRead. Падение происходит на файлах размером больше 16К
В leto_Recv() в этом случае вызывается realloc для перевыделения памяти s_szBuffer. А ниже стоит вызов

iRet = hb_ipRecv( hSocket, ptr, lMsgLen );

У меня в рабочей программе падение есть, а в тестах - нет. После вызова realloc адрес в s_szBuffer может измениться, а может остаться прежним. Если он изменился, то ptr указывает на уже освобожденный участок памяти, и в результате происходит крэш.


Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 755
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.12.13 08:52. Заголовок: Да, вполне вероятно,..


Да, вполне вероятно, с realloc бывают такие неприятности.
Я вставил там ptr = s_szBuffer; после realloc - теперь, может, заработает.

Заодно и часть функций по работе с dbf через C client сделал - пока, правда, ходить по таблице еще нельзя.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3108
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.12.13 09:23. Заголовок: Да, теперь работает..


Да, теперь работает

Думается, со временем из LETOAREA в LETOTABLE перекочует все, кроме area, pTable и lpdbPendingRel

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 756
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.12.13 09:47. Заголовок: Да, наверное, по мер..


Да, наверное, по мере необходимости.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3109
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.13 09:56. Заголовок: Есть предложение пер..


Есть предложение переименовать несколько функций:

LetoIsFileExist --> LetoFileExist
LetoMakeDir --> LetoDirMake

для выполнения соответствия LetoFile* / LetoDir*

и

LetoDbOpen --> LetoDbOpenTable
LetoDbClose --> LetoDbCloseTable

так как еще будут функции Open/Close Index

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 759
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 26.12.13 10:25. Заголовок: Согласен...


Согласен.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 760
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 26.12.13 12:11. Заголовок: Павел, не могли бы в..


Павел, не могли бы вы пояснить мне строчки 1230-1239 из leto1.c, letoSeek():

if( pArea->area.dbfi.itmCobExpr != NULL && !pArea->area.dbfi.fOptimized )
{
if( SELF_SKIPFILTER( ( AREAP ) pArea, ( bFindLast ? -1 : 1 ) ) == SUCCESS )
{
PHB_ITEM pItem = leto_KeyEval( pArea, pTagInfo );

if( itmCompare( pItem, pKey, FALSE ) != 0 && ! bSoftSeek )
SELF_GOTO( ( AREAP ) pArea, 0 );
}
}


Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3110
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 26.12.13 12:45. Заголовок: Если фильтр не оптим..


Если фильтр не оптимизирован, то надо сделать seek на сервере, и затем отработать фильтр на клиенте с проверкой ключа.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 761
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 27.12.13 17:22. Заголовок: А что это за поля в ..


А что это за поля в LETOTAGINFO - uiFCount и puiFields ? Они инициализируются, но нигде не используются.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3111
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 27.12.13 18:38. Заголовок: Я планирую в дальней..


Я планирую в дальнейшем их использовать, поэтому и добавил. Сейчас при обновлении записи сбрасывается skip-буфер. Но, если обновляются неиндексные поля, его можно не сбрасывать, а использовать и далее, только пометить данную запись как измененную. Порядок записей в текущем ордере ведь не изменился.
Это позволило бы существенно оптимизировать циклы вроде dbEval, while ! eof(), в которых выполняется обновление данных.

Спасибо: 0 
Профиль
alkresin
moderator


Пост N: 762
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 04.01.14 09:25. Заголовок: Ну что ж, выделение ..


Ну что ж, выделение С клиента для letodb в значительной мере сделано - можно ходить по базе ( go, skip, filter, seek ), добавлять и менять записи. Еще надо кое-что доделать и почистить, но основная часть готова.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 3195
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.01.14 13:49. Заголовок: alkresin пишет: но ..


alkresin пишет:

 цитата:
но основная часть готова



Не смотря на праздники - работа идет !

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 28
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет