Make ItemEventRouter's asynchronous

This commit is contained in:
Archangel
2025-06-05 20:29:35 +02:00
parent 92bc45bcb5
commit e88f83ba7e
14 changed files with 81 additions and 80 deletions
@@ -9,14 +9,14 @@ namespace SPTarkov.Server.Core.Callbacks;
[Injectable]
public class ItemEventCallbacks(HttpResponseUtil _httpResponseUtil, ItemEventRouter _itemEventRouter)
{
public ValueTask<string> HandleEvents(string url, ItemEventRouterRequest info, string sessionID)
public async ValueTask<string> HandleEvents(string url, ItemEventRouterRequest info, string sessionID)
{
var eventResponse = _itemEventRouter.HandleEvents(info, sessionID);
var eventResponse = await _itemEventRouter.HandleEvents(info, sessionID);
var result = IsCriticalError(eventResponse.Warnings)
? _httpResponseUtil.GetBody(eventResponse, GetErrorCode(eventResponse.Warnings), eventResponse.Warnings[0].ErrorMessage)
: _httpResponseUtil.GetBody(eventResponse);
return new ValueTask<string>(result);
return result;
}
/// <summary>
+1 -1
View File
@@ -107,7 +107,7 @@ public abstract class DynamicRouter : Router
// So instead I added the definition
public abstract class ItemEventRouterDefinition : Router
{
public abstract ItemEventRouterResponse? HandleItemEvent(string url,
public abstract ValueTask<ItemEventRouterResponse> HandleItemEvent(string url,
PmcData pmcData,
BaseInteractionRequestData body,
string sessionID,
@@ -28,7 +28,7 @@ public class ItemEventRouter(ISptLogger<ItemEventRouter> logger,
/// <param name="info"> Event request </param>
/// <param name="sessionID"> Session ID </param>
/// <returns> Item response </returns>
public ItemEventRouterResponse HandleEvents(ItemEventRouterRequest info, string sessionID)
public async ValueTask<ItemEventRouterResponse> HandleEvents(ItemEventRouterRequest info, string sessionID)
{
var output = eventOutputHolder.GetOutput(sessionID);
@@ -50,7 +50,8 @@ public class ItemEventRouter(ISptLogger<ItemEventRouter> logger,
logger.Debug($"event: {body.Action}");
}
eventRouter.HandleItemEvent(body.Action, pmcData, body, sessionID, output);
await eventRouter.HandleItemEvent(body.Action, pmcData, body, sessionID, output);
if (output.Warnings?.Count > 0)
{
break;
@@ -35,15 +35,15 @@ public class CustomizationItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.CUSTOMIZATION_BUY:
return _customizationCallbacks.BuyCustomisation(pmcData, body as BuyClothingRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_customizationCallbacks.BuyCustomisation(pmcData, body as BuyClothingRequestData, sessionID));
case ItemEventActions.CUSTOMIZATION_SET:
return _customizationCallbacks.SetCustomisation(pmcData, body as CustomizationSetRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_customizationCallbacks.SetCustomisation(pmcData, body as CustomizationSetRequest, sessionID));
default:
throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}");
}
@@ -32,17 +32,17 @@ public class HealthItemEventRouter : ItemEventRouterDefinition
];
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.EAT:
return _healthCallbacks.OffraidEat(pmcData, body as OffraidEatRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_healthCallbacks.OffraidEat(pmcData, body as OffraidEatRequestData, sessionID));
case ItemEventActions.HEAL:
return _healthCallbacks.OffraidHeal(pmcData, body as OffraidHealRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_healthCallbacks.OffraidHeal(pmcData, body as OffraidHealRequestData, sessionID));
case ItemEventActions.RESTORE_HEALTH:
return _healthCallbacks.HealthTreatment(pmcData, body as HealthTreatmentRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_healthCallbacks.HealthTreatment(pmcData, body as HealthTreatmentRequestData, sessionID));
default:
throw new Exception($"HealthItemEventRouter being used when it cant handle route {url}");
}
@@ -44,43 +44,43 @@ public class HideoutItemEventRouter : ItemEventRouterDefinition
];
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case HideoutEventActions.HIDEOUT_UPGRADE:
return _hideoutCallbacks.Upgrade(pmcData, body as HideoutUpgradeRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.Upgrade(pmcData, body as HideoutUpgradeRequestData, sessionID, output));
case HideoutEventActions.HIDEOUT_UPGRADE_COMPLETE:
return _hideoutCallbacks.UpgradeComplete(pmcData, body as HideoutUpgradeCompleteRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.UpgradeComplete(pmcData, body as HideoutUpgradeCompleteRequestData, sessionID, output));
case HideoutEventActions.HIDEOUT_PUT_ITEMS_IN_AREA_SLOTS:
return _hideoutCallbacks.PutItemsInAreaSlots(pmcData, body as HideoutPutItemInRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.PutItemsInAreaSlots(pmcData, body as HideoutPutItemInRequestData, sessionID));
case HideoutEventActions.HIDEOUT_TAKE_ITEMS_FROM_AREA_SLOTS:
return _hideoutCallbacks.TakeItemsFromAreaSlots(pmcData, body as HideoutTakeItemOutRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.TakeItemsFromAreaSlots(pmcData, body as HideoutTakeItemOutRequestData, sessionID));
case HideoutEventActions.HIDEOUT_TOGGLE_AREA:
return _hideoutCallbacks.ToggleArea(pmcData, body as HideoutToggleAreaRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.ToggleArea(pmcData, body as HideoutToggleAreaRequestData, sessionID));
case HideoutEventActions.HIDEOUT_SINGLE_PRODUCTION_START:
return _hideoutCallbacks.SingleProductionStart(pmcData, body as HideoutSingleProductionStartRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.SingleProductionStart(pmcData, body as HideoutSingleProductionStartRequestData, sessionID));
case HideoutEventActions.HIDEOUT_SCAV_CASE_PRODUCTION_START:
return _hideoutCallbacks.ScavCaseProductionStart(pmcData, body as HideoutScavCaseStartRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.ScavCaseProductionStart(pmcData, body as HideoutScavCaseStartRequestData, sessionID));
case HideoutEventActions.HIDEOUT_CONTINUOUS_PRODUCTION_START:
return _hideoutCallbacks.ContinuousProductionStart(pmcData, body as HideoutContinuousProductionStartRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.ContinuousProductionStart(pmcData, body as HideoutContinuousProductionStartRequestData, sessionID));
case HideoutEventActions.HIDEOUT_TAKE_PRODUCTION:
return _hideoutCallbacks.TakeProduction(pmcData, body as HideoutTakeProductionRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.TakeProduction(pmcData, body as HideoutTakeProductionRequestData, sessionID));
case HideoutEventActions.HIDEOUT_RECORD_SHOOTING_RANGE_POINTS:
return _hideoutCallbacks.RecordShootingRangePoints(pmcData, body as RecordShootingRangePoints, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.RecordShootingRangePoints(pmcData, body as RecordShootingRangePoints, sessionID, output));
case HideoutEventActions.HIDEOUT_IMPROVE_AREA:
return _hideoutCallbacks.ImproveArea(pmcData, body as HideoutImproveAreaRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.ImproveArea(pmcData, body as HideoutImproveAreaRequestData, sessionID));
case HideoutEventActions.HIDEOUT_CANCEL_PRODUCTION_COMMAND:
return _hideoutCallbacks.CancelProduction(pmcData, body as HideoutCancelProductionRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.CancelProduction(pmcData, body as HideoutCancelProductionRequestData, sessionID));
case HideoutEventActions.HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START:
return _hideoutCallbacks.CicleOfCultistProductionStart(pmcData, body as HideoutCircleOfCultistProductionStartRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.CicleOfCultistProductionStart(pmcData, body as HideoutCircleOfCultistProductionStartRequestData, sessionID));
case HideoutEventActions.HIDEOUT_DELETE_PRODUCTION_COMMAND:
return _hideoutCallbacks.HideoutDeleteProductionCommand(pmcData, body as HideoutDeleteProductionRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.HideoutDeleteProductionCommand(pmcData, body as HideoutDeleteProductionRequestData, sessionID));
case HideoutEventActions.HIDEOUT_CUSTOMIZATION_APPLY_COMMAND:
return _hideoutCallbacks.HideoutCustomizationApplyCommand(pmcData, body as HideoutCustomizationApplyRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.HideoutCustomizationApplyCommand(pmcData, body as HideoutCustomizationApplyRequestData, sessionID));
case HideoutEventActions.HIDEOUT_CUSTOMIZATION_SET_MANNEQUIN_POSE:
return _hideoutCallbacks.HideoutCustomizationSetMannequinPose(pmcData, body as HideoutCustomizationSetMannequinPoseRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.HideoutCustomizationSetMannequinPose(pmcData, body as HideoutCustomizationSetMannequinPoseRequest, sessionID));
default:
throw new Exception($"HideoutItemEventRouter being used when it cant handle route {url}");
}
@@ -30,13 +30,13 @@ public class InsuranceItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.INSURE:
return _insuranceCallbacks.Insure(pmcData, body as InsureRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_insuranceCallbacks.Insure(pmcData, body as InsureRequestData, sessionID));
default:
throw new Exception($"InsuranceItemEventRouter being used when it cant handle route {url}");
}
@@ -57,57 +57,57 @@ public class InventoryItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.MOVE:
return _inventoryCallbacks.MoveItem(pmcData, body as InventoryMoveRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.MoveItem(pmcData, body as InventoryMoveRequestData, sessionID, output));
case ItemEventActions.REMOVE:
return _inventoryCallbacks.RemoveItem(pmcData, body as InventoryRemoveRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.RemoveItem(pmcData, body as InventoryRemoveRequestData, sessionID, output));
case ItemEventActions.SPLIT:
return _inventoryCallbacks.SplitItem(pmcData, body as InventorySplitRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.SplitItem(pmcData, body as InventorySplitRequestData, sessionID, output));
case ItemEventActions.MERGE:
return _inventoryCallbacks.MergeItem(pmcData, body as InventoryMergeRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.MergeItem(pmcData, body as InventoryMergeRequestData, sessionID, output));
case ItemEventActions.TRANSFER:
return _inventoryCallbacks.TransferItem(pmcData, body as InventoryTransferRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.TransferItem(pmcData, body as InventoryTransferRequestData, sessionID, output));
case ItemEventActions.SWAP:
return _inventoryCallbacks.SwapItem(pmcData, body as InventorySwapRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.SwapItem(pmcData, body as InventorySwapRequestData, sessionID));
case ItemEventActions.FOLD:
return _inventoryCallbacks.FoldItem(pmcData, body as InventoryFoldRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.FoldItem(pmcData, body as InventoryFoldRequestData, sessionID));
case ItemEventActions.TOGGLE:
return _inventoryCallbacks.ToggleItem(pmcData, body as InventoryToggleRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.ToggleItem(pmcData, body as InventoryToggleRequestData, sessionID));
case ItemEventActions.TAG:
return _inventoryCallbacks.TagItem(pmcData, body as InventoryTagRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.TagItem(pmcData, body as InventoryTagRequestData, sessionID));
case ItemEventActions.BIND:
return _inventoryCallbacks.BindItem(pmcData, body as InventoryBindRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.BindItem(pmcData, body as InventoryBindRequestData, sessionID, output));
case ItemEventActions.UNBIND:
return _inventoryCallbacks.UnBindItem(pmcData, body as InventoryBindRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.UnBindItem(pmcData, body as InventoryBindRequestData, sessionID, output));
case ItemEventActions.EXAMINE:
return _inventoryCallbacks.ExamineItem(pmcData, body as InventoryExamineRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.ExamineItem(pmcData, body as InventoryExamineRequestData, sessionID, output));
case ItemEventActions.READ_ENCYCLOPEDIA:
return _inventoryCallbacks.ReadEncyclopedia(pmcData, body as InventoryReadEncyclopediaRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.ReadEncyclopedia(pmcData, body as InventoryReadEncyclopediaRequestData, sessionID));
case ItemEventActions.APPLY_INVENTORY_CHANGES:
return _inventoryCallbacks.SortInventory(pmcData, body as InventorySortRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.SortInventory(pmcData, body as InventorySortRequestData, sessionID, output));
case ItemEventActions.CREATE_MAP_MARKER:
return _inventoryCallbacks.CreateMapMarker(pmcData, body as InventoryCreateMarkerRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.CreateMapMarker(pmcData, body as InventoryCreateMarkerRequestData, sessionID, output));
case ItemEventActions.DELETE_MAP_MARKER:
return _inventoryCallbacks.DeleteMapMarker(pmcData, body as InventoryDeleteMarkerRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.DeleteMapMarker(pmcData, body as InventoryDeleteMarkerRequestData, sessionID, output));
case ItemEventActions.EDIT_MAP_MARKER:
return _inventoryCallbacks.EditMapMarker(pmcData, body as InventoryEditMarkerRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.EditMapMarker(pmcData, body as InventoryEditMarkerRequestData, sessionID, output));
case ItemEventActions.OPEN_RANDOM_LOOT_CONTAINER:
return _inventoryCallbacks.OpenRandomLootContainer(pmcData, body as OpenRandomLootContainerRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.OpenRandomLootContainer(pmcData, body as OpenRandomLootContainerRequestData, sessionID, output));
case ItemEventActions.HIDEOUT_QTE_EVENT:
return _hideoutCallbacks.HandleQTEEvent(pmcData, body as HandleQTEEventRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_hideoutCallbacks.HandleQTEEvent(pmcData, body as HandleQTEEventRequestData, sessionID, output));
case ItemEventActions.REDEEM_PROFILE_REWARD:
return _inventoryCallbacks.RedeemProfileReward(pmcData, body as RedeemProfileRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.RedeemProfileReward(pmcData, body as RedeemProfileRequestData, sessionID, output));
case ItemEventActions.SET_FAVORITE_ITEMS:
return _inventoryCallbacks.SetFavoriteItem(pmcData, body as SetFavoriteItems, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.SetFavoriteItem(pmcData, body as SetFavoriteItems, sessionID, output));
case ItemEventActions.QUEST_FAIL:
return _inventoryCallbacks.FailQuest(pmcData, body as FailQuestRequestData, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.FailQuest(pmcData, body as FailQuestRequestData, sessionID, output));
case ItemEventActions.PIN_LOCK:
return _inventoryCallbacks.PinOrLock(pmcData, body as PinOrLockItemRequest, sessionID, output);
return new ValueTask<ItemEventRouterResponse>(_inventoryCallbacks.PinOrLock(pmcData, body as PinOrLockItemRequest, sessionID, output));
default:
throw new Exception($"InventoryItemEventRouter being used when it cant handle route {url}");
}
@@ -32,17 +32,17 @@ public class NoteItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.ADD_NOTE:
return _noteCallbacks.AddNote(pmcData, body as NoteActionRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_noteCallbacks.AddNote(pmcData, body as NoteActionRequest, sessionID));
case ItemEventActions.EDIT_NOTE:
return _noteCallbacks.EditNote(pmcData, body as NoteActionRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_noteCallbacks.EditNote(pmcData, body as NoteActionRequest, sessionID));
case ItemEventActions.DELETE_NOTE:
return _noteCallbacks.DeleteNote(pmcData, body as NoteActionRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_noteCallbacks.DeleteNote(pmcData, body as NoteActionRequest, sessionID));
default:
throw new Exception($"NoteItemEventRouter being used when it cant handle route {url}");
}
@@ -33,19 +33,19 @@ public class QuestItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.QUEST_ACCEPT:
return _questCallbacks.AcceptQuest(pmcData, body as AcceptQuestRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_questCallbacks.AcceptQuest(pmcData, body as AcceptQuestRequestData, sessionID));
case ItemEventActions.QUEST_COMPLETE:
return _questCallbacks.CompleteQuest(pmcData, body as CompleteQuestRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_questCallbacks.CompleteQuest(pmcData, body as CompleteQuestRequestData, sessionID));
case ItemEventActions.QUEST_HANDOVER:
return _questCallbacks.HandoverQuest(pmcData, body as HandoverQuestRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_questCallbacks.HandoverQuest(pmcData, body as HandoverQuestRequestData, sessionID));
case ItemEventActions.REPEATABLE_QUEST_CHANGE:
return _questCallbacks.ChangeRepeatableQuest(pmcData, body as RepeatableQuestChangeRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_questCallbacks.ChangeRepeatableQuest(pmcData, body as RepeatableQuestChangeRequest, sessionID));
default:
throw new Exception($"QuestItemEventRouter being used when it cant handle route {url}");
}
@@ -32,17 +32,17 @@ public class RagfairItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.RAGFAIR_ADD_OFFER:
return _ragfairCallbacks.AddOffer(pmcData, body as AddOfferRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_ragfairCallbacks.AddOffer(pmcData, body as AddOfferRequestData, sessionID));
case ItemEventActions.RAGFAIR_REMOVE_OFFER:
return _ragfairCallbacks.RemoveOffer(pmcData, body as RemoveOfferRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_ragfairCallbacks.RemoveOffer(pmcData, body as RemoveOfferRequestData, sessionID));
case ItemEventActions.RAGFAIR_RENEW_OFFER:
return _ragfairCallbacks.ExtendOffer(pmcData, body as ExtendOfferRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_ragfairCallbacks.ExtendOffer(pmcData, body as ExtendOfferRequestData, sessionID));
default:
throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}");
}
@@ -31,15 +31,15 @@ public class RepairItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.REPAIR:
return _repairCallbacks.Repair(pmcData, body as RepairActionDataRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_repairCallbacks.Repair(pmcData, body as RepairActionDataRequest, sessionID));
case ItemEventActions.TRADER_REPAIR:
return _repairCallbacks.TraderRepair(pmcData, body as TraderRepairActionDataRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_repairCallbacks.TraderRepair(pmcData, body as TraderRepairActionDataRequest, sessionID));
default:
throw new Exception($"RepairItemEventRouter being used when it cant handle route {url}");
}
@@ -32,17 +32,17 @@ public class TradeItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.TRADING_CONFIRM:
return _tradeCallbacks.ProcessTrade(pmcData, body as ProcessBaseTradeRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_tradeCallbacks.ProcessTrade(pmcData, body as ProcessBaseTradeRequestData, sessionID));
case ItemEventActions.RAGFAIR_BUY_OFFER:
return _tradeCallbacks.ProcessRagfairTrade(pmcData, body as ProcessRagfairTradeRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_tradeCallbacks.ProcessRagfairTrade(pmcData, body as ProcessRagfairTradeRequestData, sessionID));
case ItemEventActions.SELL_ALL_FROM_SAVAGE:
return _tradeCallbacks.SellAllFromSavage(pmcData, body as SellScavItemsToFenceRequestData, sessionID);
return new ValueTask<ItemEventRouterResponse>(_tradeCallbacks.SellAllFromSavage(pmcData, body as SellScavItemsToFenceRequestData, sessionID));
default:
throw new Exception($"TradeItemEventRouter being used when it cant handle route {url}");
}
@@ -32,17 +32,17 @@ public class WishlistItemEventRouter : ItemEventRouterDefinition
};
}
public override ItemEventRouterResponse HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(string url, PmcData pmcData, BaseInteractionRequestData body, string sessionID,
ItemEventRouterResponse output)
{
switch (url)
{
case ItemEventActions.ADD_TO_WISHLIST:
return _wishlistCallbacks.AddToWishlist(pmcData, body as AddToWishlistRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_wishlistCallbacks.AddToWishlist(pmcData, body as AddToWishlistRequest, sessionID));
case ItemEventActions.REMOVE_FROM_WISHLIST:
return _wishlistCallbacks.RemoveFromWishlist(pmcData, body as RemoveFromWishlistRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_wishlistCallbacks.RemoveFromWishlist(pmcData, body as RemoveFromWishlistRequest, sessionID) );
case ItemEventActions.CHANGE_WISHLIST_ITEM_CATEGORY:
return _wishlistCallbacks.ChangeWishlistItemCategory(pmcData, body as ChangeWishlistItemCategoryRequest, sessionID);
return new ValueTask<ItemEventRouterResponse>(_wishlistCallbacks.ChangeWishlistItemCategory(pmcData, body as ChangeWishlistItemCategoryRequest, sessionID));
default:
throw new Exception($"CustomizationItemEventRouter being used when it cant handle route {url}");
}