From 5e4d6cab00cb29cd088ab7b62ab13aff103b64cb Mon Sep 17 00:00:00 2001 From: onefang Date: Sun, 19 May 2019 21:24:15 +1000 Subject: Dump OpenSim 0.9.0.1 into it's own branch. --- .../Server/IRCClientView.cs | 352 +++++++++++++-------- .../Agent/TextureSender/J2KDecoderCommandModule.cs | 20 +- .../Agent/UDP/Linden/LindenUDPInfoModule.cs | 299 +++++------------ 3 files changed, 314 insertions(+), 357 deletions(-) (limited to 'OpenSim/Region/OptionalModules/Agent') diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 6fe86b2..469dd67 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs @@ -58,6 +58,8 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public ISceneAgent SceneAgent { get; set; } + public int PingTimeMS { get { return 0; } } + private string m_username; private string m_nick; @@ -66,6 +68,8 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server private bool m_connected = true; + public List SelectedObjects {get; private set;} + public IRCClientView(TcpClient client, Scene scene) { m_client = client; @@ -566,18 +570,28 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public UUID ActiveGroupId { get { return UUID.Zero; } + set {} } public string ActiveGroupName { get { return "IRCd User"; } + set {} } public ulong ActiveGroupPowers { get { return 0; } + set {} + } + + public Dictionary GetGroupPowers() + { + return new Dictionary(); } + public void SetGroupPowers(Dictionary powers) { } + public ulong GetGroupPowers(UUID groupID) { return 0; @@ -671,6 +685,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public event ObjectDrop OnObjectDrop; public event StartAnim OnStartAnim; public event StopAnim OnStopAnim; + public event ChangeAnim OnChangeAnim; public event LinkObjects OnLinkObjects; public event DelinkObjects OnDelinkObjects; public event RequestMapBlocks OnRequestMapBlocks; @@ -682,6 +697,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public event TeleportLandmarkRequest OnTeleportLandmarkRequest; public event TeleportCancel OnTeleportCancel; public event DeRezObject OnDeRezObject; + public event RezRestoreToWorld OnRezRestoreToWorld; public event Action OnRegionHandShakeReply; public event GenericCall1 OnRequestWearables; public event Action OnCompleteMovementToRegion; @@ -717,6 +733,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily; public event UpdatePrimFlags OnUpdatePrimFlags; public event UpdatePrimTexture OnUpdatePrimTexture; + public event ClientChangeObject onClientChangeObject; public event UpdateVector OnUpdatePrimGroupPosition; public event UpdateVector OnUpdatePrimSinglePosition; public event UpdatePrimRotation OnUpdatePrimGroupRotation; @@ -821,6 +838,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public event ObjectOwner OnObjectOwner; public event DirPlacesQuery OnDirPlacesQuery; public event DirFindQuery OnDirFindQuery; + public event MoveItemsAndLeaveCopy OnMoveItemsAndLeaveCopy; public event DirLandQuery OnDirLandQuery; public event DirPopularQuery OnDirPopularQuery; public event DirClassifiedQuery OnDirClassifiedQuery; @@ -837,7 +855,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public event ClassifiedInfoRequest OnClassifiedInfoRequest; public event ClassifiedInfoUpdate OnClassifiedInfoUpdate; public event ClassifiedDelete OnClassifiedDelete; - public event ClassifiedDelete OnClassifiedGodDelete; + public event ClassifiedGodDelete OnClassifiedGodDelete; public event EventNotificationAddRequest OnEventNotificationAddRequest; public event EventNotificationRemoveRequest OnEventNotificationRemoveRequest; public event EventGodDelete OnEventGodDelete; @@ -867,10 +885,12 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public event GroupVoteHistoryRequest OnGroupVoteHistoryRequest; public event SimWideDeletesDelegate OnSimWideDeletes; public event SendPostcard OnSendPostcard; + public event ChangeInventoryItemFlags OnChangeInventoryItemFlags; public event MuteListEntryUpdate OnUpdateMuteListEntry; public event MuteListEntryRemove OnRemoveMuteListEntry; public event GodlikeMessage onGodlikeMessage; public event GodUpdateRegionInfoUpdate OnGodUpdateRegionInfoUpdate; + public event GenericCall2 OnUpdateThrottles; #pragma warning restore 67 @@ -878,20 +898,20 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void InPacket(object NewPack) { - + } public void ProcessInPacket(Packet NewPack) { - + } public void Close() { - Close(false); + Close(true, false); } - public void Close(bool force) + public void Close(bool sendStop, bool force) { Disconnect(); } @@ -933,32 +953,32 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendWearables(AvatarWearable[] wearables, int serial) { - + } public void SendAppearance(UUID agentID, byte[] visualParams, byte[] textureEntry) { - + } - + public void SendCachedTextureResponse(ISceneEntity avatar, int serial, List cachedTextures) { } - + public void SendStartPingCheck(byte seq) { - + } public void SendKillObject(List localID) { - + } public void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs) { - + } public void SendChatMessage( @@ -985,37 +1005,42 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendGenericMessage(string method, UUID invoice, List message) { - + + } + + public virtual bool CanSendLayerData() + { + return false; } public void SendLayerData(float[] map) { - + } public void SendLayerData(int px, int py, float[] map) { - + } - public void SendWindData(Vector2[] windSpeeds) + public void SendWindData(int version, Vector2[] windSpeeds) { - + } - public void SendCloudData(float[] cloudCover) + public void SendCloudData(int version, float[] cloudCover) { - + } public void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look) { - + } public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint) { - + } public AgentCircuitData RequestClientInfo() @@ -1025,32 +1050,32 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void CrossRegion(ulong newRegionHandle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL) { - + } public void SendMapBlock(List mapBlocks, uint flag) { - + } public void SendLocalTeleport(Vector3 position, Vector3 lookAt, uint flags) { - + } public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags, string capsURL) { - + } public void SendTeleportFailed(string reason) { - + } public void SendTeleportStart(uint flags) { - + } public void SendTeleportProgress(uint flags, string message) @@ -1059,20 +1084,25 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendMoneyBalance(UUID transaction, bool success, byte[] description, int balance, int transactionType, UUID sourceID, bool sourceIsGroup, UUID destID, bool destIsGroup, int amount, string item) { - + } public void SendPayPrice(UUID objectID, int[] payPrice) { - + } public void SendCoarseLocationUpdate(List users, List CoarseLocations) { - + } - public void SendAvatarDataImmediate(ISceneEntity avatar) + public void SendEntityFullUpdateImmediate(ISceneEntity ent) + { + + } + + public void SendEntityTerseUpdateImmediate(ISceneEntity ent) { } @@ -1094,87 +1124,92 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendInventoryFolderDetails(UUID ownerID, UUID folderID, List items, List folders, int version, bool fetchFolders, bool fetchItems) { - + } public void SendInventoryItemDetails(UUID ownerID, InventoryItemBase item) { - + } public void SendInventoryItemCreateUpdate(InventoryItemBase Item, uint callbackId) { - + + } + + public void SendInventoryItemCreateUpdate(InventoryItemBase Item, UUID transactionID, uint callbackId) + { + } public void SendRemoveInventoryItem(UUID itemID) { - + } public void SendTakeControls(int controls, bool passToAgent, bool TakeControls) { - + } public void SendTaskInventory(UUID taskID, short serial, byte[] fileName) { - + } public void SendBulkUpdateInventory(InventoryNodeBase node) { - + } - public void SendXferPacket(ulong xferID, uint packet, byte[] data) + public void SendXferPacket(ulong xferID, uint packet, byte[] data, bool isTaskInventory) { - + } public void SendAbortXferPacket(ulong xferID) { - + } public void SendEconomyData(float EnergyEfficiency, int ObjectCapacity, int ObjectCount, int PriceEnergyUnit, int PriceGroupCreate, int PriceObjectClaim, float PriceObjectRent, float PriceObjectScaleFactor, int PriceParcelClaim, float PriceParcelClaimFactor, int PriceParcelRent, int PricePublicObjectDecay, int PricePublicObjectDelete, int PriceRentLight, int PriceUpload, int TeleportMinPrice, float TeleportPriceExponent) { - + } public void SendAvatarPickerReply(AvatarPickerReplyAgentDataArgs AgentData, List Data) { - + } public void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle) { - + } public void SendPreLoadSound(UUID objectID, UUID ownerID, UUID soundID) { - + } public void SendPlayAttachedSound(UUID soundID, UUID objectID, UUID ownerID, float gain, byte flags) { - + } public void SendTriggeredSound(UUID soundID, UUID ownerID, UUID objectID, UUID parentID, ulong handle, Vector3 position, float gain) { - + } public void SendAttachedSoundGainChange(UUID objectID, float gain) { - + } public void SendNameReply(UUID profileId, string firstname, string lastname) { - + } public void SendAlertMessage(string message) @@ -1184,7 +1219,12 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendAgentAlertMessage(string message, bool modal) { - + + } + + public void SendAlertMessage(string message, string info) + { + } public void SendLoadURL(string objectname, UUID objectID, UUID ownerID, bool groupOwned, string message, string url) @@ -1194,77 +1234,77 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendDialog(string objectname, UUID objectID, UUID ownerID, string ownerFirstName, string ownerLastName, string msg, UUID textureID, int ch, string[] buttonlabels) { - + } public void SendSunPos(Vector3 sunPos, Vector3 sunVel, ulong CurrentTime, uint SecondsPerSunCycle, uint SecondsPerYear, float OrbitalPosition) { - + } public void SendViewerEffect(ViewerEffectPacket.EffectBlock[] effectBlocks) { - + } public void SendViewerTime(int phase) { - + } - public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] charterMember, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID) + public void SendAvatarProperties(UUID avatarID, string aboutText, string bornOn, byte[] membershipType, string flAbout, uint flags, UUID flImageID, UUID imageID, string profileURL, UUID partnerID) { - + } public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question) { - + } public void SendHealth(float health) { - + } public void SendEstateList(UUID invoice, int code, UUID[] Data, uint estateID) { - + } public void SendBannedUserList(UUID invoice, EstateBan[] banlist, uint estateID) { - + } public void SendRegionInfoToEstateMenu(RegionInfoForEstateMenuArgs args) { - + } public void SendEstateCovenantInformation(UUID covenant) { - + } public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, uint covenantChanged, string abuseEmail, UUID estateOwner) { - + } public void SendLandProperties(int sequence_id, bool snap_selection, int request_result, ILandObject lo, float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) { - + } public void SendLandAccessListData(List accessList, uint accessFlag, int localLandID) { - + } public void SendForceClientSelectObjects(List objectIDs) { - + } public void SendCameraConstraint(Vector4 ConstraintPlane) @@ -1274,57 +1314,57 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendLandObjectOwners(LandData land, List groups, Dictionary ownersAndCount) { - + } public void SendLandParcelOverlay(byte[] data, int sequence_id) { - + } public void SendParcelMediaCommand(uint flags, ParcelMediaCommandEnum command, float time) { - + } public void SendParcelMediaUpdate(string mediaUrl, UUID mediaTextureID, byte autoScale, string mediaType, string mediaDesc, int mediaWidth, int mediaHeight, byte mediaLoop) { - + } public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, UUID AssetFullID) { - + } public void SendConfirmXfer(ulong xferID, uint PacketID) { - + } public void SendXferRequest(ulong XferID, short AssetType, UUID vFileID, byte FilePath, byte[] FileName) { - + } public void SendInitiateDownload(string simFileName, string clientFileName) { - + } public void SendImageFirstPart(ushort numParts, UUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec) { - + } public void SendImageNextPart(ushort partNumber, UUID imageUuid, byte[] imageData) { - + } public void SendImageNotFound(UUID imageid) { - + } public void SendShutdownConnectionNotice() @@ -1334,12 +1374,12 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendSimStats(SimStats stats) { - + } public void SendObjectPropertiesFamilyData(ISceneEntity Entity, uint RequestFlags) { - + } public void SendObjectPropertiesReply(ISceneEntity entity) @@ -1348,72 +1388,76 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendAgentOffline(UUID[] agentIDs) { - + } public void SendAgentOnline(UUID[] agentIDs) { - + + } + + public void SendFindAgent(UUID HunterID, UUID PreyID, double GlobalX, double GlobalY) + { } public void SendSitResponse(UUID TargetID, Vector3 OffsetPos, Quaternion SitOrientation, bool autopilot, Vector3 CameraAtOffset, Vector3 CameraEyeOffset, bool ForceMouseLook) { - + } public void SendAdminResponse(UUID Token, uint AdminLevel) { - + } public void SendGroupMembership(GroupMembershipData[] GroupMembership) { - + } public void SendGroupNameReply(UUID groupLLUID, string GroupName) { - + } public void SendJoinGroupReply(UUID groupID, bool success) { - + } public void SendEjectGroupMemberReply(UUID agentID, UUID groupID, bool success) { - + } public void SendLeaveGroupReply(UUID groupID, bool success) { - + } public void SendCreateGroupReply(UUID groupID, bool success, string message) { - + } public void SendLandStatReply(uint reportType, uint requestFlags, uint resultCount, LandStatReportItem[] lsrpia) { - + } public void SendScriptRunningReply(UUID objectID, UUID itemID, bool running) { - + } public void SendAsset(AssetRequestToClient req) { - + } public void SendTexture(AssetBase TextureAsset) { - + } public virtual void SetChildAgentThrottle(byte[] throttle) @@ -1421,6 +1465,16 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server } + public virtual void SetChildAgentThrottle(byte[] throttle,float factor) + { + + } + + public void SetAgentThrottleSilent(int throttle, int setting) + { + + + } public byte[] GetThrottlesPacked(float multiplier) { return new byte[0]; @@ -1449,12 +1503,12 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SetClientInfo(ClientInfo info) { - + } public void SetClientOption(string option, string value) { - + } public string GetClientOption(string option) @@ -1469,67 +1523,67 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendSetFollowCamProperties(UUID objectID, SortedDictionary parameters) { - + } public void SendClearFollowCamProperties(UUID objectID) { - + } public void SendRegionHandle(UUID regoinID, ulong handle) { - + } public void SendParcelInfo(RegionInfo info, LandData land, UUID parcelID, uint x, uint y) { - + } public void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt) { - + } public void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data) { - + } public void SendDirPeopleReply(UUID queryID, DirPeopleReplyData[] data) { - + } public void SendDirEventsReply(UUID queryID, DirEventsReplyData[] data) { - + } public void SendDirGroupsReply(UUID queryID, DirGroupsReplyData[] data) { - + } public void SendDirClassifiedReply(UUID queryID, DirClassifiedReplyData[] data) { - + } public void SendDirLandReply(UUID queryID, DirLandReplyData[] data) { - + } public void SendDirPopularReply(UUID queryID, DirPopularReplyData[] data) { - + } public void SendEventInfoReply(EventData info) { - + } public void SendTelehubInfo(UUID ObjectID, string ObjectName, Vector3 ObjectPos, Quaternion ObjectRot, List SpawnPoint) @@ -1539,72 +1593,93 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags) { - + } public void SendAvatarGroupsReply(UUID avatarID, GroupMembershipData[] data) { - + + } + + public void SendAgentGroupDataUpdate(UUID avatarID, GroupMembershipData[] data) + { + } public void SendOfferCallingCard(UUID srcID, UUID transactionID) { - + } public void SendAcceptCallingCard(UUID transactionID) { - + } public void SendDeclineCallingCard(UUID transactionID) { - + } public void SendTerminateFriend(UUID exFriendID) { - + } public void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name) { - + } public void SendClassifiedInfoReply(UUID classifiedID, UUID creatorID, uint creationDate, uint expirationDate, uint category, string name, string description, UUID parcelID, uint parentEstate, UUID snapshotID, string simName, Vector3 globalPos, string parcelName, byte classifiedFlags, int price) { - + } public void SendAgentDropGroup(UUID groupID) { - + } public void RefreshGroupMembership() { - + + } + + public void UpdateGroupMembership(GroupMembershipData[] data) + { + } + public void GroupMembershipRemove(UUID GroupID) + { + + } + + public void GroupMembershipAddReplace(UUID GroupID,ulong GroupPowers) + { + + } + + public void SendAvatarNotesReply(UUID targetID, string text) { - + } public void SendAvatarPicksReply(UUID targetID, Dictionary picks) { - + } public void SendPickInfoReply(UUID pickID, UUID creatorID, bool topPick, UUID parcelID, string name, string desc, UUID snapshotID, string user, string originalName, string simName, Vector3 posGlobal, int sortOrder, bool enabled) { - + } public void SendAvatarClassifiedReply(UUID targetID, Dictionary classifieds) { - + } public void SendAvatarInterestUpdate(IClientAPI client, uint wantmask, string wanttext, uint skillsmask, string skillstext, string languages) @@ -1614,22 +1689,27 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendParcelDwellReply(int localID, UUID parcelID, float dwell) { - + } public void SendUserInfoReply(bool imViaEmail, bool visible, string email) { - + } public void SendUseCachedMuteList() { - + + } + + public void SendEmpytMuteList() + { + } public void SendMuteListUpdate(string filename) { - + } public bool AddGenericPacketHandler(string MethodName, GenericMessage handler) @@ -1646,15 +1726,15 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendAvatarInterestsReply(UUID avatarID, uint wantMask, string wantText, uint skillsMask, string skillsText, string languages) { } - + public void SendGroupAccountingDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID, int amt) { } - + public void SendGroupAccountingSummary(IClientAPI sender,UUID groupID, uint moneyAmt, int totalTier, int usedTier) { } - + public void SendGroupTransactionsSummaryDetails(IClientAPI sender,UUID groupID, UUID transactionID, UUID sessionID,int amt) { } @@ -1678,14 +1758,26 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server public void SendAgentTerseUpdate(ISceneEntity presence) { } - + public void SendPlacesReply(UUID queryID, UUID transactionID, PlacesReplyData[] data) { } + public void SendSelectedPartsProprieties(List parts) + { + } + public void SendPartPhysicsProprieties(ISceneEntity entity) { } + public void SendPartFullUpdate(ISceneEntity ent, uint? parentID) + { + } + + public int GetAgentThrottleSilent(int throttle) + { + return 0; + } } } diff --git a/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs index c897aa5..e93fcdc 100644 --- a/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/TextureSender/J2KDecoderCommandModule.cs @@ -54,36 +54,36 @@ namespace OpenSim.Region.OptionalModules.Agent.TextureSender // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private Scene m_scene; - + public string Name { get { return "Asset Information Module"; } } - + public Type ReplaceableInterface { get { return null; } } - + public void Initialise(IConfigSource source) { // m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: INITIALIZED MODULE"); } - + public void PostInitialise() { // m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: POST INITIALIZED MODULE"); } - + public void Close() { // m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: CLOSED MODULE"); } - + public void AddRegion(Scene scene) { // m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); } - + public void RemoveRegion(Scene scene) { // m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName); } - + public void RegionLoaded(Scene scene) { // m_log.DebugFormat("[J2K DECODER COMMAND MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); @@ -117,10 +117,10 @@ namespace OpenSim.Region.OptionalModules.Agent.TextureSender MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid ID format", rawAssetId); return; } - + AssetBase asset = m_scene.AssetService.Get(assetId.ToString()); if (asset == null) - { + { MainConsole.Instance.OutputFormat("ERROR: No asset found with ID {0}", assetId); return; } diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 08d0fbf..490809e 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs @@ -52,48 +52,48 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LindenUDPInfoModule")] public class LindenUDPInfoModule : ISharedRegionModule { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + protected Dictionary m_scenes = new Dictionary(); - - public string Name { get { return "Linden UDP Module"; } } - + + public string Name { get { return "Linden UDP Module"; } } + public Type ReplaceableInterface { get { return null; } } - + public void Initialise(IConfigSource source) { // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: INITIALIZED MODULE"); } - + public void PostInitialise() { // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: POST INITIALIZED MODULE"); } - + public void Close() { // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: CLOSED MODULE"); } - + public void AddRegion(Scene scene) { // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); - + lock (m_scenes) m_scenes[scene.RegionInfo.RegionID] = scene; scene.AddCommand( "Comms", this, "show pqueues", "show pqueues [full]", - "Show priority queue data for each client", + "Show priority queue data for each client", "Without the 'full' option, only root agents are shown." - + " With the 'full' option child agents are also shown.", + + " With the 'full' option child agents are also shown.", (mod, cmd) => MainConsole.Instance.Output(GetPQueuesReport(cmd))); - + scene.AddCommand( "Comms", this, "show queues", "show queues [full]", - "Show queue data for each client", + "Show queue data for each client", "Without the 'full' option, only root agents are shown.\n" + "With the 'full' option child agents are also shown.\n\n" + "Type - Rt is a root (avatar) client whilst cd is a child (neighbour interacting) client.\n" @@ -116,40 +116,24 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden "clear image queues ", "Clear the image queues (textures downloaded via UDP) for a particular client.", (mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd))); - + scene.AddCommand( "Comms", this, "show throttles", "show throttles [full]", - "Show throttle settings for each client and for the server overall", + "Show throttle settings for each client and for the server overall", "Without the 'full' option, only root agents are shown." - + " With the 'full' option child agents are also shown.", + + " With the 'full' option child agents are also shown.", (mod, cmd) => MainConsole.Instance.Output(GetThrottlesReport(cmd))); - - scene.AddCommand( - "Comms", this, "emergency-monitoring", - "emergency-monitoring", - "Go on/off emergency monitoring mode", - "Go on/off emergency monitoring mode", - HandleEmergencyMonitoring); - - scene.AddCommand( - "Comms", this, "show client stats", - "show client stats [first_name last_name]", - "Show client request stats", - "Without the 'first_name last_name' option, all clients are shown." - + " With the 'first_name last_name' option only a specific client is shown.", - (mod, cmd) => MainConsole.Instance.Output(HandleClientStatsReport(cmd))); - } - + public void RemoveRegion(Scene scene) { // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName); - + lock (m_scenes) m_scenes.Remove(scene.RegionInfo.RegionID); - } - + } + public void RegionLoaded(Scene scene) { // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); @@ -183,7 +167,7 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden foreach (ScenePresence agent in foundAgents) { LLClientView client = agent.ControllingClient as LLClientView; - + if (client == null) return "This command is only supported for LLClientView"; @@ -197,29 +181,11 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden return report.ToString(); } - protected void HandleEmergencyMonitoring(string module, string[] cmd) - { - bool mode = true; - if (cmd.Length == 1 || (cmd.Length > 1 && cmd[1] == "on")) - { - mode = true; - MainConsole.Instance.Output("Emergency Monitoring ON"); - } - else - { - mode = false; - MainConsole.Instance.Output("Emergency Monitoring OFF"); - } - - foreach (Scene s in m_scenes.Values) - s.EmergencyMonitoring = mode; - } - protected string GetColumnEntry(string entry, int maxLength, int columnPadding) - { + { return string.Format( - "{0,-" + maxLength + "}{1,-" + columnPadding + "}", - entry.Length > maxLength ? entry.Substring(0, maxLength) : entry, + "{0,-" + maxLength + "}{1,-" + columnPadding + "}", + entry.Length > maxLength ? entry.Substring(0, maxLength) : entry, ""); } @@ -232,29 +198,29 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden { bool showChildren = false; string pname = ""; - + if (showParams.Length > 2 && showParams[2] == "full") - showChildren = true; + showChildren = true; else if (showParams.Length > 3) pname = showParams[2] + " " + showParams[3]; - - StringBuilder report = new StringBuilder(); + + StringBuilder report = new StringBuilder(); int columnPadding = 2; - int maxNameLength = 18; + int maxNameLength = 18; int maxRegionNameLength = 14; int maxTypeLength = 4; -// int totalInfoFieldsLength = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; - +// int totalInfoFieldsLength = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; + report.Append(GetColumnEntry("User", maxNameLength, columnPadding)); report.Append(GetColumnEntry("Region", maxRegionNameLength, columnPadding)); report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); - + report.AppendFormat( "{0,7} {1,7} {2,7} {3,7} {4,7} {5,7} {6,7} {7,7} {8,7} {9,7} {10,7} {11,7}\n", "Pri 0", "Pri 1", - "Pri 2", + "Pri 2", "Pri 3", "Pri 4", "Pri 5", @@ -277,16 +243,16 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden bool isChild = client.SceneAgent.IsChildAgent; if (isChild && !showChildren) return; - + string name = client.Name; if (pname != "" && name != pname) return; - + string regionName = scene.RegionInfo.RegionName; - + report.Append(GetColumnEntry(name, maxNameLength, columnPadding)); report.Append(GetColumnEntry(regionName, maxRegionNameLength, columnPadding)); - report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding)); + report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding)); report.AppendLine(((LLClientView)client).EntityUpdateQueue.ToString()); } }); @@ -331,17 +297,17 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden foreach (ScenePresence agent in foundAgents) { LLClientView client = agent.ControllingClient as LLClientView; - + if (client == null) return "This command is only supported for LLClientView"; - + J2KImage[] images = client.ImageManager.GetImages(); report.AppendFormat( "In region {0} ({1} agent)\n", agent.Scene.RegionInfo.RegionName, agent.IsChildAgent ? "child" : "root"); report.AppendFormat("Images in queue: {0}\n", images.Length); - + if (images.Length > 0) { report.AppendFormat( @@ -352,7 +318,7 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden "Start Pkt", "Has Asset", "Decoded"); - + foreach (J2KImage image in images) report.AppendFormat( "{0,36} {1,8} {2,10} {3,10} {4,9} {5,7}\n", @@ -362,7 +328,7 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden return report.ToString(); } - + /// /// Generate UDP Queue data report for each client /// @@ -372,16 +338,16 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden { bool showChildren = false; string pname = ""; - + if (showParams.Length > 2 && showParams[2] == "full") - showChildren = true; + showChildren = true; else if (showParams.Length > 3) pname = showParams[2] + " " + showParams[3]; - - StringBuilder report = new StringBuilder(); - + + StringBuilder report = new StringBuilder(); + int columnPadding = 2; - int maxNameLength = 18; + int maxNameLength = 18; int maxRegionNameLength = 14; int maxTypeLength = 4; @@ -389,11 +355,11 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; - + report.Append(GetColumnEntry("User", maxNameLength, columnPadding)); report.Append(GetColumnEntry("Region", maxRegionNameLength, columnPadding)); report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); - + report.AppendFormat( "{0,7} {1,7} {2,7} {3,7} {4,9} {5,7} {6,7} {7,7} {8,7} {9,7} {10,8} {11,7}\n", "Since", @@ -408,7 +374,7 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden "Q Pkts", "Q Pkts", "Q Pkts"); - + report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); report.AppendFormat( "{0,7} {1,7} {2,7} {3,7} {4,9} {5,7} {6,7} {7,7} {8,7} {9,7} {10,8} {11,7}\n", @@ -423,8 +389,8 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden "Cloud", "Task", "Texture", - "Asset"); - + "Asset"); + lock (m_scenes) { foreach (Scene scene in m_scenes.Values) @@ -438,7 +404,7 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden bool isChild = client.SceneAgent.IsChildAgent; if (isChild && !showChildren) return; - + string name = client.Name; if (pname != "" && name != pname) return; @@ -449,7 +415,7 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden report.Append(GetColumnEntry(regionName, maxRegionNameLength, columnPadding)); report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding)); - IStatsCollector stats = (IStatsCollector)client; + IStatsCollector stats = (IStatsCollector)client; report.AppendLine(stats.Report()); } }); @@ -457,8 +423,8 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden } return report.ToString(); - } - + } + /// /// Show throttle data /// @@ -468,28 +434,28 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden { bool showChildren = false; string pname = ""; - + if (showParams.Length > 2 && showParams[2] == "full") - showChildren = true; + showChildren = true; else if (showParams.Length > 3) pname = showParams[2] + " " + showParams[3]; - - StringBuilder report = new StringBuilder(); - + + StringBuilder report = new StringBuilder(); + int columnPadding = 2; - int maxNameLength = 18; + int maxNameLength = 18; int maxRegionNameLength = 14; - int maxTypeLength = 4; - int totalInfoFieldsLength = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; - + int maxTypeLength = 4; + int totalInfoFieldsLength = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; + report.Append(GetColumnEntry("User", maxNameLength, columnPadding)); report.Append(GetColumnEntry("Region", maxRegionNameLength, columnPadding)); - report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); - + report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); + report.AppendFormat( "{0,8} {1,8} {2,7} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7}\n", "Max", - "Target", + "Target", "Actual", "Resend", "Land", @@ -497,8 +463,8 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden "Cloud", "Task", "Texture", - "Asset"); - + "Asset"); + report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); report.AppendFormat( "{0,8} {1,8} {2,7} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7}\n", @@ -511,10 +477,10 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden "kb/s", "kb/s", "kb/s", - "kb/s"); - + "kb/s"); + report.AppendLine(); - + lock (m_scenes) { foreach (Scene scene in m_scenes.Values) @@ -529,25 +495,25 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden bool isChild = client.SceneAgent.IsChildAgent; if (isChild && !showChildren) return; - + string name = client.Name; if (pname != "" && name != pname) return; string regionName = scene.RegionInfo.RegionName; - + LLUDPClient llUdpClient = llClient.UDPClient; ClientInfo ci = llUdpClient.GetClientInfo(); - + report.Append(GetColumnEntry(name, maxNameLength, columnPadding)); report.Append(GetColumnEntry(regionName, maxRegionNameLength, columnPadding)); - report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding)); - + report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding)); + report.AppendFormat( "{0,8} {1,8} {2,7} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7}\n", ci.maxThrottle > 0 ? ((ci.maxThrottle * 8) / 1000).ToString() : "-", - llUdpClient.FlowThrottle.AdaptiveEnabled - ? ((ci.targetThrottle * 8) / 1000).ToString() + llUdpClient.FlowThrottle.AdaptiveEnabled + ? ((ci.targetThrottle * 8) / 1000).ToString() : (llUdpClient.FlowThrottle.TotalDripRequest * 8 / 1000).ToString(), (ci.totalThrottle * 8) / 1000, (ci.resendThrottle * 8) / 1000, @@ -563,107 +529,6 @@ namespace OpenSim.Region.OptionalModules.UDP.Linden } return report.ToString(); - } - - /// - /// Show client stats data - /// - /// - /// - protected string HandleClientStatsReport(string[] showParams) - { - // NOTE: This writes to m_log on purpose. We want to store this information - // in case we need to analyze it later. - // - if (showParams.Length <= 4) - { - m_log.InfoFormat("[INFO]: {0,-12} {1,-20} {2,-6} {3,-11} {4,-11} {5,-16}", "Region", "Name", "Root", "Time", "Reqs/min", "AgentUpdates"); - foreach (Scene scene in m_scenes.Values) - { - scene.ForEachClient( - delegate(IClientAPI client) - { - if (client is LLClientView) - { - LLClientView llClient = client as LLClientView; - ClientInfo cinfo = llClient.UDPClient.GetClientInfo(); - int avg_reqs = cinfo.AsyncRequests.Values.Sum() + cinfo.GenericRequests.Values.Sum() + cinfo.SyncRequests.Values.Sum(); - avg_reqs = avg_reqs / ((DateTime.Now - cinfo.StartedTime).Minutes + 1); - - string childAgentStatus; - - if (llClient.SceneAgent != null) - childAgentStatus = llClient.SceneAgent.IsChildAgent ? "N" : "Y"; - else - childAgentStatus = "Off!"; - - m_log.InfoFormat("[INFO]: {0,-12} {1,-20} {2,-6} {3,-11} {4,-11} {5,-16}", - scene.RegionInfo.RegionName, llClient.Name, - childAgentStatus, - (DateTime.Now - cinfo.StartedTime).Minutes, - avg_reqs, - string.Format( - "{0} ({1:0.00}%)", - llClient.TotalAgentUpdates, - cinfo.SyncRequests.ContainsKey("AgentUpdate") - ? (float)cinfo.SyncRequests["AgentUpdate"] / llClient.TotalAgentUpdates * 100 - : 0)); - } - }); - } - return string.Empty; - } - - string fname = "", lname = ""; - - if (showParams.Length > 3) - fname = showParams[3]; - if (showParams.Length > 4) - lname = showParams[4]; - - foreach (Scene scene in m_scenes.Values) - { - scene.ForEachClient( - delegate(IClientAPI client) - { - if (client is LLClientView) - { - LLClientView llClient = client as LLClientView; - - if (llClient.Name == fname + " " + lname) - { - - ClientInfo cinfo = llClient.GetClientInfo(); - AgentCircuitData aCircuit = scene.AuthenticateHandler.GetAgentCircuitData(llClient.CircuitCode); - if (aCircuit == null) // create a dummy one - aCircuit = new AgentCircuitData(); - - if (!llClient.SceneAgent.IsChildAgent) - m_log.InfoFormat("[INFO]: {0} # {1} # {2}", llClient.Name, Util.GetViewerName(aCircuit), aCircuit.Id0); - - int avg_reqs = cinfo.AsyncRequests.Values.Sum() + cinfo.GenericRequests.Values.Sum() + cinfo.SyncRequests.Values.Sum(); - avg_reqs = avg_reqs / ((DateTime.Now - cinfo.StartedTime).Minutes + 1); - - m_log.InfoFormat("[INFO]:"); - m_log.InfoFormat("[INFO]: {0} # {1} # Time: {2}min # Avg Reqs/min: {3}", scene.RegionInfo.RegionName, - (llClient.SceneAgent.IsChildAgent ? "Child" : "Root"), (DateTime.Now - cinfo.StartedTime).Minutes, avg_reqs); - - Dictionary sortedDict = (from entry in cinfo.AsyncRequests orderby entry.Value descending select entry) - .ToDictionary(pair => pair.Key, pair => pair.Value); - PrintRequests("TOP ASYNC", sortedDict, cinfo.AsyncRequests.Values.Sum()); - - sortedDict = (from entry in cinfo.SyncRequests orderby entry.Value descending select entry) - .ToDictionary(pair => pair.Key, pair => pair.Value); - PrintRequests("TOP SYNC", sortedDict, cinfo.SyncRequests.Values.Sum()); - - sortedDict = (from entry in cinfo.GenericRequests orderby entry.Value descending select entry) - .ToDictionary(pair => pair.Key, pair => pair.Value); - PrintRequests("TOP GENERIC", sortedDict, cinfo.GenericRequests.Values.Sum()); - } - } - }); - } - return string.Empty; } private void PrintRequests(string type, Dictionary sortedDict, int sum) -- cgit v1.1