GithubHelp home page GithubHelp logo

parnham / coincidental Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 1.0 145 KB

A C# wrapper for db4o that provides concurrent-read/single-write access to objects for use in a web-based game engine. It provides automatic transparent persistence without requiring post-build manipulation.

License: GNU General Public License v3.0

C# 100.00%

coincidental's People

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

kleopatra999

coincidental's Issues

UnPersist handling of collections

UnPersist is used when storing a transient to db4o to ensure it does not contain any references to persistent object anywhere in the object graph. It does not yet handle IList<> and IDictionary<,> generic collections but it probably should!

Indexing of objects

Db4o supports indexing on specific object properties which can help speed up queries, this functionality is not exposed though Coincidental, so need to determine a way of doing it (perhaps through attributes?).

State of this project?

Hi this project looks very interesting (and I'm going to have a play with it) but is it up to date - there have been no commits for a long time so perhaps there is newer code.

Also, would it be possible to release the code under a less restrictive licence? Not all my code is GPL...

Orphan Detection

It would be nice if Coincidental could keep track of reference counts for specific object types (perhaps objects that implement an orphan tracking interface of some kind).

Since it intercepts assignments of references it should be feasible to update reference counters within the objects (using an independent locking method perhaps).

The application should then be able to request all orphaned objects of a specific type from Coincidental, or perhaps Coincidental could automatically delete orphaned objects that implement the tracking interface (optional via configuration).

Querying base classes

Querying db4o using a base class as reference so that you retrieve everything that descends from that class should work fine, however Coincidental uses the type passed in to determine the type of proxy to create, this mean the proxies are all of the base type and not the actual type of the objects returned from db4o. Coincidental needs to handle types more intelligently to allow for more complex queries.

Querying with persistent values

If you construct a query where you are comparing instances of objects rather than values, it will fail because the values against which you are comparing are likely to be the persistent proxies and not the source objects, so db4o will see them as different. Probably need to intercept any value resolving in the query and ensure any references are resolved to the source reference and not the proxy!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.