Persistency question...

Frank Fock Frank.Fock____t-online.de
Fri Feb 18 01:25:49 CET 2000


Hi Coung,

thank you very much for your comments / suggestions. I think you
have a very good understanding of how AGENT++ works inside.

I agree to all three points. I will try to implement something like
a VirtualMibTable for the next release (including an interface for
fine grain persistency). In my opinion, it will be sufficient to subclass
MibTable, but I am not sure...

Best regards,
Frank

Cuong Nguyen wrote:

> Hi folks,
>
> I just started looking over agent++ and have a few questions regarding
> persistency and other things.  I did read through the documentation and
> looked over the example codes before posting this message.  I'm new to this
> code so if I'm say something that is completely
> wrong please correct my assumption as appropriate.
>
> 1 - it seems that an entire MIB table is made persistent at a time.  For
> example the atmMib
>     example shows that an entire VPL table is stored and retrieved at once
> during
>     construction and destruction.  Now when a table consists of a very large
> number of
>     entries this could be a very time consuming and inefficient step.  For
> example, in
>     practical use an ATM VPL table could consists of tens of thousands of
> entries (or
>     more).  Are there other alternatives for this such as storing the
> entries in indexed
>     file and retrieving a row at a time instead of an entire table?  What I
> would like to
>     do is not retrieve the row until it is actually accessed because of a
> request rather
>     than at the time of construction.  I guess I can do this using the
> mechanism described
>     in my second question below.
>
> 2 - Similar to the question 1, I have question for get_next.  Currently it
> looks like the
>     "get_next" processing is handled completely by the agent++ toolkit.
> This makes sense
>     again for smaller agent implementation but for large tables such as ATM
> VPL, this would
>     be problematic since the agent expects to know about all the entries in
> the table (all
>     entries must be added specifically).  Currently, when a get_next is
> requested, the
>     Mib::find routine is executed which searches the "content" list which is
> a list of all
>     existing rows (again it looks like all rows must have been previously
> added to the
>     agent).  What I would like to be able to do is to have virtual rows that
> does not
>     have to be added to the MIB until it is requested by someone.  So when
> get_next is
>     called I would like to have an opportunity to add the row at that time.
> I guess I can
>     do this myself by overloading the "get_next" routine for a given table.
> Then, I can
>     look in my own cache to see if the object exists then check to see if it
> is in the
>     "content" list already or not.  If not I can add it to the content list.
> I guess I
>     would also like to remove the entry from cache at some point (when?).  I
> would refresh
>     my cache from persistent storage if the cache object does not exist.  If
> the object
>     is not in persistent storage either then I would not add to the
> "content" list which
>     would result in a "no-such-name" error from get_next.  It would be nice
> if this behavior
>     is modeled in the library so I don't end up just hacking it :-).
>
> 3 - another similar issue is when a MIB table and all rows are derived
> dynamically or maybe
>     is a model of a database or log file.  In this case it is not efficient
> to load the
>     entire log file or database in at the time of construction.  It would be
> better if only
>     the required row is retrieved at the time of request.  In this case the
> agent library
>     might want to provide a method by which the agent call the "table" (not
> entry) object
>     to retrieve the row in question at the point of request.  This means
> that the agent
>     does not know at all whether the row is present and must leave the
> determination to
>     runtime code.  The agent library may also need help from runtime code to
> determine if
>     a column exists.  To do get_next in this case the agent library will
> also have to
>     delay the determination of the next valid "row" in a table to runtime
> code.
>
> Again, I'm new to this code so if I'm totally off in my understanding of the
> code please
> forgive me.  Thank you for your time.
>
> Cuong.




More information about the AGENTPP mailing list