18: 2012-11-21 (水) 17:02:23 iseki  |
現: 2012-11-26 (月) 10:27:54 iseki  |
| ** Events and delegate functions [#wfe0d130] | | ** Events and delegate functions [#wfe0d130] |
- | - 略号 | + | - [[OpenSim>./OpenSim]] |
- | -- MM -> Money Module, MS -> Money Server, VW -> Viewer | + | - [[Aurora-Sim>./AuroraSim]] |
- | -- RS -> Region(Robust) Server, US -> User(Robust) Server, SC -> External Script | + | |
- | -- AS -> Aurora Server | + | |
- | | + | |
- | *** Upload [#v627ee63] | + | |
- | - OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | + | |
- | -- NewAgentInventoryRequest() --> UploadCovered() | + | |
- | -- UploadCompleteHandler() --> | + | |
- | --- OpenSim/Region/Framework/Scenes/Scene.Inventory.cs:AddUploadedInventoryItem() --> ApplyUploadCharge() | + | |
- | | + | |
- | -OpenSim/Region/ClientStack/Linden/Caps/NewFileAgentInventoryVariablePriceModule.cs | + | |
- | -- NewAgentInventoryRequest() --> UploadCovered() | + | |
- | | + | |
- | - OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs | + | |
- | -- HandleUDPUploadRequest() --> UploadCovered() | + | |
- | | + | |
- | #br | + | |
- | | + | |
- | *** Events of [[OpenSim]] [#j7353db0] | + | |
- | - OpenSim では IClientAPI.cs の event は EventManager からアクセス可 | + | |
- | | + | |
- | **** MoneyTransferRequest [#sf8bf831] | + | |
- | - event MoneyTransferRequest OnMoneyTransferRequest; (IClientAPI.cs) | + | |
- | - 他のアバターへの直接的な支払い,ギフト (Gift: 5001) | + | |
- | | + | |
- | MM.MoneyTransferAction() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney") | + | |
- | | + | |
- | - オブジェクトを経由した,他のアバターへの間接的な支払い (PayObject: 5008) | + | |
- | - LSL の money イベントが発生する | + | |
- | | + | |
- | MM.MoneyTransferAction() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney") | + | |
- | | + | |
- | **** EconomyDataRequest [#h210892a] | + | |
- | - event EconomyDataRequest OnEconomyDataRequest; (IClientAPI.cs) | + | |
- | #br | + | |
- | | + | |
- | **** MoneyBalanceRequest [#a47692c7] | + | |
- | - event MoneyBalanceRequest OnMoneyBalanceRequest; (IClientAPI.cs) | + | |
- | #br | + | |
- | | + | |
- | **** ParcelBuy [#n0f8eea6] | + | |
- | - event ParcelBuy OnParcelBuy; (IClientAPI.cs) | + | |
- | #br | + | |
- | **** ParcelBuyPass [#x7f5df0d] | + | |
- | - event ParcelBuyPass OnParcelBuyPass; (IClientAPI.cs) | + | |
- | #br | + | |
- | **** RequestPayPrice [#odf8b8d0] | + | |
- | - event RequestPayPrice OnRequestPayPrice; (IClientAPI.cs) | + | |
- | #br | + | |
- | **** ObjectBuy [#n27e21f3] | + | |
- | - event ObjectBuy OnObjectBuy; (IClientAPI.cs) | + | |
- | - オブジェクト購入時に発生 (コピー,オリジナル,コンテンツ) (PayObject: 5008) | + | |
- | | + | |
- | MM.OnObjectBuy() -> MM.BuyObject() | + | |
- | -> MM.Transfer() => XML RPC to MS ("TransferMoney") | + | |
- | **** BuyObjectInventory [#l2a928e5] | + | |
- | - event BuyObjectInventory OnBuyObjectInventory; (IClientAPI.cs) | + | |
- | #br | + | |
- | **** MoneyTransferEvent [#t0193047] | + | |
- | - event MoneyTransferEvent OnMoneyTransfer; (EventManager.cs) | + | |
- | #br | + | |
- | **** LandBuy [#gb533cc8] | + | |
- | - event LandBuy OnValidateLandBuy; (EventManager.cs) | + | |
- | - event LandBuy OnLandBuy; (EventManager.cs) | + | |
- | #br | + | |
- | | + | |
- | *** Events of [[Aurora-Sim]] [#y1feeb2e] | + | |
- | | + | |
- | **** MoneyTransferRequest [#k001f9d9] | + | |
- | - event MoneyTransferRequest OnMoneyTransferRequest; (IClientAPI.cs) | + | |
- | - MM.MoneyTransferRequest() は MoneyTransferArgs と Scene を生成して MM.MoneyTransferAction() を起動している. | + | |
- | | + | |
- | - 他のアバターへの直接的な支払い,ギフト (Gift: 5001) | + | |
- | | + | |
- | MM.MoneyTransferRequest() -> MM.MoneyTransferAction() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney") | + | |
- | | + | |
- | - オブジェクトを経由した,他のアバターへの間接的な支払い (PayObject: 5008) | + | |
- | - LSL の money イベントが発生する | + | |
- | | + | |
- | MM.MoneyTransferRequest() -> MM.MoneyTransferAction() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney") | + | |
- | | + | |
- | **** EconomyDataRequest [#z69e9e82] | + | |
- | - event EconomyDataRequest OnEconomyDataRequest; (IClientAPI.cs) | + | |
- | #br | + | |
- | **** MoneyBalanceRequest [#ga2f8892] | + | |
- | - event MoneyBalanceRequest OnMoneyBalanceRequest; (IClientAPI.cs) | + | |
- | #br | + | |
- | **** ParcelBuy [#p11644bb] | + | |
- | - event ParcelBuy OnParcelBuy; (IClientAPI.cs) | + | |
- | #br | + | |
- | **** ParcelBuyPass [#r6cba307] | + | |
- | - event ParcelBuyPass OnParcelBuyPass; (IClientAPI.cs) | + | |
- | #br | + | |
- | **** RequestPayPrice [#t6a4574a] | + | |
- | - event RequestPayPrice OnRequestPayPrice; (IClientAPI.cs) | + | |
- | #br | + | |
- | | + | |
- | **** ObjectBuy [#za335aaa] | + | |
- | - event ObjectBuy OnObjectBuy; (IClientAPI.cs) | + | |
- | - オブジェクト購入時に発生 (コピー,オリジナル,コンテンツ) (PayObject: 5008) | + | |
- | - ObjectBuy(), BuyObject() は Aurora の BuySell/BuySellModule.cs で定義 | + | |
- | | + | |
- | ObjectBuy() -> MM.Transfer() => XML RPC to MS ("TransferMoney") | + | |
- | -> BuyObject() | + | |
- | | + | |
- | | + | |
- | **** BuyObjectInventory [#d8d209f8] | + | |
- | - event BuyObjectInventory OnBuyObjectInventory; (IClientAPI.cs) | + | |
- | #br | + | |
- | | + | |
- | **** LandBuy [#dbc30b84] | + | |
- | - event LandBuy OnValidateBuyLan; (ISceneEntity.cs) | + | |
- | #br | + | |
- | | + | |
- | ** Calling Sequence of Functions [#r580a397] | + | |
- | | + | |
- | *** LSL [#p897f575] | + | |
- | | + | |
- | **** llGiveMoney() [#xe90a84a] | + | |
- | - Code: ObjectPays (5009) | + | |
- | | + | |
- | MM.ObjectGiveMoney() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney") | + | |
- | -> MM.ForceTransferMoney() => XML RPC to MS ("ForceTransferMoney") | + | |
- | | + | |
- | *** Buy Money from System [#had46589] | + | |
- | - Code: BuyMoney (5010) | + | |
- | | + | |
- | 1. VW => XML RPC to helper SC ("getCurrencyQuote") => Response to VW | + | |
- | 2. VW => XML RPC to helper SC ("buyCurrency") -> SC.add_money() => XML RPC("AddBankerMoney") => MM => XML RPC("AddBankerMoney") => MS | + | |
- | => Response to VW | + | |
- | - [[XML>../currency.php#ad93a73d]] | + | |
- | #br | + | |
- | | + | |
- | *** Buy Land [#a847a4c9] | + | |
- | - Code: LandSale (5002) | + | |
- | | + | |
- | **** [[OpenSim]] [#zf9951d6] | + | |
- | 1. VW => XML RPC to helper SC ("preflightBuyLandPrep") => Response to VW | + | |
- | 2. MM.OnValidateLandBuy event -> MM.ValidateLandBuy() | + | |
- | 3. MM.OnLandBuy event -> MM.processLandBuy() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney") | + | |
- | | + | |
- | **** [[Aurora-Sim]] [#f45ff336] | + | |
- | - OnParcelBuy event, ProcessParcelBuy() は Aurora の Land/ParcelManagementModule.cs で定義 | + | |
- | | + | |
- | 1. VW => XML RPC to helper SC ("preflightBuyLandPrep") => Response to VW | + | |
- | 2. OnParcelBuy event -> ProcessParcelBuy() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney") | + | |
- | | + | |
- | *** Upload Inventory [#m0b921f3] | + | |
- | **** [[OpenSim]] [#mce7bffe] | + | |
- | 1. event -> RS.NewAgentInventoryRequest() -> MM.UploadCovered() | + | |
- | 2. event -> RS.AddUploadedInventoryItem() -> MM.ApplyUploadCharge() | + | |
- | | + | |
- | - OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs: NewAgentInventoryRequest() | + | |
- | - OpenSim/Region/Framework/Scenes/Scene.Inventory.cs: AddUploadedInventoryItem() | + | |
- | - %%OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs: HandleUDPUploadRequest()%% | + | |
- | - %%OpenSim/Region/ClientStack/Linden/Caps/NewFileAgentInventoryVariablePriceModule.cs: NewAgentInventoryRequest()%% | + | |
- | #br | + | |
- | | + | |
- | **** [[Aurora-Sim]] [#y70b7ce7] | + | |
- | 1. event -> AS.NewAgentInventoryRequest() -> AS.RequestUploadCovered() => XML RPC to RS ("UploadCovered") | + | |
- | 2. event -> AS.UploadCompleteHandler() -> AS.RequestUploadCharge() => XML RPC to RS ("UploadCharge") | + | |
- | | + | |
- | - TCP: OpenSim/Services/CapsService/CAPModules/InventoryCAPS.cs: NewAgentInventoryRequest() | + | |
- | - TCP: OpenSim/Services/CapsService/CAPModules/InventoryCAPS.cs: UploadCompleteHandler() | + | |
- | - UDP: OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs: HandleUDPUploadRequest() | + | |
- | - %%OpenSim/Services/CapsService/CAPModules/InventoryCAPS.cs: NewAgentInventoryRequest()%% | + | |
- | - %%OpenSim/Services/CapsService/CAPModules/InventoryCAPS.cs: HandleInventoryItemCreate()%% | + | |
- | #br | + | |
- | ---- | + | |
- | - Aurora-Sim では seed_capability として Robust サーバ(Aurora.Server)が指定される( OpenSim では Regionサーバ) | + | |
- | - 従って,Uoload では Regionサーバでイベントが発生せず,Robustサーバ(Aurora.Server) でイベントが発生する. | + | |
- | | + | |
- | + Robust サーバ(Aurora.Server) に MoneyModule をロードする. | + | |
- | -- 通常のモジュールの読み込みとしては? | + | |
- | -- OpenSim/Services/XXX/ にプログラムを作って,サービスとしてロードさせる.サービスは AuroraServerConfig/Main.ini の [Handlers]セクションで指定. | + | |
- | -- 詳細不明で断念. | + | |
- | + seed_capability を強制的に Regionサーバにする. | + | |
- | -- OpenSim/Services/LLLoginService/LLLoginResponse.cs での LLLoginResponseクラスのコンストラクタ LLLoginResponse(...) で SeedCapability = destination.ServerURI + CapsUtil.GetCapsSeedPath(aCircuit.CapsPath); を追加する. | + | |
- | -- 上記の手法により,seed_capability を強制的に Regionサーバにすることは可能. | + | |
- | -- この場合,OpenSim/Region/CoreModules/Agent/AssetTransaction/AssetTransactionModule.cs: HandleUDPUploadRequest() がトリガーされる. | + | |
- | -- ただし,Regionサーバで Capabilityが定義されないため,Assetの Uploadの通信が UDPとなる(遅い!!)-> 断念. | + | |
- | -- 因みに,OpenSim ではこの部分には FillOutSeedCap() という関数が使用されている. | + | |
- | FillOutSeedCap(aCircuit, destination, clientIP); | + | |
- | | + | |
- | private void FillOutSeedCap(AgentCircuitData aCircuit, GridRegion destination, IPEndPoint ipepClient) | + | |
- | { | + | |
- | SeedCapability = destination.ServerURI + CapsUtil.GetCapsSeedPath(aCircuit.CapsPath); | + | |
- | } | + | |
- | + Robust サーバ(Aurora.Server) から Regionサーバの MoneyModule を呼び出す. | + | |
- | -- penSim/Services/CapsService/CAPModules/InventoryCAPS.cs 内でトリガーされる関数から XML RPCを使用して Regionサーバにアクセス. | + | |
- | -- この手法を採用!! | + | |
- | #br | + | |
- | | + | |
- | *** Create Group [#pc08e927] | + | |
- | **** [[OpenSim]] [#gb3010a1] | + | |
- | | + | |
- | event -> CreateGroup() -> MM.AmountCharge() | + | |
- | -> MM.ApplyCharge() -> MM.PayMoneyCharge() => XML RPC to MS ("PayMoneyCharge") | + | |
- | - OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs: CreateGroup() | + | |
- | #br | + | |
- | | + | |
- | **** [[Aurora-Sim]] [#jf23b4a8] | + | |
- | event -> CreateGroup() -> MM.AmountCharge() | + | |
- | -> MM.ApplyCharge() -> MM.PayMoneyCharge() => XML RPC to MS ("PayMoneyCharge") | + | |
- | - OpenSim/Region/CoreModules/Avatar/Groups/GroupsModule.cs: CreateGroup() | + | |
- | #br | + | |
- | | + | |
- | *** XML RPC (from MoneyServer): [#d8111c1e] | + | |
- | XML RPC from MS ("OnMoneyTransfered") => MM.OnMoneyTransferedHandler() -> money() event | + | |
- | XML RPC from MS ("UpdateBalance") => MM.BalanceUpdateHandler() => Notify to VW | + | |
- | #br | + | |
- | | + | |
- | *** XML RPC (from external script) [#f71155df] | + | |
- | XML RPC from SC ("UpdateBalance") => MM.BalanceUpdateHandler() => Notify to VW | + | |
- | XML RPC from SC ("GetBalance") => MM.GetBalanceHandler() => XML RPC to MS ("GetBalance") | + | |
- | => Response to SC | + | |
- | XML RPC from SC ("UserAlert") => MM.UserAlertHandler() => Message to VW | + | |
- | | + | |
- | - SC.AddBankerMoney: Transaction Type is BuyMoney (5010) | + | |
- | - SC.SendMoney: Transaction Type is ReferBonus (5003) | + | |
- | | + | |
- | XML RPC from SC ("AddBankerMoney") => MM.AddBankerMoneyHandler() -> MM.AddBankerMoney() => XML RPC to MS ("AddBankerMoney") => MS.handleAddBankerMoney() | + | |
- | XML RPC from SC ("SendMoney") => MM.SendMoneyHandler() -> MM.SendMoney() => XML RPC to MS ("SendMoney") | + | |
- | | + | |
- | #br | + | |
- | | + | |
- | *** XML RPC (from Aurora.Server) [#bf02abc3] | + | |
- | XML RPC from AS ("UploadCovered") => MM.UploadCoveredHandler() => XML RPC to MS ("GetBalance") | + | |
- | XML RPC from AS ("UploadCharge") => MM.UploadChargeHandler() => XML RPC to MS ("PayMoneyCharge") | + | |
| #br | | #br |