C# 클래스 OpenSim.Region.Framework.Scenes.AsyncInventorySender

Send FetchInventoryReply information to clients asynchronously on a single thread rather than asynchronously via multiple threads.
If the main root inventory is right-clicked on a version 1 viewer for a user with a large inventory, a very very large number of FetchInventory requests are sent to the simulator. Each is handled on a separate thread by the IClientAPI, but the sheer number of requests overwhelms the number of threads available and ends up freezing the inbound packet handling. This class makes the first FetchInventory packet thread process the queue. If new requests come in while it is processing, then the subsequent threads just add the requests and leave it to the original thread to process them. This might slow down outbound packets but these are limited by the IClientAPI outbound queues anyway. It might be possible to ignore FetchInventory requests altogether, particularly as they are redundant wrt to FetchInventoryDescendents requests, but this would require more investigation.
파일 보기 프로젝트 열기: francogrid/sim 1 사용 예제들

보호된 프로퍼티들

프로퍼티 타입 설명
m_processing bool
m_scene Scene

공개 메소드들

메소드 설명
AsyncInventorySender ( Scene scene ) : System
HandleFetchInventory ( IClientAPI remoteClient, UUID itemID, UUID ownerID ) : void

Handle a fetch inventory request from the client

보호된 메소드들

메소드 설명
ProcessQueue ( ) : void

Process the queue of fetches

메소드 상세

AsyncInventorySender() 공개 메소드

public AsyncInventorySender ( Scene scene ) : System
scene Scene
리턴 System

HandleFetchInventory() 공개 메소드

Handle a fetch inventory request from the client
public HandleFetchInventory ( IClientAPI remoteClient, UUID itemID, UUID ownerID ) : void
remoteClient IClientAPI
itemID UUID
ownerID UUID
리턴 void

ProcessQueue() 보호된 메소드

Process the queue of fetches
protected ProcessQueue ( ) : void
리턴 void

프로퍼티 상세

m_processing 보호되어 있는 프로퍼티

Signal whether a queue is currently being processed or not.
protected bool m_processing
리턴 bool

m_scene 보호되어 있는 프로퍼티

protected Scene,OpenSim.Region.Framework.Scenes m_scene
리턴 Scene