Menu
Embarcadero
Third Party
Related Sites


[remobjects.public.sdk.delphi]

Last 20 msg

Re: Change message stream type?
Patrick van Logchem [09 Sep, 10:12]

Read complete thread - Add Patrick van Logchem to favorite authors (login)
Oh, but we already use FastMM (although NexusMM works great too, especially 
on SMP machines)!

But the thing is, when allocations occur frequenty and vary in size 
regularly, in a long-running server eventually the virtual memory space 
starts to become so fragmented that larger allocations won't fit anymore, 
and thus raise an EOutOfMemory exception. Some of our messages are large 
enough to be hindered by this (granted, most are small enough to be handled 
efficiently by the MM itself, if we let it).

In any case, we've discovered that changing all 'risky' allocations (the 
ones that can occasionally get too big) to use a fixed block size (64 KB 
right now) fixes this problem almost entirely (until we run completely out 
of memory ofcourse). Sure, "blocked allocations" don't really reduce 
fragmentation, but it does prevent the EOutOfMemory exceptions that happen 
when allocating large amounts of memory - by always allocating those in a 
'blocked' fashion.

The implication is, that small messages also cost a block, which is way too 
much for most cases (but with an efficient pool management layer, this 
doesn't really cost any extra performance). However, for our application, 
reaching a high memory-utilisation factor itself is not really an important 
design-goal - but stability is!

Bottom line is, that using TMemoryStream as a buffer for 
message-construction is just not an option for us (hence my request for a 
stream-factory).
So you see : Some servers really need to actively address 
memory-fragmentation!

Cheers,
Patrick van Logchem.

"Michael Schnell" <mschnell@lumino.de> wrote in message 
news:i6a4fo$se1$1@news.remobjects.com...
> On 09/07/2010 01:48 PM, Patrick van Logchem wrote:
>
>> I ask, because in our app we have to actively address memory 
>> fragmentation.
>
> What about using an alternative memory manager such as FastMM 
> http://sourceforge.net/projects/fastmm/
>
> Same allocates "small" memory blocks with a constant size. As it's open 
> source you obviously can define the limit which blocks are to be 
> considered as "small".
>
> -Michael 


Re: Change message stream type?
Michael Schnell [09 Sep, 09:05]

Read complete thread - Add Michael Schnell to favorite authors (login)
On 09/07/2010 01:48 PM, Patrick van Logchem wrote:

> I ask, because in our app we have to actively address memory fragmentation.

What about using an alternative memory manager such as FastMM 
http://sourceforge.net/projects/fastmm/

Same allocates "small" memory blocks with a constant size. As it's open 
source you obviously can define the limit which blocks are to be 
considered as "small".

-Michael
Re: Authentication providers?
Patrick van Logchem [09 Sep, 08:37]

Read complete thread - Add Patrick van Logchem to favorite authors (login)
I don't know if using a fully-featured DA service like Relativity is what we 
need, I'll have to investigate. But I'm planning to move authentication to 
the middle tier (which would be written in C#), so having at LDAP access via 
your Internet Pack would be a great solution, thanks!

Are there any plans on supporting more authentication providers?

Oh, and could you please answer the other question: "what user management 
cockpits are commonly in use nowadays?
How could I (automaticaly) accept/import accounts from one source and add 
custom (or standardized) access levels to my data?"


Thanks in advance,
Patrick van Logchem


"Vyacheslav Dulnev [RemObjects Software]" <support@remobjects.com> wrote in 
message news:i67c5q$1mq$1@news.remobjects.com...
> Hi.
>
> Unfortunately in RemObjects SDK for Delphi such functionality is absent.
> LDAP client exists in our .Net Internet Pack 
> http://www.remobjects.com/ip.aspx It is used by our "Relativity" server, 
> http://wiki.remobjects.com/wiki/Relativity
>
> --
> Vyacheslav Dulnev
>
> RemObjects Software
> The Infrastructure Company
> http://www.remobjects.com
>
> On 9/7/10 2:47 PM, Patrick van Logchem wrote:
>> Hi there, I couldn't find this on the wiki, so please tell :
>>
>>
>>
>> Is there a feature in the RemObjects SDK that binds the authentication of 
>> a
>> user/client/session to an external authentication provider, like 
>> Kerberos/NT
>> Domains/LDAP/OpenID/whatever?
>>
>>
>>
>> Ideally, I would like to write as little authentication code as possible,
>> while still having control over authorization aspects (allowing or 
>> denying
>> customizable aspects, dependent on user level checks, access-masks, or
>> whatever else might be needed).
>>
>>
>>
>> As a sidenote, what user management cockpits are commonly in use 
>> nowadays?
>> How could I (automaticaly) accept/import accounts from one source and add
>> custom (or standardized) access levels to my data?
>>
>>
>>
>> Thanks in advance,
>>
>> Patrick van Logchem.
>>
>> 


Re: Change message stream type?
Patrick van Logchem [09 Sep, 07:58]

Read complete thread - Add Patrick van Logchem to favorite authors (login)
Okay, I see.

Just to satisfy my curiousity, do you use any TMemoryStream specific 
members? Or would plain TStream be enough for your internal use?

I ask, because you /could/ delegate all TMemoryStream creations to a 
'message stream'-factory (returning new stream instances as the basic 
TStream type), which would by default create a TMemorySteam, but can be 
changed in consuming code to create another stream type (like our 
TBlockedStorageStream).
With that mechanism, your flexibility would increase (like what happens with 
applying Dependancy Injection, of which this suggestion is an example).

What chances do we make that a future version of RemObjects SDK has this 
flexibility?

Regards,
Patrick van Logchem


"Vyacheslav Dulnev [RemObjects Software]" <support@remobjects.com> wrote in 
message news:i65ujf$2ik$1@news.remobjects.com...
> Hi.
>
> No, stream type is hard coded, stream is used internally and recreated 
> before writing new data in message.
>
> --
> Vyacheslav Dulnev
>
> RemObjects Software
> The Infrastructure Company
> http://www.remobjects.com
>
> On 9/7/10 2:48 PM, Patrick van Logchem wrote:
>> Hi there,
>>
>>
>>
>> Is it possible to change the type of stream used in the message brokers? 
>> In
>> all (Delphi) examples I've seen, RemObjects seems to be hardcoded to
>> TMemoryStream (I might be wrong in assuming it's hardcode, please 
>> enlighten
>> me).
>>
>>
>>
>> I ask, because in our app we have to actively address memory 
>> fragmentation.
>> One of the best methods to do this, is to use constant block sizes
>> everywhere and do as little string-concatenation as possible. So instead 
>> of
>> using TMemoryStream/TStringStream or TStringBuilder we've build our own
>> TBlockedStorageStream, which doesn't copy-on-grow, but uses a list of
>> fixed-size blocks, adding new ones where needed without having to copy 
>> over
>> the current contents. (This prohibits the 'Memory' property, but with a 
>> few
>> appropriate methods can be quite flexible : GetDataAsString,
>> GetDataAsRawByteString, etc.)
>>
>>
>>
>> Thanks in advance,
>>
>> Patrick van Logchem.
>>
>> 


Re: Authentication providers?
Vyacheslav Dulnev [RemObjects Software] [08 Sep, 07:58]

Read complete thread - Add Vyacheslav Dulnev [RemObjects Software] to favorite authors (login)
Hi.

Unfortunately in RemObjects SDK for Delphi such functionality is absent.
LDAP client exists in our .Net Internet Pack 
http://www.remobjects.com/ip.aspx It is used by our "Relativity" 
server, http://wiki.remobjects.com/wiki/Relativity

--
Vyacheslav Dulnev

RemObjects Software
The Infrastructure Company
http://www.remobjects.com

On 9/7/10 2:47 PM, Patrick van Logchem wrote:
> Hi there, I couldn't find this on the wiki, so please tell :
>
>
>
> Is there a feature in the RemObjects SDK that binds the authentication of a
> user/client/session to an external authentication provider, like Kerberos/NT
> Domains/LDAP/OpenID/whatever?
>
>
>
> Ideally, I would like to write as little authentication code as possible,
> while still having control over authorization aspects (allowing or denying
> customizable aspects, dependent on user level checks, access-masks, or
> whatever else might be needed).
>
>
>
> As a sidenote, what user management cockpits are commonly in use nowadays?
> How could I (automaticaly) accept/import accounts from one source and add
> custom (or standardized) access levels to my data?
>
>
>
> Thanks in advance,
>
> Patrick van Logchem.
>
>
Re: Change message stream type?
Vyacheslav Dulnev [RemObjects Software] [07 Sep, 19:00]

Read complete thread - Add Vyacheslav Dulnev [RemObjects Software] to favorite authors (login)
Hi.

No, stream type is hard coded, stream is used internally and recreated 
before writing new data in message.

--
Vyacheslav Dulnev

RemObjects Software
The Infrastructure Company
http://www.remobjects.com

On 9/7/10 2:48 PM, Patrick van Logchem wrote:
> Hi there,
>
>
>
> Is it possible to change the type of stream used in the message brokers? In
> all (Delphi) examples I've seen, RemObjects seems to be hardcoded to
> TMemoryStream (I might be wrong in assuming it's hardcode, please enlighten
> me).
>
>
>
> I ask, because in our app we have to actively address memory fragmentation.
> One of the best methods to do this, is to use constant block sizes
> everywhere and do as little string-concatenation as possible. So instead of
> using TMemoryStream/TStringStream or TStringBuilder we've build our own
> TBlockedStorageStream, which doesn't copy-on-grow, but uses a list of
> fixed-size blocks, adding new ones where needed without having to copy over
> the current contents. (This prohibits the 'Memory' property, but with a few
> appropriate methods can be quite flexible : GetDataAsString,
> GetDataAsRawByteString, etc.)
>
>
>
> Thanks in advance,
>
> Patrick van Logchem.
>
>
Change message stream type?
Patrick van Logchem [07 Sep, 12:48]

Read complete thread - Add Patrick van Logchem to favorite authors (login)
Hi there,



Is it possible to change the type of stream used in the message brokers? In 
all (Delphi) examples I've seen, RemObjects seems to be hardcoded to 
TMemoryStream (I might be wrong in assuming it's hardcode, please enlighten 
me).



I ask, because in our app we have to actively address memory fragmentation. 
One of the best methods to do this, is to use constant block sizes 
everywhere and do as little string-concatenation as possible. So instead of 
using TMemoryStream/TStringStream or TStringBuilder we've build our own 
TBlockedStorageStream, which doesn't copy-on-grow, but uses a list of 
fixed-size blocks, adding new ones where needed without having to copy over 
the current contents. (This prohibits the 'Memory' property, but with a few 
appropriate methods can be quite flexible : GetDataAsString, 
GetDataAsRawByteString, etc.)



Thanks in advance,

Patrick van Logchem.


Authentication providers?
Patrick van Logchem [07 Sep, 12:47]

Read complete thread - Add Patrick van Logchem to favorite authors (login)
Hi there, I couldn't find this on the wiki, so please tell :



Is there a feature in the RemObjects SDK that binds the authentication of a 
user/client/session to an external authentication provider, like Kerberos/NT 
Domains/LDAP/OpenID/whatever?



Ideally, I would like to write as little authentication code as possible, 
while still having control over authorization aspects (allowing or denying 
customizable aspects, dependent on user level checks, access-masks, or 
whatever else might be needed).



As a sidenote, what user management cockpits are commonly in use nowadays? 
How could I (automaticaly) accept/import accounts from one source and add 
custom (or standardized) access levels to my data?



Thanks in advance,

Patrick van Logchem.


Re: XE support?
Vyacheslav Dulnev [RemObjects Software] [07 Sep, 12:49]

Read complete thread - Add Vyacheslav Dulnev [RemObjects Software] to favorite authors (login)
Hi.

We are working on this and support for XE in installer may be included 
in our intermediate release in September. But now all _D15 packages are 
already included and you can install it manually.

--
Vyacheslav Dulnev

RemObjects Software
The Infrastructure Company
http://www.remobjects.com

On 9/3/10 8:04 PM, Edward Dressel wrote:
> Do we have to wait for the next major update before getting XE support?
>
>
Re: Syncing on the main (VCL) thread
Vladimir Lukyanchenko [RemObjects Software] [06 Sep, 13:29]

Read complete thread - Add Vladimir Lukyanchenko [RemObjects Software] to favorite authors (login)
Hello Gary,
SynchronizeInvoke determines whether events will be fired in the context 
of the main VCL thread (true, default) or not (false). By default, the 
Event Receiver will synchronize all events back to the main VCL thread, 
which makes it safe to access the user interface from your event handler 
code. If UI access is not needed, and your event handlers are 
implemented in a thread-safe fashion, you can disable this property to 
gain performance by having events fire in the thread where they were 
received. Also, if you are performing lengthy operations in your event 
handlers, your UI might freeze while event handlers execute and block 
the main VCL thread (which is responsible for user interaction); disable 
this property to avoid that.


-- 
With Best Regards

Vladimir Lukyanchenko
RemObjects Software
http://www.remobjects.com
Re: XE support?
<ekoindri@ekoindri.com> [04 Sep, 14:40]

Read complete thread - Add <ekoindri@ekoindri.com> to favorite authors (login)
RO Team should release new version without wait for major update,
or maybe send the new version with XE Support for customers only.

-- 
Regards,


Eko Indriyawan
www.ekoindri.com
Delphi makes me that a something impossible can be realized with possible 
way
"Edward Dressel" <none@none.com> wrote in message 
news:i5r9qv$qqr$1@news.remobjects.com...
> Do we have to wait for the next major update before getting XE support?
> 

XE support?
Edward Dressel [03 Sep, 18:04]

Read complete thread - Add Edward Dressel to favorite authors (login)
Do we have to wait for the next major update before getting XE support? 


Re: How to compile RemObjects_Indy_D12.bpl against latest IndyTiburon ?
Vladimir Lukyanchenko [RemObjects Software] [03 Sep, 16:51]

Read complete thread - Add Vladimir Lukyanchenko [RemObjects Software] to favorite authors (login)
Hello,
1. Open Options dialog of RemObjects_Indy_D12 package
2. Go Delphi Compiler -> Hints and Warnings
3. Set the following output warnings to True (old value is Error)
Explicit string cast with potential data loss = True
Explicit string cast = True

-- 
With Best Regards

Vladimir Lukyanchenko
RemObjects Software
http://www.remobjects.com
Re: uROBaseHTTPServer
Russell Jones [03 Sep, 04:54]

Read complete thread - Add Russell Jones to favorite authors (login)
Evgeny,

My bad - it is there. Windows search just didn't report it (I hate that).

Thanks

On 2/09/2010 3:31 PM, Evgeny Karpov [RemObjects Software] wrote:
> Russell Jones wrote:
>> I have a data module which I wrote several years ago (Delphi 2005)
>> which I'm now trying to build in Delphi 2010 with the latest release
>> of the RO SDK. It contains a TROBinMessage, a TROIndyHTTPServer and a
>> TROInMemorySessionManager, for which the IDE automatically adds the
>> following units: uROSessions, uROClient, uROServer, uROBaseHTTPServer,
>> uROIndyHTTPServer and uROBinMessage. But I can't find
>> uROBaseHTTPServer.pas anywhere, so my app won't compile. And I can't
>> remove the unit from the uses clause, because the IDE just adds it
>> back in.
>>
>> What's going on?
>
> uROBaseHTTPServer.pas can be found in ..\RemObjects SDK for Delphi\Source.
> Do you use 6.0.47.841?
>

Re: uROBaseHTTPServer
Evgeny Karpov [RemObjects Software] [02 Sep, 08:31]

Read complete thread - Add Evgeny Karpov [RemObjects Software] to favorite authors (login)
Russell Jones wrote:
> I have a data module which I wrote several years ago (Delphi 2005) which 
> I'm now trying to build in Delphi 2010 with the latest release of the RO 
> SDK. It contains a TROBinMessage, a TROIndyHTTPServer and a 
> TROInMemorySessionManager, for which the IDE automatically adds the 
> following units: uROSessions, uROClient, uROServer, uROBaseHTTPServer, 
> uROIndyHTTPServer and uROBinMessage. But I can't find 
> uROBaseHTTPServer.pas anywhere, so my app won't compile. And I can't 
> remove the unit from the uses clause, because the IDE just adds it back in.
> 
> What's going on?

uROBaseHTTPServer.pas can be found in ..\RemObjects SDK for Delphi\Source.
Do you use 6.0.47.841?

-- 
Evgeny Karpov

RemObjects Software
The Infrastructure Company
http://www.remobjects.com
uROBaseHTTPServer
Russell Jones [02 Sep, 02:51]

Read complete thread - Add Russell Jones to favorite authors (login)
I have a data module which I wrote several years ago (Delphi 2005) which 
I'm now trying to build in Delphi 2010 with the latest release of the RO 
SDK. It contains a TROBinMessage, a TROIndyHTTPServer and a 
TROInMemorySessionManager, for which the IDE automatically adds the 
following units: uROSessions, uROClient, uROServer, uROBaseHTTPServer, 
uROIndyHTTPServer and uROBinMessage. But I can't find 
uROBaseHTTPServer.pas anywhere, so my app won't compile. And I can't 
remove the unit from the uses clause, because the IDE just adds it back in.

What's going on?

Ta,
Russell Jones.

Re: How to compile RemObjects_Indy_D12.bpl against latest IndyTiburon ?
tan [01 Sep, 17:01]

Read complete thread - Add tan to favorite authors (login)
In article <MPG.26e83a0b3a6b3bca989680@news.remobjects.com>, 
tbronson_nospam_please@tickets.com says...
I have been able to compile the same version of Indy in D2007....


How to compile RemObjects_Indy_D12.bpl against latest IndyTiburon ?
tan [01 Sep, 16:24]

Read complete thread - Add tan to favorite authors (login)
I have the latest IndyTiburon installed in my D2009 IDE, and am trying 
to re-generate the RemObjects_Indy_D12.bpl to match that source.

I've uncommented  {$DEFINE RemObjects_INDY10C}, but I'm getting an 
error:

[DCC Error] IdGlobal.pas(4481): E1060 Explicit string cast with 
potential data loss from 'string' to 'AnsiString'
[DCC Fatal Error] IdBaseComponent.pas(162): F2063 Could not compile used 
unit 'IdGlobal.pas'

What am I missing?

thanks in advance.

p.s. my RO version is 6.0.43.801
Re: Client authorisation
Vyacheslav Dulnev [RemObjects Software] [30 Aug, 11:15]

Read complete thread - Add Vyacheslav Dulnev [RemObjects Software] to favorite authors (login)
Hi.

As I understood you want authenticate computer itself not user. So this 
is very similar to protection of software from unauthorized copy. The 
simplest solution - is usage some hardware values, MAC address of 
network adapter for example.

-- 
Vyacheslav Dulnev

RemObjects Software
The Infrastructure Company
http://www.remobjects.com

On 8/28/2010 1:20 PM, Michael J. Leaver (2BrightSparks) wrote:
> The traditional way of authenticating a user (or client) is for the
> client to supply a username and password to the server. However, in our
> case we don't want any user involvement. We want the client software to
> connect to the server and be authenticated without any user involvement.
> What we really need is for the client to connect to the server and for
> the server to know that the computer is authorised.
>
> In a LAN environment we could use the IP address, but this won't work
> outside a corporate LAN.
>
> If we used a username and password then if the password changed we'd
> need the user to change the password on the client machine (which we
> don't want).
>
> If we used some kind of signature, e.g. stored in a file or the
> registry, then that could be copied to another computer (which wouldn't
> be good).
>
> I did read one idea of using two sets of certificates and public/private
> keys, but it was way too convoluted and I don't think it was technically
> possible.
>
> I'm sure other people have done this before. Any suggestions welcome.
>
> Thanks
Client authorisation
Michael J. Leaver (2BrightSparks) [28 Aug, 11:20]

Read complete thread - Add Michael J. Leaver (2BrightSparks) to favorite authors (login)
The traditional way of authenticating a user (or client) is for the 
client to supply a username and password to the server. However, in our 
case we don't want any user involvement. We want the client software to 
connect to the server and be authenticated without any user involvement. 
What we really need is for the client to connect to the server and for 
the server to know that the computer is authorised.

In a LAN environment we could use the IP address, but this won't work 
outside a corporate LAN.

If we used a username and password then if the password changed we'd 
need the user to change the password on the client machine (which we 
don't want).

If we used some kind of signature, e.g. stored in a file or the 
registry, then that could be copied to another computer (which wouldn't 
be good).

I did read one idea of using two sets of certificates and public/private 
keys, but it was way too convoluted and I don't think it was technically 
possible.

I'm sure other people have done this before. Any suggestions welcome.

Thanks