|
1: 2012-11-26 (Mon) 10:26:25 iseki |
| + | ** Events and delegate functions [#n5dd9145] |
| + | - 略号 |
| + | -- MM -> Money Module, MS -> Money Server, VW -> Viewer |
| + | -- RS -> Region(Robust) Server, US -> User(Robust) Server, SC -> External Script |
| + | -- AS -> Aurora Server |
| | | |
| + | *** Upload [#qf044492] |
| + | - 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]] [#e5339d2e] |
| + | - OpenSim では IClientAPI.cs の event は EventManager からアクセス可 |
| + | |
| + | **** MoneyTransferRequest [#r8b4f5a8] |
| + | - 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 [#s988b280] |
| + | - event EconomyDataRequest OnEconomyDataRequest; (IClientAPI.cs) |
| + | #br |
| + | |
| + | **** MoneyBalanceRequest [#i46be7e9] |
| + | - event MoneyBalanceRequest OnMoneyBalanceRequest; (IClientAPI.cs) |
| + | #br |
| + | |
| + | **** ParcelBuy [#k1a868ad] |
| + | - event ParcelBuy OnParcelBuy; (IClientAPI.cs) |
| + | #br |
| + | **** ParcelBuyPass [#ub4ad93d] |
| + | - event ParcelBuyPass OnParcelBuyPass; (IClientAPI.cs) |
| + | #br |
| + | **** RequestPayPrice [#a4ae4e97] |
| + | - event RequestPayPrice OnRequestPayPrice; (IClientAPI.cs) |
| + | #br |
| + | **** ObjectBuy [#fa02b07e] |
| + | - event ObjectBuy OnObjectBuy; (IClientAPI.cs) |
| + | - オブジェクト購入時に発生 (コピー,オリジナル,コンテンツ) (PayObject: 5008) |
| + | |
| + | MM.OnObjectBuy() -> MM.BuyObject() |
| + | -> MM.Transfer() => XML RPC to MS ("TransferMoney") |
| + | **** BuyObjectInventory [#r0601ce9] |
| + | - event BuyObjectInventory OnBuyObjectInventory; (IClientAPI.cs) |
| + | #br |
| + | **** MoneyTransferEvent [#h865aa02] |
| + | - event MoneyTransferEvent OnMoneyTransfer; (EventManager.cs) |
| + | #br |
| + | **** LandBuy [#i0b02992] |
| + | - event LandBuy OnValidateLandBuy; (EventManager.cs) |
| + | - event LandBuy OnLandBuy; (EventManager.cs) |
| + | #br |
| + | |
| + | *** Events of [[Aurora-Sim]] [#gaf1e4d2] |
| + | |
| + | **** MoneyTransferRequest [#r75d82bd] |
| + | - 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 [#m8d1d002] |
| + | - event EconomyDataRequest OnEconomyDataRequest; (IClientAPI.cs) |
| + | #br |
| + | **** MoneyBalanceRequest [#hb9ef1bb] |
| + | - event MoneyBalanceRequest OnMoneyBalanceRequest; (IClientAPI.cs) |
| + | #br |
| + | **** ParcelBuy [#o5f6bf7b] |
| + | - event ParcelBuy OnParcelBuy; (IClientAPI.cs) |
| + | #br |
| + | **** ParcelBuyPass [#rbe3aa81] |
| + | - event ParcelBuyPass OnParcelBuyPass; (IClientAPI.cs) |
| + | #br |
| + | **** RequestPayPrice [#u6cc905a] |
| + | - event RequestPayPrice OnRequestPayPrice; (IClientAPI.cs) |
| + | #br |
| + | |
| + | **** ObjectBuy [#j0e098d1] |
| + | - event ObjectBuy OnObjectBuy; (IClientAPI.cs) |
| + | - オブジェクト購入時に発生 (コピー,オリジナル,コンテンツ) (PayObject: 5008) |
| + | - ObjectBuy(), BuyObject() は Aurora の BuySell/BuySellModule.cs で定義 |
| + | |
| + | ObjectBuy() -> MM.Transfer() => XML RPC to MS ("TransferMoney") |
| + | -> BuyObject() |
| + | |
| + | |
| + | **** BuyObjectInventory [#fcee3361] |
| + | - event BuyObjectInventory OnBuyObjectInventory; (IClientAPI.cs) |
| + | #br |
| + | |
| + | **** LandBuy [#k2cc0b9f] |
| + | - event LandBuy OnValidateBuyLan; (ISceneEntity.cs) |
| + | #br |
| + | |
| + | ** Calling Sequence of Functions [#nb8e520e] |
| + | |
| + | *** LSL [#z1b3a984] |
| + | |
| + | **** llGiveMoney() [#ueb40dd8] |
| + | - Code: ObjectPays (5009) |
| + | |
| + | MM.ObjectGiveMoney() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney") |
| + | -> MM.ForceTransferMoney() => XML RPC to MS ("ForceTransferMoney") |
| + | |
| + | *** Buy Money from System [#pa50af6e] |
| + | - 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 [#td07e397] |
| + | - Code: LandSale (5002) |
| + | |
| + | **** [[OpenSim]] [#y8b5a299] |
| + | 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]] [#j67dee7a] |
| + | - 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 [#hc7d10a4] |
| + | **** [[OpenSim]] [#l5dfbca9] |
| + | 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]] [#k06e705b] |
| + | 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 [#udce041d] |
| + | **** [[OpenSim]] [#l33e521d] |
| + | |
| + | event -> CreateGroup() -> MM.AmountCharge() |
| + | -> MM.ApplyCharge() -> MM.PayMoneyCharge() => XML RPC to MS ("PayMoneyCharge") |
| + | - OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs: CreateGroup() |
| + | #br |
| + | |
| + | **** [[Aurora-Sim]] [#j12b76cf] |
| + | 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): [#mc97de42] |
| + | 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) [#t5ed3468] |
| + | 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) [#u0336e20] |
| + | 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 |