/// <summary> /// Handles operation RemoveInterestArea: Removes one of the actor's InterestAreas. /// </summary> public OperationResponse OperationRemoveInterestArea(PeerBase peer, OperationRequest request) { var operation = new RemoveInterestArea(peer.Protocol, request); if (!operation.IsValid) { return(new OperationResponse(request.OperationCode) { ReturnCode = (int)ReturnCode.InvalidOperationParameter, DebugMessage = operation.GetErrorMessage() }); } operation.OnStart(); InterestArea interestArea; if (this.TryGetInterestArea(operation.InterestAreaId, out interestArea)) { lock (interestArea.SyncRoot) { interestArea.Detach(); interestArea.Dispose(); } this.RemoveInterestArea(operation.InterestAreaId); return(operation.GetOperationResponse(MethodReturnValue.Ok)); } return(operation.GetOperationResponse((int)ReturnCode.InterestAreaNotFound, "InterestAreaNotFound")); }
/// <summary> /// Handles operation <see cref = "RemoveInterestArea" />: Removes one of the actor's <see cref = "InterestArea">InterestAreas</see>. /// </summary> /// <param name = "peer"> /// The client peer. /// </param> /// <param name = "request"> /// The request. /// </param> /// <returns> /// An <see cref = "OperationResponse" /> with error code <see cref = "ReturnCode.Ok" /> or <see cref = "ReturnCode.InterestAreaNotFound" />. /// </returns> public OperationResponse OperationRemoveInterestArea(PeerBase peer, OperationRequest request) { var operation = new RemoveInterestArea(peer.Protocol, request); if (!operation.IsValid) { return new OperationResponse(request.OperationCode) { ReturnCode = (int)ReturnCode.InvalidOperationParameter, DebugMessage = operation.GetErrorMessage() }; } operation.OnStart(); InterestArea interestArea; if (this.TryGetInterestArea(operation.InterestAreaId, out interestArea)) { lock (interestArea.SyncRoot) { interestArea.Detach(); interestArea.Dispose(); } this.RemoveInterestArea(operation.InterestAreaId); return operation.GetOperationResponse(MethodReturnValue.Ok); } return operation.GetOperationResponse((int)ReturnCode.InterestAreaNotFound, "InterestAreaNotFound"); }