message system reading from message.xml for message flavors

This commit is contained in:
locklainn.linden
2008-08-01 13:50:11 +00:00
committed by Salad Dais
parent 4b5a1fdc1b
commit 6af0cdc8e6
5 changed files with 639 additions and 8 deletions

View File

@@ -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')

View 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>

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

View File

@@ -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

View 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