From e66ccd45aee2554d87734a2cb2426c14da4f2526 Mon Sep 17 00:00:00 2001 From: Rogiel Date: Sun, 18 Dec 2011 22:53:27 -0200 Subject: [PATCH] Adds asynchronous database save to ItemService and CharacterService --- .../game/net/packet/server/SM_NPC_INFO.java | 4 +++- .../service/game/character/CharacterServiceImpl.java | 10 ++++++---- .../l2jserver/service/game/item/ItemServiceImpl.java | 12 ++++++------ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_NPC_INFO.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_NPC_INFO.java index 99592f1d9..09c31a55f 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_NPC_INFO.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/game/net/packet/server/SM_NPC_INFO.java @@ -48,7 +48,9 @@ public class SM_NPC_INFO extends AbstractServerPacket { buffer.writeInt(npc.getID().getID()); buffer.writeInt(template.getID().getID() + 1000000); // npctype id - buffer.writeInt((template.isAttackable() ? 0x01 : 0x00)); // attackable + //buffer.writeInt((template.isAttackable() ? 0x01 : 0x00)); // attackable + //FIXME unhard code it + buffer.writeInt(0x00); // attackable buffer.writeInt(npc.getPoint().getX()); buffer.writeInt(npc.getPoint().getY()); buffer.writeInt(npc.getPoint().getZ()); diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java index 88835e665..1fdefc6f1 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/character/CharacterServiceImpl.java @@ -249,7 +249,7 @@ public class CharacterServiceImpl extends AbstractService implements eventDispatcher.dispatch(new CharacterEnterWorldEvent(character)); // update character - characterDao.save(character); + characterDao.saveObjectsAsync(character); } @Override @@ -263,7 +263,7 @@ public class CharacterServiceImpl extends AbstractService implements eventDispatcher.dispatch(new CharacterLeaveWorldEvent(character)); character.setOnline(false); - characterDao.save(character); + characterDao.saveObjectsAsync(character); } @Override @@ -328,7 +328,7 @@ public class CharacterServiceImpl extends AbstractService implements } else { throw new ActorIsNotAttackableServiceException(); } - characterDao.save(character); + characterDao.saveObjectsAsync(character); } @Override @@ -366,7 +366,7 @@ public class CharacterServiceImpl extends AbstractService implements // notify the client. eventDispatcher.dispatch(new CharacterStartMovingEvent(character, coordinate.toPoint())); - characterDao.save(character); + characterDao.saveObjectsAsync(character); } @Override @@ -403,6 +403,8 @@ public class CharacterServiceImpl extends AbstractService implements // TODO dispatch stop event } } + + characterDao.saveObjectsAsync(character); } @Override diff --git a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/item/ItemServiceImpl.java b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/item/ItemServiceImpl.java index fa68fa8c9..a51367baf 100644 --- a/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/item/ItemServiceImpl.java +++ b/l2jserver2-gameserver/src/main/java/com/l2jserver/service/game/item/ItemServiceImpl.java @@ -163,11 +163,11 @@ public class ItemServiceImpl extends AbstractService implements ItemService { throws NotEnoughItemsServiceException { synchronized (item) { Item destroyItem = split(item, count); - itemDao.delete(destroyItem); + itemDao.deleteObjectsAsync(destroyItem); if (destroyItem.getOwnerID() != null) destroyItem.getOwner().getInventory().remove(destroyItem); if (!destroyItem.equals(item)) - itemDao.save(item); + itemDao.saveObjectsAsync(item); return destroyItem.equals(item); } } @@ -218,9 +218,9 @@ public class ItemServiceImpl extends AbstractService implements ItemService { character.getInventory().add(item); this.items.remove(item); - itemDao.save(item); + itemDao.saveObjectsAsync(item); if (!item.equals(originalItem)) { - itemDao.save(originalItem); + itemDao.saveObjectsAsync(originalItem); } spawnService.unspawn(originalItem); eventDispatcher.dispatch(new ItemPickEvent(character, originalItem, @@ -254,9 +254,9 @@ public class ItemServiceImpl extends AbstractService implements ItemService { } } - itemDao.save(item); + itemDao.saveObjectsAsync(item); if (!item.equals(sourceItem)) { - itemDao.save(sourceItem); + itemDao.saveObjectsAsync(sourceItem); } items.add(item);