Changeset 623


Ignore:
Timestamp:
08/26/14 13:53:24 (4 years ago)
Author:
jls17
Message:
  • program switches to slow object loading automatically if server version is below 6.3
  • changed CARFieldListServer and CARVUIListServer to take slowObjectLoading option into account
Location:
branches/work_311
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/work_311/ARInside.cpp

    r620 r623  
    207207#endif 
    208208                        cout << "User '" << this->arControl.user <<"' connected to server " << srvFullHostName << endl; 
     209 
     210                        // the most ARGetMultiple... calls aren't supported below ARServer 6.3 so it's better to  
     211                        // switch to slow object loadinig automatically 
     212                        if (CompareServerVersion(6,3) < 0) 
     213                                appConfig.slowObjectLoading = true; 
    209214 
    210215                        blackList.LoadFromServer(appConfig.blackList); 
  • branches/work_311/lists/ARFieldList.cpp

    r610 r623  
    174174        memset(&status, 0, sizeof(status)); 
    175175 
    176         if (arIn->CompareServerVersion(6,3) < 0) 
    177         { 
     176        if (!arIn->appConfig.slowObjectLoading && ARGetMultipleFields(&arIn->arControl, 
     177                schemaName,  
     178                NULL, // all field ids 
     179                &fldExists, 
     180                &fieldIds, 
     181                &names, 
     182                &fieldMaps, 
     183                &dataTypes, 
     184                &options, 
     185                &createModes, 
     186                &fieldOptions, 
     187                &defaultValues, 
     188#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763 
     189                NULL, // groupListList // TODO: support static inherited permissions 
     190#endif 
     191                &permLists, 
     192                &limits, 
     193                &dInstanceLists, 
     194                &helpTexts, 
     195                &changedTimes, 
     196                &owners, 
     197                &changedUsers, 
     198                &changeDiary, 
     199#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763 
     200                &objProps, 
     201#endif 
     202                &status) == AR_RETURN_OK) 
     203        { 
     204                FreeARBooleanList(&fldExists, false); 
     205                BuildIndex(); 
     206                return true; 
     207        } 
     208        else 
     209        { 
     210                cerr << BuildMessageAndFreeStatus(status); 
     211 
     212                // ok, fallback to slow data retrieval 
     213                // this could be necessaray if there is a corrupt field that keeps us from getting all fields at once 
     214                if (!arIn->appConfig.slowObjectLoading) 
     215                        cout << "WARN: switching to slow field loading for: " << schemaName << endl; 
     216 
    178217                ARInternalIdList fieldIdList; 
    179218                ARZeroMemory(&fieldIdList); 
     
    217256                                } 
    218257                                else 
    219                                         cerr << BuildMessageAndFreeStatus(status); 
     258                                        cerr << "Schema: " << schemaName << " -- Failed to load field " << fieldIdList.internalIdList[idx] << ": " << BuildMessageAndFreeStatus(status); 
    220259                        } 
    221260                        SetNumItems(currentWriteIndex); 
    222                         BuildIndex(); 
    223                         return true; 
    224                 } 
    225                 else 
    226                 { 
    227                         cerr << BuildMessageAndFreeStatus(status); 
    228                         return false; 
    229                 } 
    230         } 
    231         else 
    232         { 
    233                 // ok, get all informations of the fields we need 
    234                 if (ARGetMultipleFields(&arIn->arControl, 
    235                         schemaName,  
    236                         NULL, // all field ids 
    237                         &fldExists, 
    238                         &fieldIds, 
    239                         &names, 
    240                         &fieldMaps, 
    241                         &dataTypes, 
    242                         &options, 
    243                         &createModes, 
    244                         &fieldOptions, 
    245                         &defaultValues, 
    246         #if AR_CURRENT_API_VERSION >= AR_API_VERSION_763 
    247                         NULL, // groupListList // TODO: support static inherited permissions 
    248         #endif 
    249                         &permLists, 
    250                         &limits, 
    251                         &dInstanceLists, 
    252                         &helpTexts, 
    253                         &changedTimes, 
    254                         &owners, 
    255                         &changedUsers, 
    256                         &changeDiary, 
    257         #if AR_CURRENT_API_VERSION >= AR_API_VERSION_763 
    258                         &objProps, 
    259         #endif 
    260                         &status) == AR_RETURN_OK) 
    261                 { 
    262                         FreeARBooleanList(&fldExists, false); 
    263261                        BuildIndex(); 
    264262                        return true; 
  • branches/work_311/lists/ARVUIList.cpp

    r610 r623  
    110110        memset(&status, 0, sizeof(status)); 
    111111 
    112         if (arIn->CompareServerVersion(6,3) < 0) 
    113         { 
     112        if (!arIn->appConfig.slowObjectLoading && ARGetMultipleVUIs(&arIn->arControl, 
     113                schemaName,  
     114                NULL, // all field ids 
     115                0,    // no changed since restriction 
     116                &vuiExists, 
     117                &ids, 
     118                &names, 
     119                &locales, 
     120                &types, 
     121                &dispProps, 
     122                &helpTexts, 
     123                &changedTimes, 
     124                &owners, 
     125                &changedUsers, 
     126                &changeDiary, 
     127#if AR_CURRENT_API_VERSION >= AR_API_VERSION_763 
     128                &objProps, 
     129#endif 
     130                &status) == AR_RETURN_OK) 
     131        { 
     132                FreeARBooleanList(&vuiExists, false); 
     133                BuildIndex(); 
     134                return true; 
     135        } 
     136        else 
     137        { 
     138                cerr << BuildMessageAndFreeStatus(status); 
     139 
     140                // ok, fallback to slow data retrieval 
     141                // this could be necessaray if there is a corrupt vui that keeps us from getting all vuis at once 
     142                if (!arIn->appConfig.slowObjectLoading) 
     143                        cout << "WARN: switching to slow vui loading for: " << schemaName << endl; 
     144 
    114145                ARInternalIdList        vuiIdList; 
    115146                ARZeroMemory(&vuiIdList); 
     
    145176                                } 
    146177                                else 
    147                                         cerr << BuildMessageAndFreeStatus(status); 
     178                                        cerr << "Schema: " << schemaName << " -- Failed to load vui " << vuiIdList.internalIdList[idx] << ": " << BuildMessageAndFreeStatus(status); 
    148179                        } 
    149180                        SetNumItems(currentWriteIndex); 
     
    157188                } 
    158189        } 
    159         else 
    160         { 
    161                 // ok, get all informations of the fields we need 
    162                 if (ARGetMultipleVUIs(&arIn->arControl, 
    163                         schemaName,  
    164                         NULL, // all field ids 
    165                         0,    // no changed since restriction 
    166                         &vuiExists, 
    167                         &ids, 
    168                         &names, 
    169                         &locales, 
    170                         &types, 
    171                         &dispProps, 
    172                         &helpTexts, 
    173                         &changedTimes, 
    174                         &owners, 
    175                         &changedUsers, 
    176                         &changeDiary, 
    177         #if AR_CURRENT_API_VERSION >= AR_API_VERSION_763 
    178                         &objProps, 
    179         #endif 
    180                         &status) == AR_RETURN_OK) 
    181                 { 
    182                         FreeARBooleanList(&vuiExists, false); 
    183                         BuildIndex(); 
    184                         return true; 
    185                 } 
    186                 else 
    187                 { 
    188                         cerr << BuildMessageAndFreeStatus(status); 
    189                         return false; 
    190                 } 
    191         } 
    192190} 
    193191 
Note: See TracChangeset for help on using the changeset viewer.