Panda3D

Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
ServerRepository Class Reference

## Classes
class | Client
class | Object

## Public Member Functions
| __init__ (self, tcpPort, serverAddress=None, udpPort=None, dcFileNames=None, threadedNet=None)
| clientHardDisconnectTask (self, task)
| flushTask (self, task)
| getDoIdBase (self, doId)
| getTcpHeaderSize (self)
| handleClientCreateObject (self, datagram, dgi)
| handleClientDeleteObject (self, datagram, doId)
| handleClientDisconnect (self, client)
| handleClientObjectSetZone (self, datagram, dgi)
| handleClientObjectUpdateField (self, datagram, dgi, targeted=False)
| handleClientSetInterest (self, client, dgi)
| handleDatagram (self, datagram)
| handleMessageType (self, msgType, di)
| importModule (self, dcImports, moduleName, importSymbols)
| listenerPoll (self, task)
| readDCFile (self, dcFileNames=None)
| readerPollOnce (self)
| readerPollUntilEmpty (self, task)
| sendDoIdRange (self, client)
| sendToAllExcept (self, datagram, exceptionList)
| sendToZoneExcept (self, zoneId, datagram, exceptionList)
| setObjectZone (self, owner, object, zoneId)
| setTcpHeaderSize (self, headerSize)
| updateClientInterestZones (self, client)

## Public Attributes
| clientHardDisconnectTask
dict | clientsByConnection = {}
dict | clientsByDoIdBase = {}
| cw = ConnectionWriter(self.qcm, numThreads)
| dcFile = DCFile()
dict | dclassesByName = {}
dict | dclassesByNumber = {}
str | dcSuffix = ''
| doIdRange = base.config.GetInt('server-doid-range', 1000000)
| flushTask = ConfigVariableDouble('collect-tcp-interval').getValue()
int | hashVal = 0
| idAllocator = UniqueIdAllocator(0, 0xffffffff // self.doIdRange)
| lastConnection = newConnection
| listenerPoll
| needsFlush = set()
dict | objectsByZoneId = {}
| qcl = QueuedConnectionListener(self.qcm, numThreads)
| qcm = QueuedConnectionManager()
| qcr = QueuedConnectionReader(self.qcm, numThreads)
| readerPollUntilEmpty
| tcpRendezvous
dict | zonesToClients = {}

## Static Public Attributes
| notify = DirectNotifyGlobal.directNotify.newCategory("ServerRepository")

## Detailed Description

     This maintains the server-side connection with a Panda server.
    It is only for use with the Panda LAN server provided by CMU.

## Constructor & Destructor Documentation

## ◆ __init__()

__init__ | ( |  | self,
|  |  | tcpPort,
|  |  | serverAddress = None,
|  |  | udpPort = None,
|  |  | dcFileNames = None,
|  |  | threadedNet = None )

## Member Function Documentation

## ◆ clientHardDisconnectTask()

clientHardDisconnectTask | ( |  | self,
|  |  | task )

     client did not tell us he was leaving but we lost connection to
    him, so we need to update our data and tell others

## ◆ flushTask()

flushTask | ( |  | self,
|  |  | task )

     This task is run periodically to flush any connections
    that might need it.  It's only necessary in cases where
    collect-tcp is set true (if this is false, messages are sent
    immediately and do not require periodic flushing).

## ◆ getDoIdBase()

getDoIdBase | ( |  | self,
|  |  | doId )

     Given a doId, return the corresponding doIdBase.  This
    will be the owner of the object (clients may only create
    object doId's within their assigned range).

## ◆ getTcpHeaderSize()

getTcpHeaderSize | ( |  | self | ) |

    Returns the current setting of TCP header size. See
    setTcpHeaderSize().

## ◆ handleClientCreateObject()

handleClientCreateObject | ( |  | self,
|  |  | datagram,
|  |  | dgi )

     client wants to create an object, so we store appropriate
    data, and then pass message along to corresponding zones

## ◆ handleClientDeleteObject()

handleClientDeleteObject | ( |  | self,
|  |  | datagram,
|  |  | doId )

     client deletes an object, let everyone who has interest in
    the object's zone know about it.

## ◆ handleClientDisconnect()

handleClientDisconnect | ( |  | self,
|  |  | client )

## ◆ handleClientObjectSetZone()

handleClientObjectSetZone | ( |  | self,
|  |  | datagram,
|  |  | dgi )

     The client is telling us the object is changing to a new
    zone.

## ◆ handleClientObjectUpdateField()

handleClientObjectUpdateField | ( |  | self,
|  |  | datagram,
|  |  | dgi,
|  |  | targeted = False )

     Received an update request from a client.

## ◆ handleClientSetInterest()

handleClientSetInterest | ( |  | self,
|  |  | client,
|  |  | dgi )

     The client is specifying a particular set of zones it is
    interested in.

## ◆ handleDatagram()

handleDatagram | ( |  | self,
|  |  | datagram )

     switching station for messages

## ◆ handleMessageType()

handleMessageType | ( |  | self,
|  |  | msgType,
|  |  | di )

## ◆ importModule()

importModule | ( |  | self,
|  |  | dcImports,
|  |  | moduleName,
|  |  | importSymbols )

     Imports the indicated moduleName and all of its symbols
    into the current namespace.  This more-or-less reimplements
    the Python import command.

## ◆ listenerPoll()

listenerPoll | ( |  | self,
|  |  | task )

## ◆ readDCFile()

readDCFile | ( |  | self,
|  |  | dcFileNames = None )

    Reads in the dc files listed in dcFileNames, or if
    dcFileNames is None, reads in all of the dc files listed in
    the Configrc file.

## ◆ readerPollOnce()

readerPollOnce | ( |  | self | ) |

     checks for available messages to the server

## ◆ readerPollUntilEmpty()

readerPollUntilEmpty | ( |  | self,
|  |  | task )

     continuously polls for new messages on the server

## ◆ sendDoIdRange()

sendDoIdRange | ( |  | self,
|  |  | client )

     sends the client the range of doid's that the client can
    use

## ◆ sendToAllExcept()

sendToAllExcept | ( |  | self,
|  |  | datagram,
|  |  | exceptionList )

     sends a message to all connected clients, except for
    clients on exceptionList.

## ◆ sendToZoneExcept()

sendToZoneExcept | ( |  | self,
|  |  | zoneId,
|  |  | datagram,
|  |  | exceptionList )

    sends a message to everyone who has interest in the
    indicated zone, except for the clients on exceptionList.

## ◆ setObjectZone()

setObjectZone | ( |  | self,
|  |  | owner,
|  |  | object,
|  |  | zoneId )

## ◆ setTcpHeaderSize()

setTcpHeaderSize | ( |  | self,
|  |  | headerSize )

    Sets the header size of TCP packets.  At the present, legal
    values for this are 0, 2, or 4; this specifies the number of
    bytes to use encode the datagram length at the start of each
    TCP datagram.  Sender and receiver must independently agree on
    this.

## ◆ updateClientInterestZones()

updateClientInterestZones | ( |  | self,
|  |  | client )

     Something about the client has caused its set of interest
    zones to potentially change.  Recompute them.

## Member Data Documentation

## ◆ clientHardDisconnectTask

clientHardDisconnectTask

## ◆ clientsByConnection

dict clientsByConnection = {}

## ◆ clientsByDoIdBase

dict clientsByDoIdBase = {}

## ◆ cw

cw = ConnectionWriter(self.qcm, numThreads)

## ◆ dcFile

dcFile = DCFile()

## ◆ dclassesByName

dict dclassesByName = {}

## ◆ dclassesByNumber

dict dclassesByNumber = {}

## ◆ dcSuffix

str dcSuffix = ''

## ◆ doIdRange

doIdRange = base.config.GetInt('server-doid-range', 1000000)

## ◆ flushTask

flushTask = ConfigVariableDouble('collect-tcp-interval').getValue()

## ◆ hashVal

int hashVal = 0

## ◆ idAllocator

idAllocator = UniqueIdAllocator(0, 0xffffffff // self.doIdRange)

## ◆ lastConnection

lastConnection = newConnection

## ◆ listenerPoll

listenerPoll

## ◆ needsFlush

needsFlush = set()

## ◆ notify

notify = DirectNotifyGlobal.directNotify.newCategory("ServerRepository")
| static

## ◆ objectsByZoneId

dict objectsByZoneId = {}

## ◆ qcl

qcl = QueuedConnectionListener(self.qcm, numThreads)

## ◆ qcm

qcm = QueuedConnectionManager()

## ◆ qcr

qcr = QueuedConnectionReader(self.qcm, numThreads)

## ◆ readerPollUntilEmpty

readerPollUntilEmpty

## ◆ tcpRendezvous

tcpRendezvous

Initial value:
= self.qcm.openTCPServerRendezvous(
serverAddress or '', tcpPort, 10)

## ◆ zonesToClients

dict zonesToClients = {}