blob: a8a42c66d357ed1914e2c5e1fee892658c313dea [file] [log] [blame]
# Copyright (c) The PyAMF Project.
# See LICENSE.txt for details.
"""
Flex Data Management Service implementation.
This module contains the message classes used with Flex Data Management
Service.
@since: 0.1.0
"""
import pyamf
from pyamf.flex.messaging import AsyncMessage, AcknowledgeMessage, ErrorMessage
#: Namespace for C{flex.data} messages.
NAMESPACE = 'flex.data.messages'
__all__ = [
'DataMessage',
'SequencedMessage',
'PagedMessage',
'DataErrorMessage'
]
class DataMessage(AsyncMessage):
"""
I am used to transport an operation that occured on a managed object
or collection.
This class of message is transmitted between clients subscribed to a
remote destination as well as between server nodes within a cluster.
The payload of this message describes all of the relevant details of
the operation. This information is used to replicate updates and detect
conflicts.
@see: U{DataMessage on Livedocs<http://
livedocs.adobe.com/flex/201/langref/mx/data/messages/DataMessage.html>}
"""
def __init__(self):
AsyncMessage.__init__(self)
#: Provides access to the identity map which defines the
#: unique identity of the item affected by this DataMessage
#: (relevant for create/update/delete but not fill operations).
self.identity = None
#: Provides access to the operation/command of this DataMessage.
#:
#: Operations indicate how the remote destination should process
#: this message.
self.operation = None
class SequencedMessage(AcknowledgeMessage):
"""
Response to L{DataMessage} requests.
@see: U{SequencedMessage on Livedocs<http://
livedocs.adobe.com/flex/201/langref/mx/data/messages/SequencedMessage.html>}
"""
def __init__(self):
AcknowledgeMessage.__init__(self)
#: Provides access to the sequence id for this message.
#:
#: The sequence id is a unique identifier for a sequence
#: within a remote destination. This value is only unique for
#: the endpoint and destination contacted.
self.sequenceId = None
#:
self.sequenceProxies = None
#: Provides access to the sequence size for this message.
#:
#: The sequence size indicates how many items reside in the
#: remote sequence.
self.sequenceSize = None
#:
self.dataMessage = None
class PagedMessage(SequencedMessage):
"""
This messsage provides information about a partial sequence result.
@see: U{PagedMessage on Livedocs<http://
livedocs.adobe.com/flex/201/langref/mx/data/messages/PagedMessage.html>}
"""
def __init__(self):
SequencedMessage.__init__(self)
#: Provides access to the number of total pages in a sequence
#: based on the current page size.
self.pageCount = None
#: Provides access to the index of the current page in a sequence.
self.pageIndex = None
class DataErrorMessage(ErrorMessage):
"""
Special cases of ErrorMessage will be sent when a data conflict
occurs.
This message provides the conflict information in addition to
the L{ErrorMessage<pyamf.flex.messaging.ErrorMessage>} information.
@see: U{DataErrorMessage on Livedocs<http://
livedocs.adobe.com/flex/201/langref/mx/data/messages/DataErrorMessage.html>}
"""
def __init__(self):
ErrorMessage.__init__(self)
#: The client oringinated message which caused the conflict.
self.cause = None
#: An array of properties that were found to be conflicting
#: between the client and server objects.
self.propertyNames = None
#: The value that the server had for the object with the
#: conflicting properties.
self.serverObject = None
pyamf.register_package(globals(), NAMESPACE)