message system reading from message.xml for message flavors
This commit is contained in:
committed by
Salad Dais
parent
4b5a1fdc1b
commit
6af0cdc8e6
@@ -1,3 +1,4 @@
|
||||
from pkg_resources import resource_stream
|
||||
from pkg_resources import resource_stream, resource_string
|
||||
|
||||
msg_tmpl = resource_stream(__name__, 'message_template.msg')
|
||||
msg_details = resource_string(__name__, 'message.xml')
|
||||
|
||||
560
pyogp/lib/base/data/message.xml
Normal file
560
pyogp/lib/base/data/message.xml
Normal file
@@ -0,0 +1,560 @@
|
||||
<?xml version="1.0"?>
|
||||
<llsd>
|
||||
<map>
|
||||
<key>serverDefaults</key>
|
||||
<!--
|
||||
a map of server names to default message transport
|
||||
-->
|
||||
<map>
|
||||
<key>simulator</key>
|
||||
<string>template</string>
|
||||
|
||||
<key>spaceserver</key>
|
||||
<string>template</string>
|
||||
|
||||
<key>dataserver</key>
|
||||
<string>template</string>
|
||||
|
||||
<key>logDataserver</key>
|
||||
<string>template</string>
|
||||
|
||||
<key>inventoryDataserver</key>
|
||||
<string>template</string>
|
||||
|
||||
<key>rpcserver</key>
|
||||
<string>template</string>
|
||||
|
||||
<key>mapserver</key>
|
||||
<string>template</string>
|
||||
|
||||
<key>viewer</key>
|
||||
<string>template</string>
|
||||
|
||||
</map>
|
||||
<key>messages</key>
|
||||
<!--
|
||||
a map of individual message names that override defaults
|
||||
-->
|
||||
<map>
|
||||
<!--
|
||||
Circuit related messages
|
||||
-->
|
||||
<key>PacketAck</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>OpenCircuit</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>CloseCircuit</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>StartPingCheck</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>CompletePingCheck</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>AddCircuitCode</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>UseCircuitCode</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>CreateTrustedCircuit</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>RequestTrustedCircuit</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<!--
|
||||
Simulator to Launcher
|
||||
until we get a HTTP server in the launcher
|
||||
-->
|
||||
<key>ReportAutosaveCrash</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>SetCPURatio</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<!--
|
||||
Viewer to simulator messages sent before UntrustedSimulatorMessage cap received.
|
||||
-->
|
||||
<key>CompleteAgentMovement</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>EconomyDataRequest</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>ViewerEffect</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>RegionHandshakeReply</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<!--
|
||||
Viewer to simulator messages sent unreliably.
|
||||
-->
|
||||
<key>AgentUpdate</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<!--
|
||||
Messages created by LLThrottleGroup clients
|
||||
-->
|
||||
<key>ImagePacket</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>LayerData</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>ObjectUpdateCached</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>ObjectUpdateCompressed</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>ObjectUpdate</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>ImprovedTerseObjectUpdate</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>AvatarAnimation</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>AvatarAppearance</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
<!-- Simulator to simulator unreliable messages -->
|
||||
<key>EdgeDataPacket</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>CoarseLocationUpdate</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
<key>only-send-latest</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>SimulatorLoad</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>EstablishAgentCommunication</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>AgentGroupDataUpdate</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>AgentDropGroup</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>ChatterBoxSessionStartReply</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>ChatterBoxSessionEventReply</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>ForceCloseChatterBoxSession</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>ChatterBoxSessionAgentListUpdates</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>ChatterBoxSessionUpdate</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>ChatterBoxInvitation</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<!-- Client to server -->
|
||||
<key>ParcelVoiceInfoRequest</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<!-- Server to client -->
|
||||
<key>ParcelVoiceInfo</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>ParcelProperties</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>avatarnotesrequest</key>
|
||||
<map>
|
||||
<key>service_name</key>
|
||||
<string>avatar-notes</string>
|
||||
<key>builder</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>avatarclassifiedsrequest</key>
|
||||
<map>
|
||||
<key>service_name</key>
|
||||
<string>avatar-classifieds</string>
|
||||
<key>builder</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>avatarpicksrequest</key>
|
||||
<map>
|
||||
<key>service_name</key>
|
||||
<string>avatar-pick</string>
|
||||
<key>builder</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>pickinforequest</key>
|
||||
<map>
|
||||
<key>service_name</key>
|
||||
<string>pick-info</string>
|
||||
<key>builder</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>ProvisionVoiceAccountRequest</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<!-- Server to client -->
|
||||
<key>RequiredVoiceVersion</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<!-- UDPDeprecated Messages -->
|
||||
<key>ScriptRunningReply</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>StartGroupProposal</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>FetchInventoryDescendents</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>template</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
<key>GroupProposalBallot</key>
|
||||
<map>
|
||||
<key>flavor</key>
|
||||
<string>llsd</string>
|
||||
<key>trusted-sender</key>
|
||||
<boolean>false</boolean>
|
||||
</map>
|
||||
|
||||
</map>
|
||||
<key>capBans</key>
|
||||
<map>
|
||||
<key>MapLayer</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>MapLayerGod</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>NewFileAgentInventory</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>UpdateGestureAgentInventory</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>UpdateNotecardAgentInventory</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>UpdateScriptAgentInventory</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>UpdateGestureTaskInventory</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>UpdateNotecardTaskInventory</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>UpdateScriptTaskInventory</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>ViewerStartAuction</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>ParcelGodReserveForNewbie</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>SendUserReport</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>SendUserReportWithScreenshot</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>RequestTextureDownload</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>EventQueueGet</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>UntrustedSimulatorMessage</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>SendPostcard</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>SendPostcard2</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>SendPostcard3</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>ParcelVoiceInfoRequest</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>ChatSessionRequest</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>ProvisionVoiceAccountRequest</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>RemoteParcelRequest</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>SearchStatTracking</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>ParcelPropertiesUpdate</key>
|
||||
<boolean>false</boolean>
|
||||
|
||||
<key>EstateChangeInfo</key>
|
||||
<boolean>true</boolean>
|
||||
|
||||
<key>FetchInventoryDescendents</key>
|
||||
<boolean>true</boolean>
|
||||
</map>
|
||||
|
||||
<key>messageBans</key>
|
||||
<map>
|
||||
<key>trusted</key>
|
||||
<map>
|
||||
</map>
|
||||
|
||||
<key>untrusted</key>
|
||||
<map>
|
||||
</map>
|
||||
</map>
|
||||
|
||||
<key>maxQueuedEvents</key>
|
||||
<integer>100</integer>
|
||||
</map>
|
||||
</llsd>
|
||||
41
pyogp/lib/base/message/message_dict.py
Normal file
41
pyogp/lib/base/message/message_dict.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from indra.base import llsd
|
||||
|
||||
class MessageDictionary(object):
|
||||
def __init__(self, message_details):
|
||||
if message_details == None:
|
||||
raise Exception('Details file null')
|
||||
#all the details of the file
|
||||
self.message_details = {}
|
||||
#only concerning messages
|
||||
self.message_dict = {}
|
||||
|
||||
self.buildDictionary(message_details)
|
||||
|
||||
def buildDictionary(self, message_details):
|
||||
self.message_details = llsd.parse(message_details)
|
||||
message_dict = self.message_details['messages']
|
||||
for message in message_dict:
|
||||
self.message_dict[message] = message_dict[message]
|
||||
|
||||
def get_message(self, message_name):
|
||||
if message_name in self.message_dict:
|
||||
return self.message_dict[message_name]
|
||||
|
||||
return None
|
||||
|
||||
def get_message_flavor(self, message_name):
|
||||
message = self.get_message(message_name)
|
||||
if message == None:
|
||||
return None
|
||||
|
||||
return message['flavor']
|
||||
|
||||
def get_trusted_sender(self, message_name):
|
||||
message = self.get_message(message_name)
|
||||
if message == None:
|
||||
return None
|
||||
|
||||
return message['trusted-sender']
|
||||
|
||||
def __getitem__(self, i):
|
||||
return self.get_message(i)
|
||||
@@ -1,15 +1,19 @@
|
||||
from zope.component import getGlobalSiteManager
|
||||
gsm = getGlobalSiteManager()
|
||||
|
||||
from pyogp.lib.base.data import msg_tmpl
|
||||
from pyogp.lib.base.data import msg_tmpl, msg_details
|
||||
from pyogp.lib.base.message.message_llsd_builder import LLSDMessageBuilder
|
||||
from pyogp.lib.base.message.message_template_parser import MessageTemplateParser
|
||||
from pyogp.lib.base.message.message_template_builder import MessageTemplateBuilder
|
||||
from pyogp.lib.base.message.message_template_reader import MessageTemplateReader
|
||||
from pyogp.lib.base.message.message_template_dict import TemplateDictionary
|
||||
from pyogp.lib.base.message.message_dict import MessageDictionary
|
||||
|
||||
class MessageSystem(object):
|
||||
def __init__():
|
||||
def __init__(self):
|
||||
#holds the details of the message, or how the messages should be sent,
|
||||
#built, and read
|
||||
self.message_details = None
|
||||
self.builder = None
|
||||
self.reader = None
|
||||
self.circuit_info = None
|
||||
@@ -18,15 +22,16 @@ class MessageSystem(object):
|
||||
self.llsd_builder = LLSDMessageBuilder()
|
||||
#self.llsd_reader = LLSDMessageReader()
|
||||
|
||||
template_dict = self.load_template(msg_tmpl)
|
||||
self.template_builder = MessageTemplateBuilder(template_dict)
|
||||
self.template_reader = MessageTemplateReader(template_dict)
|
||||
self.message_dict, template_dict = self.load_template(msg_tmpl, msg_details)
|
||||
self.template_builder = MessageTemplateBuilder(template_dict)
|
||||
self.template_reader = MessageTemplateReader(template_dict)
|
||||
|
||||
def load_template(self, template_file):
|
||||
def load_template(self, template_file, details_file):
|
||||
#use the parser to load the message_template.msg message templates
|
||||
parser = MessageTemplateParser(msg_tmpl)
|
||||
template_list = parser.message_templates
|
||||
return TemplateDictionary(self.template_list)
|
||||
|
||||
return MessageDictionary(details_file), TemplateDictionary(template_list)
|
||||
|
||||
def receive_check(self):
|
||||
#determine if we have any messages that can be received through UDP
|
||||
|
||||
24
pyogp/lib/base/tests/test_message_system.py
Normal file
24
pyogp/lib/base/tests/test_message_system.py
Normal file
@@ -0,0 +1,24 @@
|
||||
#standard libraries
|
||||
import unittest, doctest
|
||||
import pprint
|
||||
|
||||
#local libraries
|
||||
from pyogp.lib.base.message.message_system import MessageSystem
|
||||
|
||||
class TestMessageSystem(unittest.TestCase):
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def setUp(self):
|
||||
self.message_system = MessageSystem()
|
||||
|
||||
def test_init(self):
|
||||
assert self.message_system.message_dict.get_message_flavor('UseCircuitCode') \
|
||||
== 'template', "Parsing message.xml failed"
|
||||
|
||||
def test_suite():
|
||||
from unittest import TestSuite, makeSuite
|
||||
suite = TestSuite()
|
||||
suite.addTest(makeSuite(TestMessageSystem))
|
||||
return suite
|
||||
Reference in New Issue
Block a user