Trac is being migrated to new services! Issues can be found in our new YouTrack instance and WIKI pages can be found on our website.

Changes between Version 19 and Version 20 of MonoLoader


Ignore:
Timestamp:
May 26, 2007, 6:45:34 PM (17 years ago)
Author:
ecoffey
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MonoLoader

    v19 v20  
    88  * Completely wrap libpurple API in .NET bindings.
    99  * ~~Fix the Mysterious Seg Fault On Exit (tm).~~
    10   * Re-examing and possibly re-implement signal-glue and API -glue code.
    11   * Give .NET Purple objects the ability to actually update their C counterpart (or create one).
    12     Possible solution:  Every api Object thats mapped to a purple object would inherit from Object.  Object would have a !IntPtr pointing to the C structure (or null if this is a "new" object). A potential constructor could look like:
    13     {{{
    14     public class Object {
    15         private IntPtr _c_structure = null;
    16         Object(IntPtr struct) {
    17            _c_structure = struct;
    18            _updateFromStruct();
    19         }
    20     }
    21     }}}
    22     And derived classes could be responsible for implementing _updateFromStruct().  Derived classes would also have to handle creation of their specific C struct:
    23     {{{
    24     public class Buddy : Object {
    25        Buddy(IntPtr struct)
    26           : base(struct)
    27        {
    28        }
    29 
    30        Buddy()
    31        {
    32           _c_structure = purple_buddy_new_glue();
    33        }
    34     }
    35     }}}
    36   * Right now delegates are invoked and just given an array of their data.  Would be nice if we could explicitly state what they expect, e.g. {{{ OnBuddyStatusChanged(Buddy b, Status s) }}}
    37   * Possibly utilize an object cache mainly in the signal-glue code, so we're not constantly (re)building objects.
     10  * ~~Re-examing and possibly re-implement signal-glue and API -glue code.~~  The glue code is now gone.  The use of !DllImport has made it all pretty much obsolete.
     11  * ~~Give .NET Purple objects the ability to actually update their C counterpart (or create one).~~
     12  * Would be nice if we could explicitly state what Delegates expect, e.g. {{{ OnBuddyStatusChanged(Buddy b, Status s) }}}  This could probably be solved with the Manager idea discussed below.
     13  * Possibly utilize an object cache in the api, and to manage the mappings between .net objects and their c struct counterparts so we're not constantly (re)building objects.
    3814  * [http://reaperworld.com/htdocs/monoloader.html grim provided gameplan]
    3915
     
    4218 * Fix the build system so that make can be run successfully with multiple jobs.
    4319
    44 === Loader Internals: ===
    45   * There must be a better way for having the loader handle signals on behalf of .net plugins (will document the current implementation here).
    46  
     20== Loader Internals ==
     21   The api objects now directly tap into libpurple using !DllImport.  This is true for purple_signal_connect also, which gives us a cleaner way to tie up signals in .Net.  Going to need to explore an Object Manager so that plugins don't have to worry about !IntPtrs and what not.
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!