Skip to content

Commit

Permalink
Fix potential bug in case of exception receiving from BoldLinks and
Browse files Browse the repository at this point in the history
introduce new event beLinkObjectEstablished. #20
  • Loading branch information
bero committed Dec 7, 2024
1 parent 178ad6a commit 1485f34
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 17 deletions.
32 changes: 16 additions & 16 deletions Source/BoldLinks.pas
Original file line number Diff line number Diff line change
Expand Up @@ -637,11 +637,11 @@ procedure TBoldDirectMultiLinkController.AddLocator(Locator: TBoldObjectLocator)
OtherEndController.SetAndModifyOrderNo(LocatorList.IndexOf(Locator));
EndModify;
BoldSystem.CommitTransaction;
Changed(beItemAdded, [Locator]);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beItemAdded, [Locator]);
end;

constructor TBoldDirectMultiLinkController.Create(OwningList: TBoldObjectList);
Expand Down Expand Up @@ -806,11 +806,11 @@ procedure TBoldDirectMultiLinkController.InsertLocator(index: Integer; Locator:
ReOrder;
EndModify;
BoldSystem.CommitTransaction;
Changed(beItemAdded, [Locator]);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beItemAdded, [Locator]);
end;

procedure TBoldDirectMultiLinkController.LinkTo(NewLocator: TBoldObjectLocator; updateOrderNo: Boolean; Mode: TBoldLinkUnlinkMode) ;
Expand All @@ -836,11 +836,11 @@ procedure TBoldDirectMultiLinkController.LinkTo(NewLocator: TBoldObjectLocator;
if Mode = blulMarkModified then
EndModify;
BoldSystem.CommitTransaction;
Changed(beItemAdded, [NewLocator]);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beItemAdded, [NewLocator]);
end;

procedure TBoldDirectMultiLinkController.Move(CurrentIndex, NewIndex: Integer);
Expand All @@ -859,14 +859,13 @@ procedure TBoldDirectMultiLinkController.Move(CurrentIndex, NewIndex: Integer);
ReOrder;
EndModify;
BoldSystem.CommitTransaction;
Changed(beOrderChanged, []);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beOrderChanged, []);
end;


procedure TBoldDirectMultiLinkController.RemoveByIndex(index: Integer);
var
Locator: TBoldObjectLocator;
Expand All @@ -885,7 +884,7 @@ procedure TBoldDirectMultiLinkController.RemoveByIndex(index: Integer);
ReOrder;
EndModify;
Changed(beItemDeleted, [Locator]);
BoldSystem.CommitTransaction;
BoldSystem.CommitTransaction;
except
BoldSystem.RollbackTransaction;
raise;
Expand Down Expand Up @@ -1109,11 +1108,11 @@ procedure TBoldDirectMultiLinkController.SetLocator(index: Integer; Locator: TBo
ReOrder;
EndModify;
BoldSystem.CommitTransaction;
Changed(beItemReplaced, [Locator, Index]);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beItemReplaced, [Locator, Index]);
end;

function TBoldDirectMultiLinkController.GetStreamName: String;
Expand Down Expand Up @@ -1559,11 +1558,11 @@ procedure TBoldDirectSingleLinkController.SetLocator(NewLocator: TBoldObjectLoca
SetAndModifyOrderNo(-1);
EndModify;
BoldSystem.CommitTransaction;
Changed(beValueChanged, [NewLocator]);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beValueChanged, [NewLocator]);
end;

procedure TBoldDirectSingleLinkController.InternalSetLocator(NewLocator: TBoldObjectLocator);
Expand Down Expand Up @@ -1987,12 +1986,12 @@ procedure TBoldIndirectSingleLinkController.SetLocator(NewLocator: TBoldObjectLo
fLinkObjectLocator := nil;
EndModify;
BoldSystem.CommitTransaction;
Changed(beValueChanged, [NewLocator]);
GetLinkObjectRoleController.Changed(beValueChanged, [fLinkObjectLocator]);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beValueChanged, [NewLocator]);
GetLinkObjectRoleController.Changed(beValueChanged, [fLinkObjectLocator]);
end;

function TBoldIndirectSingleLinkController.GetStreamName: String;
Expand Down Expand Up @@ -2111,12 +2110,13 @@ procedure TBoldIndirectMultiLinkController.AddLocator(Locator: TBoldObjectLocato
GetLinkObjectOwnLinkController(LinkObject).SetAndModifyOrderNo(LinkLocatorList.IndexOf(LinkObject.BoldObjectLocator));
EndModify;
BoldSystem.CommitTransaction;
Changed(beItemAdded, [Locator]);
GetLinkObjectListController.Changed(beItemAdded, [LinkObject.BoldObjectLocator]);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beItemAdded, [Locator]);
GetLinkObjectListController.Changed(beItemAdded, [LinkObject.BoldObjectLocator]);
LinkObject.SendEvent(beLinkObjectEstablished);
end;

constructor TBoldIndirectMultiLinkController.Create(OwningList: TBoldObjectList);
Expand Down Expand Up @@ -2307,12 +2307,12 @@ procedure TBoldIndirectMultiLinkController.InsertLocator(index: Integer; Locator
ReOrder;
EndModify;
BoldSystem.CommitTransaction;
Changed(beItemAdded, [Locator]);
GetLinkObjectListController.Changed(beItemAdded, [NewLinkLocator]);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beItemAdded, [Locator]);
GetLinkObjectListController.Changed(beItemAdded, [NewLinkLocator]);
end;

procedure TBoldIndirectMultiLinkController.LinkTo(NewLocator: TBoldObjectLocator; updateOrderNo: Boolean; Mode: TBoldLinkUnlinkMode);
Expand Down Expand Up @@ -2367,12 +2367,12 @@ procedure TBoldIndirectMultiLinkController.Move(CurrentIndex, NewIndex: Integer)
ReOrder;
EndModify;
BoldSystem.CommitTransaction;
Changed(beOrderChanged, []);
GetLinkObjectListController. Changed(beOrderChanged, []);
except
BoldSystem.RollbackTransaction;
raise;
end;
Changed(beOrderChanged, []);
GetLinkObjectListController. Changed(beOrderChanged, []);
end;

function TBoldIndirectMultiLinkController.NewLink(OtherLocator: TBoldObjectLocator; Mode: TBoldLinkUnlinkMode): TBoldObject;
Expand Down
3 changes: 2 additions & 1 deletion Source/BoldSubscription.pas
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,12 @@ interface
bePreUpdateId = 18;
beObjectFetched = 19;
beObjectUnloaded = 20; // sent by TBoldSystem before an object gets unloaded from memory
beLinkObjectEstablished = 21;
breReEvaluate = beValueChanged; {backwards compatibility}

beDefaultRequestedEvent = breReEvaluate;

beServerSubscriberRemoved = 21;
// beServerSubscriberRemoved = 21; // Depricated - Only used in BoldCom Client/Server

beBeginUpdate = 22; // sent by TBoldObjectList before loops
beEndUpdate = 23; // sent by TBoldObjectList after loops
Expand Down

0 comments on commit 1485f34

Please sign in to comment.