ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.372 by root, Sat Sep 15 13:25:33 2007 UTC vs.
Revision 1.373 by root, Sat Sep 15 15:58:06 2007 UTC

1026); 1026);
1027 1027
1028sub object_freezer_save { 1028sub object_freezer_save {
1029 my ($filename, $rdata, $objs) = @_; 1029 my ($filename, $rdata, $objs) = @_;
1030 1030
1031 my $guard = cf::lock_acquire "io";
1032
1033 sync_job { 1031 sync_job {
1034 if (length $$rdata) { 1032 if (length $$rdata) {
1035 utf8::decode (my $decname = $filename); 1033 utf8::decode (my $decname = $filename);
1036 warn sprintf "saving %s (%d,%d)\n", 1034 warn sprintf "saving %s (%d,%d)\n",
1037 $decname, length $$rdata, scalar @$objs; 1035 $decname, length $$rdata, scalar @$objs;
1062 } else { 1060 } else {
1063 aio_unlink $filename; 1061 aio_unlink $filename;
1064 aio_unlink "$filename.pst"; 1062 aio_unlink "$filename.pst";
1065 } 1063 }
1066 }; 1064 };
1067
1068 undef $guard;
1069} 1065}
1070 1066
1071sub object_freezer_as_string { 1067sub object_freezer_as_string {
1072 my ($rdata, $objs) = @_; 1068 my ($rdata, $objs) = @_;
1073 1069
1078 1074
1079sub object_thawer_load { 1075sub object_thawer_load {
1080 my ($filename) = @_; 1076 my ($filename) = @_;
1081 1077
1082 my ($data, $av); 1078 my ($data, $av);
1083
1084 my $guard = cf::lock_acquire "io";
1085 1079
1086 (aio_load $filename, $data) >= 0 1080 (aio_load $filename, $data) >= 0
1087 or return; 1081 or return;
1088 1082
1089 unless (aio_stat "$filename.pst") { 1083 unless (aio_stat "$filename.pst") {
1090 (aio_load "$filename.pst", $av) >= 0 1084 (aio_load "$filename.pst", $av) >= 0
1091 or return; 1085 or return;
1092 1086
1093 undef $guard;
1094 $av = eval { (Storable::thaw $av)->{objs} }; 1087 $av = eval { (Storable::thaw $av)->{objs} };
1095 } 1088 }
1096 1089
1097 utf8::decode (my $decname = $filename); 1090 utf8::decode (my $decname = $filename);
1098 warn sprintf "loading %s (%d,%d)\n", 1091 warn sprintf "loading %s (%d,%d)\n",

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines