NAME

TM::Synchronizable - Topic Maps, trait for synchronizable resources

SYNOPSIS

  # you write an input/output driver
  # see for example TM::Synchronizable::MLDBM
  package My::WhatEver;

    # provides source_in and/or source_out methods
    sub source_in  { .... }

    sub source_out { .... }

    1;

  # you construct your map class
  package MySyncableMap;

    use TM;
    use base qw(TM);
    use Class::Trait qw(TM::ResourceAble TM::Synchronizable My::WhatEver);

    1;

  # you then use that
  my $tm = MySyncableMap (url => 'file:/where/ever');
  $tm->sync_in;
  # work with the map, etc...
  $tm->sync_out;

DESCRIPTION

This trait implements the abstract synchronization between in-memory topic maps and the resources which are attached to them, i.e. files, web pages, etc. whatever can be addressed via a URI. Consequently, this trait inherits from TM::ResourceAble, although Class::Trait does not do this for you (sadly).

The trait provides the methods sync_in and sync_out to implement the synchronization. In this process it uses the timestamp of the map (last_mod) and that of the resource mtime.

Unfortunately, the granularity of the two are different (at least on current UNIX systems): for the last modification time values from Time::HiRes is used. UNIX resources only use an integer.

Note: This needs a bit of consideration from the user's side.

INTERFACE

Methods

sync_in

$tm->sync_in

This method provides only the main logic, wether a synchronisation from the resource into the in-memory map should occur. If the last modification date of the resource (mtime) is more recent than that of the map (last_mod), then synchronisation from the resource to the in-memory map will be triggered. For this, a method source_in has to exist for the map object; that will be invoked.

sync_out

$tm->sync_out

This method provides the logic, whether synchronisation from the in-memory map towards the attached resource should occur or not. If the last modification date of the map (last_mod) is more recent than that of the resource (mtime), then a method source_out for the object is triggered.

SEE ALSO

TM, TM::ResourceAble

AUTHOR INFORMATION

Copyright 200[6], Robert Barta <drrho@cpan.org>, All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. http://www.perl.com/perl/misc/Artistic.html