Forum Replies Created
-
AuthorPosts
-
-
April 24, 2026 at 13:12 #58726
kimbomadsen
KeymasterHi,
There have been several fixes since 5.15 related to the lockfree hash array. So I would recommend to update to a newer version of kbmMW.
best regards
Kim/C4D -
November 29, 2025 at 11:27 #58358
kimbomadsen
KeymasterLogically, yes. The change certainly is not wrong, and I will implement it.
However free is actually supposed to ignore a null self.It may more indicate that there is a lingering TkbmMWCustomTCPIPIndyClientTransport instance somewhere that may be attempted to be freed by two threads at the same time?
/KBM
-
September 24, 2025 at 08:38 #58258
kimbomadsen
KeymasterI think the problem has been solved in 5.24.00 by rewriting the kbmMWDependency package and cleaning up dependencies.
/Kim/C4D
-
January 16, 2024 at 01:18 #57427
kimbomadsen
KeymasterHi,
I have reviewed your suggestion and decided to include it in the code base. Thank you!
/Kim
-
January 15, 2024 at 22:45 #57425
kimbomadsen
KeymasterHi,
I cant from the screenshot you present see any leak.
I can see the two message queue processors are allocated (one for the inqueue and one for the outqueue).
Have you set InboundProcessor and/or OutboundProcessor anywhere in your code?
If you have, then kbmMW will not try to deallocate them upon close.Further make sure you close transports upon closing your application.
/Kim
-
January 15, 2024 at 14:32 #57419
kimbomadsen
KeymasterHave you installed the Swagger GUI and the index.html file mentioned in the blog post?
/Kim
-
January 15, 2024 at 14:13 #57418
kimbomadsen
KeymasterHi
It has just been released.
/Kim
-
September 7, 2023 at 11:22 #57287
kimbomadsen
KeymasterHi,
I will look into it.
Thanks for the bug report.
/Kim -
August 11, 2023 at 08:50 #57257
kimbomadsen
KeymasterHi,
Perfect 🙂
/Kim
-
July 16, 2023 at 13:17 #57240
kimbomadsen
KeymasterHi,
It sounds like you are trying to recompile kbmMW CE.
You cant do that since no source files are included.
kbmMW’s installer will automatically install the packages and dcu files for you.
Always make sure your projects can locate the dcu files when compilling./Kim
-
June 25, 2023 at 14:06 #57216
kimbomadsen
KeymasterHi,
Send me the smallest sample project possible showing what should work and what does not work, and I will have a look at it.
-
June 18, 2023 at 17:10 #57210
kimbomadsen
KeymasterHi,
It was designed in such way that you should create your own descendant of TkbmMWI18NCustomStorage and override InternalGetLanguages, InternalLoad, InternalSave and InternalDelete.
InternalGetLanguages should return an array of strings with the found language names.
InternalLoad will load one of the langauges (based on the name), InternalSave will save changes to one language, InternalDelete should remove the language./Kim
-
June 11, 2023 at 00:07 #57179
kimbomadsen
KeymasterHi,
Yes kbmMW supports that. If you will need the ORM or not depends.
kbmMW natively supports dynamic SQL and you can retrieve info about tables etc using its metadata system.
The ORM however allows you to “surface” a true database table as an ORM table, which means you have full access to manipulate it via the ORM and via your own objects.
Combine this with kbmMW SmartBind and you can build very dynamic user interfaces.
/Kim
-
June 10, 2023 at 23:53 #57177
kimbomadsen
KeymasterHi,
Thank you for your bugreport.
Parsing scientific numbers will be improved in next release for both JSON and YAML.
/Kim
-
June 10, 2023 at 20:57 #57175
kimbomadsen
KeymasterI replied to the first post I received from you at April 24 2023.
I hope you did receive it. If not the reply is here:
“Actually I can only see you having an original Enterprise Edition new license purchase Sep 18 2019.
As the SAU is 12 months _extension_ it will extend from the expiration of the previous license period, which were April 20 2020 (6 months + a few days).
So your new SAU extension would usually have an expiration at April 20 2021.
The alternative is to purchase enough extensions to get back on track, or purchase a new license with a 10% back on track discount, which again would include 6 months SAU.
Instead I have (actually wrongly.. but my mistake) acted as you have purchased a new license, which thus contains 6 months SAU, but essentially with 50% discount. ”/Kim
-
June 10, 2023 at 20:54 #57174
kimbomadsen
KeymasterI have had a look at it.
To fix the disconnection issue do the following:At line 352 in kbmMWTCPMessagingClientTransport.pas, add line:
if not FConnection.IsClosed then
before
FConnection.Close;
Remove line 362 in the same unit. The line reads:
InternalCloseSocket;
/Kim
-
June 10, 2023 at 11:51 #57173
kimbomadsen
KeymasterHi,
I do not know why MSSQL or DevArt do not respect your setting, or if it really takes that long to process the records that the timeout happens anyway. You could try to set it to -1 as that should make it default to MSSQLs default setting which is infinite.
However I have added a BatchSize property (default 0) to the resolver. It will autocommit every n records. It will however work against the allornothing=true setting, as that will only be related on the latest batch, and not on all previous already committed batches./Kim
-
June 9, 2023 at 21:48 #57171
kimbomadsen
KeymasterWell… one thing might be that the initial free is running on a bad pointer.
But it would be helpful to see how the definition of TPMItem and TPMRequirementItem actually is./Kim
-
April 17, 2023 at 23:53 #57108
kimbomadsen
KeymasterHi,
I have fixed it for next release.
/Kim
-
April 17, 2023 at 23:49 #57107
kimbomadsen
KeymasterHi,
Hmm… I wonder if FPC has added a few more TFieldType entries than before?/Kim
-
April 17, 2023 at 23:47 #57106
kimbomadsen
KeymasterHi,
You can use SQL function DATE(col). It will essentially do the same (use trunk)
/Kim
-
April 17, 2023 at 23:43 #57105
kimbomadsen
KeymasterHi,
In principle yes. I have however not released any software for OS/X 64 bit, but have released software for Android and IOS 32/64 bit including kbmMemTable.
I would think it will work fine in 64bit OS/X.
/Kim
-
April 17, 2023 at 23:41 #57104
kimbomadsen
KeymasterHi,
Is it with any CSV file of any length? Can you please try to send an extremely simple sample for me to test?/Kim
-
April 17, 2023 at 23:37 #57103
kimbomadsen
KeymasterHi,
I honestly no longer test for compatibility for pre XE7, why I would recommend using XE7 or newer, although it probably will compile with XE5 too.
The reason for it, is that generics, which I am taking advantage of especially in kbmMW, but also in kbmMemTable, cant be considered stable until XE7.
You can disable compiling kbmMemTable with support for generics by undefining KBMMEMTABLE_SUPPORT_GENERICS.
I however do not test without that defined except in relation to FPC.
/Kim
-
April 17, 2023 at 23:32 #57102
kimbomadsen
KeymasterHi,
You need to define an index first and then switch to it.
Use AddIndex. Then set IndexName:=your defined indexname.
Then you can make case insensitive lookups.
/Kim
-
April 17, 2023 at 23:29 #57101
kimbomadsen
KeymasterHi,
It is using TPerlRegEx under the hood to do the LIKE wildcard comparisons.
TPerlRegEx is default not case sensitive. Currently there are no options in kbmMemTable to make LIKE case insensitive, except to do an UPPER or LOWER on the value to compare with to force the same case./Kim
-
April 17, 2023 at 23:19 #57100
kimbomadsen
KeymasterHi,
Hmm… replied and my reply got lost… trying again (just if someone notice that there are two replies at some point in time).
I honestly do not test with D2010 and have not for quite a while.
I would recommend XE7 and up, although it will probably compile with XE5 too./Kim
-
January 10, 2023 at 21:21 #56942
kimbomadsen
KeymasterIs it possible to make a small sample provoking the error?
I do not see that problem while shutting down my own applications using latest kbmMW.
So probably there is a difference (one difference is that I do not use SSL in the most acticely worked on applications. I instead use AES256 directly of various reasons)./Kim
-
January 10, 2023 at 20:53 #56937
kimbomadsen
KeymasterIt does indeed clean it up at finalization, if the depending units have first been finalized.
It is all governed by the kbmMWDependency unit.
If it does not call the RunFinalization procedure in the kbmMWSmartEvent.pas unit during shutdown, there is something preventing it to do so.
If you can provide a (small) sample not requiring 3rdparty (except kbmMW/MemTable) that do not clean up, then I would be interested in getting that.It could also be that MadExcept is building its trace a bit to early in the shutdown phase.
-
January 9, 2023 at 14:53 #56929
kimbomadsen
KeymasterHi,
Check this whitepaper. It have lots of goodies, including what you are asking for.
Click to access Tips%20and%20tricks%20with%20kbmMemTable.pdf
/Kim
-
January 8, 2023 at 17:14 #56925
kimbomadsen
KeymasterHi,
As far as I can see it is TkbmMWEvents that are leaked?
It is usually a singleton, unless you defined it yourself somewhere in your code?Have you tried to issue a kbmMWShutdown before closing your application?
/Kim
-
January 8, 2023 at 17:10 #56924
kimbomadsen
KeymasterHi,
The reason is that kbmMW do not know the parameter definitions or the returned field definitions in advance, and have various ways to ask for that.
The default is to first ask for the parameter definitions from the database so you can fill them out.
That will result in the first call.
After that it will ask for the field definitions from the database as they can change based on your parameters. That will result in a 2nd call.
Then it will ask for the actual data from the database from the stored procedure. That is the 3rd call.Then you may have a client side stored procedure component, which are doing exactly the same, which is then resulting in a flood of calls to the server.
To avoid that predefine parameters, and set AutoFieldDefsOnOpen to mwafoWithData or predefine fielddefs and set it to mwafoNever.
Do the same on the client side.
Further, if you do not predefine the fields/parameters on the client side and use mwafoNever, then you might want to enable cache on the connection pool for the client side, to handle some of the redundant calls to the server for definitions.
/Kim
-
January 8, 2023 at 17:01 #56923
kimbomadsen
KeymasterWhat have you setup the connection pool as?
And what metadata component are you using with it?/Kim
-
December 6, 2022 at 21:23 #56829
kimbomadsen
KeymasterHi,
I am having a look at it. It seems FPC do not like VarAsType very well. I have tried to change it to VarToStr which makes it not barf over it, but later the IsWild function or something after that (I have serious problems stepping into library code using trunk version of FPC also with new debugger) makes it look as there is a match even if there is not.
/Kim
-
December 4, 2022 at 00:04 #56814
kimbomadsen
KeymasterHi,
It is done so to explicitly disallow case sensitive sequence names. So I could choose if it should all be upper case or lower case. I decided for uppercase 🙂
When would you want to use lower case or mixed cases?
/Kim
-
November 24, 2022 at 01:51 #56782
kimbomadsen
KeymasterHi,
You can do:
ResponseTransportStream.Params.Values[KBMMW_HTTP_PARAM_OK_STATUS_CODE]:=’201′;
/Kim
-
November 24, 2022 at 01:45 #56781
kimbomadsen
KeymasterHi,
Check this link for some background info:
https://forums.devart.com/viewtopic.php?t=35949You can set OLEDBCompatible property to true on the TkbmMWDBXConnectionPool instance.
/Kim
-
November 24, 2022 at 01:40 #56780
kimbomadsen
KeymasterYes,
There is actually a sample included doing exactly that… (and a bit more showing Websocket support).
/Kim
-
November 7, 2022 at 11:44 #56749
kimbomadsen
KeymasterI will in the fix release also provide a new global kbmMWShutdown method, which will be used for signalling all long running parts of kbmMW to shut down as soon as possible.
/Kim
-
November 5, 2022 at 01:06 #56742
kimbomadsen
KeymasterHi,
The ASettings argument is simplified YAML format. It use a property: value scheme where the property name and value follows the YAML syntax for strings.
YAML strings only needs to be quoted if there can be a misunderstanding of the strings composition.
Check this link for more info.
https://stackoverflow.com/questions/19109912/yaml-do-i-need-quotes-for-strings-in-yamlThe ASettings content depends on the storage type.
In case of the JSON and YAML storage types currently bundled with kbmMW, they accept property names: file, encoding and ignoreMissingFile, where file is a string path to the file to contain the i18n storage, encoding either utf-8 or utf-16 and ignoreMissingFile either true or false (default false). If true, no exception will be thrown trying to load a non existing storage file.If you would want to make a new custom i18n database bound storage, the ASettings property would probably include a connection string to the database along with other relevant properties.
-
November 5, 2022 at 00:56 #56741
kimbomadsen
KeymasterHi,
I suppose you are talking about Indy Client messaging transport vs native Client messaging transport?
/Kim
-
November 4, 2022 at 22:30 #56739
kimbomadsen
KeymasterHi,
Fixed in fix release.
/Kim
-
November 4, 2022 at 21:53 #56736
kimbomadsen
KeymasterHi,
I do not see server freezing in my setup, but I do see it no longer grabbing screenshots.
In my case it is because the DirectX stuff is running out of resources of some reason (code 0x80070057).One reason could be that my screen is 5120×2500.
Switching back to GDI makes it capture fine again without problems.
If indeed your server freezes, it is most likely due to problems with the DirectX GPU drivers.
/Kim
-
November 4, 2022 at 21:05 #56735
kimbomadsen
KeymasterHi,
Will fix in fix release.
/Kim
-
November 4, 2022 at 20:57 #56734
kimbomadsen
KeymasterDamn!
Well.. it will be in the bugfix update to be released shortly.
/Kim
-
October 30, 2022 at 04:34 #56712
kimbomadsen
KeymasterHi,
I have changed it for 5.20.
/Kim
-
October 30, 2022 at 04:28 #56711
kimbomadsen
KeymasterGrr…. it is a problem due to the use of TBitmap in threads.
It has always been somewhat scary to use TBitmap in a multithreaded environment. But it usually worked, when one remembered to lock the canvas before use.
However I think something has changed in the locking mechanism, since TBitmap.Canvas.Lock quite often ends up in a deadlock situation. As I remember, it did not do that with an earlier Delphi compiler.
Anyway…. it has resulted in almost 3 days and nights without much sleep, adding a new kbmMWDIB.pas unit, and completely dropping the use of TBitmap on the server side.
The good thing is that the new TkbmMWDIB bitmap class is much faster for what we use it for, because it does not contain any fluff like TBitmap and TCanvas, and specifically it does not require locking to operate in its own thread.
In addition I have changed the transport on the server from Indy to our own native IOCP transport, because it scales vastly better and performs very well.
All changes in the release being prepped right now!
/Kim
-
October 27, 2022 at 20:06 #56702
kimbomadsen
KeymasterHi,
Yes it will automatically attempt a lookup of the property text in the phrase section.
Sp it would look for sCancel in phrases.
/Kim
-
October 27, 2022 at 19:49 #56701
kimbomadsen
KeymasterHi,
You also need to enable the “masterswitch”:
i18n.LearnProperties := True;
i18n.Load(”, ‘test.yaml’,true);/Kim
-
October 27, 2022 at 19:46 #56700
kimbomadsen
KeymasterThx
Is in upcoming release.
/Kim -
October 27, 2022 at 19:43 #56699
kimbomadsen
KeymasterCheck new release about to be released to see if it solves the problem for you.
/Kim -
August 28, 2022 at 13:32 #56631
kimbomadsen
KeymasterFYI next release will include native MetroHash64 and MetroHash128 implementations.
I have not made any changes currently for replacing FNV1A with another hash in the codebase, but will keep it in mind at least for a performance benchtest to see if there is a significant impact or not.
/Kim
-
August 24, 2022 at 20:45 #56594
kimbomadsen
KeymasterHi,
Thanks for the pointer…. I have just had a look…. I may look into supporting it natively at some point, but one of the drawbacks performance wise, is that for multiplatform support, I would need to use Pascal only implementation at least for some platforms, which will make it slower than others. It performs really well when using the SSE2 variant
Other options that I have been referred to is Metro64, which seemingly is faster (using non assembler code) and has a better hashing quality.
I will have a look at them all… if better performance for specifically those places where hashes are used extensively (memory debugging lists etc.) can be achieved, it is worth a look 🙂
/Kim
-
July 25, 2022 at 10:59 #56566
kimbomadsen
KeymasterTkbmMWScheduledEvent.Terminate contains locking to prevent the scheduled event being executed or being scheduled for execution if it is about to be terminated vs. termination setting awaits execution finishing.
/Kim/C4D
-
July 25, 2022 at 10:49 #56565
kimbomadsen
KeymasterHi,
Thank you for your bugreport and fix. It will be in next release!
/Kim/C4D
-
July 10, 2022 at 11:09 #56549
kimbomadsen
Keymaster1) Variable capturing is a feature of Delphi, and it should work regardless of how the anonymous function is used, as long as it is within scope of the running code. Since the function must be in scope when you run it (otherwise you would get an A/V), the captured variables ought to be live too. If not it is a bug in Delphi.
However you can use the Withxxxx(..) methods to include data to your scheduled task. You can access that data from the AEvent instance’s Data, &Object or &Interface properties in the event procedure.
2) That is what RunNow does. It schedules an event to run async as soon as possible. You can force it to run sync using the Synchronized or SyncQueued setting, but you can also use InAMoment which is the same as RunNow but which will queue the event on the main thread (typically for visual updates).
3) Hmm… there are 3 types of threads handled by the Scheduler: a) The main VCL thread, b) pool of threads for precise events, c) pool of threads for relaxed events
a is governed by the VCL. b and c respectively require all threads to run with same priority. b has no limits on the number of allocated system threads, while c has.
Generally it is not recommended to make changes to scheduled events active state from within a scheduled event.
Instead set its pause property, as this will not interfere with its spooling up/down, but will prevent it from being run if not already running. -
July 9, 2022 at 20:47 #56545
kimbomadsen
KeymasterSince kbmMW is dual use software (used for military purposes as well as civilian), it has been necessarily to vet each download of kbmMW Community Edition, to filter out users from Russia and Belarusia.
For that reason it no longer automatically is available for download.
/Kim/C4D
-
July 9, 2022 at 20:45 #56544
kimbomadsen
KeymasterHi,
You inherit from it and override its InternalProcessMessage(const ASender:TObject; const AMessage:IkbmMWCustomTransportStream; var AAction:TkbmMWMessageProcessingSuccessAction) procedure or put an event handler in the OnProcess event. The procedure or event is called for each message to process.
You should set the AAction property to the status of your processing.
mwpsaRollback: Message will be rolled back, and whatever rollback processing will happen. It means that the message will be retried later, unless rolled back too often where stale detection kicks in.
mwpsaReject: Means you specifically reject the message. It will be placed on the reject queue if such is setup on the queue that is being processed.
mwpsaDelete: Message is deleted.
mwpsaCommit: You have done with the message what you want to do, successfully. After commit, the message is basically gone.
mwpsaRetry: Will retry in a short moment. Better use rollback to ensure that stale detection can kick in.
mwpsaSkip: Will skip the message. No rollback nor commit will happen. Rarely use.
Then instantiate an instance of the processor, set its Queue property to point on a queue you want it to process, and call Start. When you no longer want it to process messages call Stop.
/Kim/C4D
-
July 6, 2022 at 22:18 #56540
kimbomadsen
KeymasterHi,
What type transport are you using?
/Kim/C4D
-
June 7, 2022 at 00:17 #56504
kimbomadsen
KeymasterYou can enable use of TMonitor for locking instead of kbmMW’s own fast MREW locking mechanism by defining: KBMMW_SUPPORT_MONITORLOCK
/Kim/C4D
-
June 7, 2022 at 00:15 #56503
kimbomadsen
KeymasterIt is definitely not better 🙂
The compile problem comes due to that Delphi MREW do not support timeout for BeginRead or BeginWrite methods.
As some parts of code will want to support timeout, I am not so sure if it is worth retrofitting it to support the parameter but ignore it.
/Kim/C4D -
June 6, 2022 at 23:45 #56500
kimbomadsen
KeymasterAs they have now been running in production for some time, the kbmMW Socket WIB server side transport will be included in next release.
/Kim/C4D -
April 6, 2022 at 12:49 #56404
kimbomadsen
KeymasterActually disregard that. It should be working even with that definition.
LMarshaller is defined in kbmMWGlobal.pas as long as ANDROID is defined and KBMMW_NODEBUG is not defined.So I wonder if it is finding an older kbmMWGlobal.pas compiled unit?
/Kim
-
April 6, 2022 at 12:46 #56403
kimbomadsen
KeymasterHi,
Have you defined KBMMW_NODEBUG somewhere before compiling? If yes, try to remove the definition.
/Kim
-
April 6, 2022 at 12:44 #56402
kimbomadsen
KeymasterHi,
Thank you for the report. I will have a look at it….
/Kim
-
April 6, 2022 at 12:44 #56401
kimbomadsen
KeymasterHi,
I would not expect a component owned by the form to be manually freed. What happens if you instantiate it without ownership and then free it?
/Kim
-
April 6, 2022 at 12:43 #56400
kimbomadsen
KeymasterHi,
Delphi is a 32 bit IDE, so you only install the 32 bit variant of kbmMemTable designtime in the IDE.
Having done that, you can easily compile your applications for 64 bit by just setting the appropriate target in your project settings./Kim
-
March 29, 2022 at 10:40 #56361
kimbomadsen
KeymasterThey have still not been released. But they are getting more and more relevant for some projects for me, why they are getting more and more attention 😉
-
March 29, 2022 at 10:39 #56360
kimbomadsen
KeymasterYeh.. but it could read that I unfortunately reply full stop 😉
-
March 28, 2022 at 18:02 #56345
kimbomadsen
KeymasterThe TkbmMWFilePool should in itself be threadsafe, as long as you are using the Access and ReleaseAccess methods and never manually trying to free any TkbmMWFileReference instance returned by Access.
/Kim
-
March 28, 2022 at 17:57 #56344
kimbomadsen
KeymasterHi,
You can set events.ExceptionHandling to one of mweehIgnore,mweehLog,mweehExcept. It is default set to mweehIgnore.
Even when set to ignore, you can use the event handler OnException to silently catch the exception at runtime./Kim
-
March 28, 2022 at 17:52 #56343
kimbomadsen
KeymasterHi
There will be an additional set of events which will include the context.
The first context less event will be called first, then the event with context./Kim
-
March 28, 2022 at 17:48 #56342
kimbomadsen
KeymasterUnfortunately? 😉
-
March 28, 2022 at 17:47 #56341
kimbomadsen
KeymasterHi,
The reason is that IndexFieldNames is empty before the FindKey call. It will become that if you switch from another index back to the row order index for example.
There were a bug which were fixed in 7.93 which probably could be the reason you see this, as previous versions incorrectly did not reset it to an empty string when switching to the roworder index./Kim
-
March 28, 2022 at 17:41 #56340
kimbomadsen
KeymasterHi,
The fix will be included in upcoming release.
/Kim -
January 20, 2024 at 22:44 #57445
kimbomadsen
KeymasterIn the URL, http://127.0.0.1:888/xxx/yyy/index.html?url=/xxx/yyy
xxx must be the same on both sides, and similarly with yyy.
It is a “feature” of the index.html file and/or Swagger itself from what I can tell.So if you want to have another Swagger entry into a different side of your server, you will need to add another OpenAPI method on that additional service, and make sure it responds to another xxx path.
Eg. http://127.0.0.1:888/myotherentry/api/index.html?url=/myotherentry/api
Then your additional service should have a kbmMW_REST attribute that names it to be called as myotherentry, in same syntax style as the first REST’able service.
/Kim
-
August 11, 2023 at 08:49 #57256
kimbomadsen
KeymasterHi,
Seems like the BPL files may not be in the Windows PATH or in Delphi’s library search path.
/Kim
-
June 11, 2023 at 00:02 #57178
kimbomadsen
KeymasterHi,
Visit: https://blog.csdn.net/qq_18932003/article/details/103253217
You may need Google Translate as it is a Chinese article.
/Kim
-
June 9, 2023 at 23:44 #57172
kimbomadsen
KeymasterWell CopyMemory does internally use Move and nothing else.
But the problem most likely is that DrawData should be changed to:
procedure TkbmMWDIB.DrawData(const ASourceData:pointer);
begin
if ASourceData<>nil then
Move(ASourceData^,FData^,FBytes);
end;Regarding order of monitors.
According to the Win32 docs, then EnumAdapters1 will first return the adapter holding the primary monitor (index 0).
On that adapter, EnumOutputs will first return the output that is connected to the primary monitor (again index 0).
So there should be no reversal in the way that kbmMW remote server DXGI retrieves monitors as far as I can see.
/Kim
-
February 1, 2023 at 01:58 #56994
kimbomadsen
KeymasterHi,
At any point in time you want to.
And remember to switch to it, then your deleted records will show up too.Example from the Win32 demo:
// Define special index for deleted records (index must include at least one field name to index on, in this case PERIOD)
kbmMemTable1.AddIndex2(‘deleted’,’PERIOD’,[],[usDeleted]);
kbmMemTable1.IndexName:=’deleted’;/Kim
-
January 11, 2023 at 01:01 #56945
kimbomadsen
KeymasterThanks! Received it. I will check it out!
/Kim
-
January 10, 2023 at 21:02 #56939
kimbomadsen
KeymasterCan you show me a small sample here of how you were creating the tables with quotes, so I get an understanding of if it is something that I need to look into 🙂
/Kim -
January 10, 2023 at 21:00 #56938
kimbomadsen
KeymasterTry to set it to afoWithData.
Amd you may choose to do a FetchDefinitions for relevant server side StoredProc/Query components before first use. Then they will know what parameters are available.
/Kim
-
January 9, 2023 at 15:46 #56930
kimbomadsen
KeymasterYes, adding kbmMWSmartEvent to the uses clause makes a singleton Event variable available, which is used for subscribing for events and notifying others about events happening.
/Kim
-
December 6, 2022 at 01:30 #56826
kimbomadsen
KeymasterHi,
Ok… so you want to download a file using kbmMW from another, non kbmMW HTTPS site?
kbmMW primarily focus on the server side of things when we are talking about HTTP/REST etc. so it does not include a generic HTTP client side component as it is today.
However, now that we have a native socket library that is getting to be stable included, it is something that I most likely will put some focus on in the future, as client/consumer side support for various things is a missing feature./Kim
-
December 4, 2022 at 19:59 #56824
kimbomadsen
KeymasterHi,
Just set it to REST.
It supersedes HTTP.
/Kim
-
December 4, 2022 at 00:14 #56815
kimbomadsen
Keymaster?? Not understood.
What do you mean?
/Kim
-
December 4, 2022 at 00:00 #56813
kimbomadsen
KeymasterHi,
You should be able to do the following in the method that handles your request in the server:
ResponseStream.Error(KBMMW_ERR_HTTP_EXCEPTIONS_MIN+310,’Returning HTTP status 310′); // This will not raise an exception.
Or if you want to signal an error and thus want to signal a specific error code, but not return data. It will actually raise an exception.
kbmMWRaiseHTTPError(310.’Returning HTTP status 310′);
/Kim
-
November 24, 2022 at 12:07 #56785
kimbomadsen
KeymasterHi,
Ok.. I assumed you were talking about our native transports and REST.
/Kim
-
November 24, 2022 at 01:39 #56779
kimbomadsen
KeymasterHi,
My guess is that Indy do not detect disconnection until the time when you try to send something due to it being a blocking non async transport, while the native transports are pure async transports, and any changes from the stack will be signalled back as soon as possible.
/Kim
-
November 24, 2022 at 01:37 #56778
kimbomadsen
KeymasterHi,
I am looking into the leak.
/Kim
-
November 7, 2022 at 11:47 #56750
kimbomadsen
KeymasterIt will fix the state data leak too yes.
/Kim
-
November 5, 2022 at 23:15 #56745
kimbomadsen
KeymasterWhen using messaging for request/response, it is in reality not the transport that is blocking since that is by definition non blocking, and in the native transports even more so (since the none blocking appearance is simulated using Indy which internally really _is_ blocking…. confused?? 🙂 )
But what is really blocking it is the TkbmMWCustomClient (and its descendants), who will ask the transport to maintain a list of outstanding requests and await the response of the one matching the client’s current request.
You can hook into the wait behaviour via the client event OnClientWaitingResponse.
You will be getting info in the arguments about how long time is left waiting for the client, roughly 10 times a second.You will also be able to set the AAbort argument to true, in which case the wait will immediately stop.
So you could add this line to the event:
AAbort:=Application.Terminated;
Then the client will not await any responses from the server if the application is being shut down.
/Kim
-
November 4, 2022 at 22:32 #56740
kimbomadsen
KeymasterHi,
Problem is that I do not see a server unresponsive situation. In fact the server continues fine, but no screens are forwarded in my case and I can switch on the fly to GDI.
I’m running on dual Titan V cards.
So it will probably need some debugging on your specific setup to figure out where it hangs.
/Kim
-
July 10, 2022 at 10:19 #56548
kimbomadsen
KeymasterThose messages may somehow throw exceptions and be rolled back to the queue. If no stall detection is defined, then they will stick there.
However I have seen relatively rare situations where the Indy transport implementation may not provide a complete message to the messaging framework. It is changed with the native messaging transport, which handles all the packet fragment collection itself.
/Kim/C4D
-
June 14, 2022 at 12:07 #56514
kimbomadsen
KeymasterThank you. It is changed in next release.
/Kim/C4D -
June 7, 2022 at 21:17 #56507
kimbomadsen
KeymasterYes… only one of them can be enabled at any time.
/Kim/C4D -
June 7, 2022 at 00:09 #56502
kimbomadsen
KeymasterHi,
Try to open kbmMWCore.pas, locate kbmMWGetCurrentThreadID and change its return value type to TkbmNativeUInt instead of TkbmNativeInt. Then recompile and check if your application works then.
Please report result back to me./Kim/C4D
-
June 7, 2022 at 00:03 #56501
kimbomadsen
KeymasterI agree on your last suggestion so will remove the call to DoOnLoginSuccess when the user is already logged in.
/Kim/C4D
-
February 23, 2022 at 23:49 #56262
kimbomadsen
KeymasterHi,
There will be some improvements in next version, which _may_ affect your observation.
/Kim
-
-
AuthorPosts
