Events and delegate functions [edit]

Events [edit]

MoneyTransferRequest [edit]
MM.MoneyTransferRequest() -> MM.MoneyTransferAction() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney")
MM.MoneyTransferRequest() -> MM.MoneyTransferAction() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney")
EconomyDataRequest [edit]
MoneyBalanceRequest [edit]
ParcelBuy [edit]
ParcelBuyPass [edit]
RequestPayPrice [edit]
OnObjectBuy [edit]
ObjectBuy() -> MM.Transfer() => XML RPC to MS ("TransferMoney")
            -> BuyObject()
BuyObjectInventory [edit]
LandBuy [edit]

Calling Sequence of Functions [edit]

LSL [edit]

llGiveMoney() [edit]
MM.ObjectGiveMoney() -> MM.TransferMoney()      => XML RPC to MS ("TransferMoney")
                     -> MM.ForceTransferMoney() => XML RPC to MS ("ForceTransferMoney")

Buy Money from System [edit]

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

Buy Land [edit]

1. VW => XML RPC to helper SC ("preflightBuyLandPrep") => Response to VW
2. OnParcelBuy event -> ProcessParcelBuy() -> MM.TransferMoney() => XML RPC to MS ("TransferMoney")

Upload Inventory [edit]

1. event -> AS.NewAgentInventoryRequest() -> AS.RequestUploadCovered() => XML RPC to RS ("UploadCovered")
2. event -> AS.UploadCompleteHandler() -> AS.RequestUploadCharge() => XML RPC to RS ("UploadCharge")

  1. Robust サーバ(Aurora.Server) に MoneyModule をロードする.
    • 通常のモジュールの読み込みとしては?
    • OpenSim/Services/XXX/ にプログラムを作って,サービスとしてロードさせる.サービスは AuroraServerConfig/Main.ini の [Handlers]セクションで指定.
    • 詳細不明で断念.
  2. seed_capability を強制的に Regionサーバにする.
    • OpenSim/Services/LLLoginService/LLLoginR​esponse.cs での LLLoginResponseクラスのコンストラクタ LLLoginResponse(...) で SeedCapability = destination.ServerURI + CapsUtil.GetCapsSeedPath(aCircuit.CapsPa​th); を追加する.
    • 上記の手法により,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);
      }
  3. Robust サーバ(Aurora.Server) から Regionサーバの MoneyModule を呼び出す.
    • penSim/Services/CapsService/CAPModules/InventoryCAPS.cs 内でトリガーされる関数から XML RPCを使用して Regionサーバにアクセス.
    • この手法を採用!!

Create Group [edit]

event -> CreateGroup() -> MM.AmountCharge()
                       -> MM.ApplyCharge() -> MM.PayMoneyCharge() => XML RPC to MS ("PayMoneyCharge")

XML RPC (from MoneyServer): [edit]

XML RPC from MS ("OnMoneyTransfered") => MM.OnMoneyTransferedHandler() -> money() event
XML RPC from MS ("UpdateBalance") => MM.BalanceUpdateHandler() => Notify to VW

XML RPC (from external script) [edit]

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
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")

XML RPC (from Aurora.Server) [edit]

XML RPC from AS ("UploadCovered") => MM.UploadCoveredHandler() => XML RPC to MS ("GetBalance") 
XML RPC from AS ("UploadCharge") => MM.UploadChargeHandler()  => XML RPC to MS ("PayMoneyCharge")

トップ   新規 ページ一覧 検索 最終更新   ヘルプ   最終更新のRSS