summaryrefslogtreecommitdiffstats
path: root/python_modules/demarshal.py
Commit message (Collapse)AuthorAgeFilesLines
* Remove codegenMarc-André Lureau2016-03-101-1274/+0
| | | | | | | | Codegen generates code specific to spice-common submodule. It's not meant as a generic protocol header or specification. See discussion and commits about spice-common codegen re-import. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
* protocol: learn to describe fd passing in messagesMarc-Andre Lureau2016-01-141-0/+4
| | | | | | | | | | | | | | | | | Add a new type, "unix_fd", used to describe file descriptor sharing via socket ancillary data (these messages are local only). The marshaller/demarshaller can't serialize this in memory (consume_fd implementation is empty), so it is the responsability of the marshaller user to handle sending and receiving the handles, which are appended at the end of the message with an extra stream byte (because some Unix requires sending at least a byte with ancillary data). Even if there is no fd to send (or if the fd is invalid etc), the receiver side expects an extra byte anyway. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Acked-by: Frediano Ziglio <fziglio@redhat.com>
* Make spice_codegen.py work on both Python 2 and 3Alexander Wauck2015-04-011-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | This is a new version of my previous patch that does not include six.py. It's still kind of big, but at least it's all spice-common changes now. There are also a few other fixes that Christophe brought to my attention. Note that six now needs to be installed on the system (python-six on Fedora and Debian, six on PyPI). This *should* be enough to make spice_codegen.py work on both Python 2 and Python 3. The major changes are as follows: * cStringIO.StringIO -> io.StringIO * str vs. unicode updates (io.StringIO doesn't like str) * integer division * foo.has_key(bar) -> bar in foo * import internal_thing -> from . import internal_thing * removed from __future__ import with_statement (might break Python 2.5?) * changed some lambdas to list comprehensions (done by 2to3) * cast some_dict.keys() to list where needed (e.g. for sorting) * use normal type names with isinstance instead of types.WhateverType Signed-off-by: Alexander Wauck <awauck@codeweavers.com>
* python: Fix -Wunused-parameterFabiano Fidêncio2014-09-181-6/+6
| | | | | | | | Although the most part of the parameters marked as unused are actually being used for a few functions, a bunch of warnings can be seen when the code is compiled with "-Wall -Wextra". As adding the unused attribute means that the variable/parameter is meant to be *possibly* unused, we're safe adding it in the generated code, even for used variables/parameters.
* demarshal: prefix variable name with parent namesMarc-André Lureau2014-05-151-17/+30
| | | | | | Avoid naming clash if parent structures have the same name https://bugzilla.redhat.com/show_bug.cgi?id=1021995
* marshaller: Use #include <> for headers in $srcdir/commonChristophe Fergeau2014-04-161-1/+1
| | | | | | | Since the (de)marshallers are now generated in $builddir and not in $srcdir, when these generated files include a file located in $srcdir/common, the compiler will find them thanks to a -I directive, so it makes more sense to use <> rather than "" when including them.
* Use #include "common/..." in (de)marshallersChristophe Fergeau2014-04-161-1/+1
| | | | | | | | Now that they are created in $builddir, their includes will need to refer to files in $srcdir, which can be different. It's cleaner to add -I $(top_srcdir)/spice-common/ to modules using spice-common rather than having -I $(top_srcdir)/spice-common/common which would could create header collisions.
* demarshall: add missing parens in BE read_xxx functionsChristophe Fergeau2012-04-061-1/+1
| | | | The missing parens causes build to fail on big-endian machines
* spice_codegen: Always write a channels entry for an ifdef-ed channelHans de Goede2012-03-201-0/+5
| | | | | | | | | | | | | | | | | Before this patch, if a channel is defined conditionally in spice.proto (because it depends on external headers like the smartcard channel), spice_codegen would write an entry to the channels array in spice_get_*_channel_parser which would only take up a place in the array if the ifdef condition is true, thus moving up all other intializers one place when it is not true. This was causing issues (crashes) when building spice-gtk with the combination of usbredir support enabled and smartcard support disabled. This patch fixes this by adding #else { NULL, 0 }, to the generated code. Thanks to coolper chen <lixin.chen@saicocch.com> for reporting this! Signed-off-by: Hans de Goede <hdegoede@redhat.com>
* handle @ifdef on messages and channelsChristophe Fergeau2012-03-201-4/+18
|
* demarshal: fixed-size array are missing __nelementsMarc-André Lureau2012-03-201-1/+1
| | | | | | A message with a fixed-size array, such as uint8 uuid[16] will generate an invalid code, missing the __nelements variable. Make sure that variable is defined.
* python: remove c-ism trailing ;Marc-André Lureau2012-03-201-16/+16
|
* demarshaller/marshaller fix gcc 4.6.0Alon Levy2012-03-201-6/+16
| | | | | | | | | | python_modules/demarshal.py and marshal.py fixes for gcc 4.6.0 warning about set but unused variables. The fixes disable creating of variables mem_size when they are not used (demarshall) and declaring a src variable when the message doesn't use it (marshal). You need to touch *.proto after applying this (should add a Makefile dependency).
* codegen: avoid creating out if not used (fix gcc 4.6.0 warning)Alon Levy2012-03-201-3/+5
|
* support python 2.5.4+ for marshaller/demarshallersAlon Levy2012-03-201-0/+1
| | | | | Patch adds a "from __future__" import that doesn't affect newer python's but allows python 2.5.4 to run the code (tested under scratchbox, n900 build environment)
* demarshaller: Fix palette marshallingAlexander Larsson2012-03-201-14/+32
| | | | | | | It turns out that using base + sizeof(struct) is not a good way to access an array at the end of a struct. For SpicePalette sizeof is 16, but offset of ents is 12. Using this calculation in the demarshaller breaks things badly, so now we use the actual array member.
* Fix uninitialized variable warningsAlexander Larsson2012-03-201-1/+1
|
* Don't send CursorHeader if cursor_flags is NONEAlexander Larsson2012-03-201-1/+4
|
* codegen: Allow @to_ptr to make inline structs demarshal as pointersAlexander Larsson2012-03-201-6/+26
|
* codegen: Various cleanupsAlexander Larsson2012-03-201-13/+21
| | | | | | | | | | | | Remove all uses of @end in the marshaller, instead just using the C struct array-at-end-of-struct. To make this work we also remove all use of @end for switches (making them C unions). We drop the zero member of the notify message so that we can avoid this use of @end for a primitive in the marshaller (plus its useless to send over the wire). We change the offsets and stuff in the migration messages to real pointers.
* Fix inclusion of common files, no need for common/ partAlexander Larsson2012-03-201-1/+1
|
* codegen: No SPICE_ADDRESS types left, drop @c_ptrAlexander Larsson2012-03-201-17/+7
|
* Properly parse QXLImage to the new-world SpiceImageGerd Hoffmann2012-03-201-2/+2
| | | | | SpiceImage now replaces RedImage and has all image types in it. All image data are now chunked (and as such not copied when demarshalling).
* codegen: support @chunk on non-pointer arraysAlexander Larsson2012-03-201-3/+27
| | | | This is similar to @as_ptr, but generates a single chunk of data.
* Add support for @chunkAlexander Larsson2012-03-201-2/+18
|
* Convert SpicePath.segments to a pointer arrayAlexander Larsson2012-03-201-23/+28
|
* Handle extra size for switch and array the right wayAlexander Larsson2012-03-201-23/+20
| | | | | | Even for is_extra_size() we should calculate the mem_size for arrays, its just that the parent type (in this case switch) should request mem_size if the type is_extra_size.
* marshaller: Add some docs describing the types of sizesAlexander Larsson2012-03-201-0/+29
|
* marshaller: Make @nonnull a propagated attributeAlexander Larsson2012-03-201-4/+1
| | | | This cleans up some stuff
* marshaller: Make @c_ptr a propagated attributeAlexander Larsson2012-03-201-16/+17
| | | | This simplifies some code
* marshaller: Add generic way to handle propagating attributesAlexander Larsson2012-03-201-5/+5
| | | | Also switches @ptr_array to use this
* Properly parse and marshall SpiceStringGerd Hoffmann2012-03-201-7/+37
|
* Fix 32bit failure in demarshallerAlexander Larsson2012-03-201-2/+2
| | | | Due to a typo we always read offsets as pointers, never as SPICE_ADDRESS.
* Simplify SpiceLineAttr by removing unsed stuffAlexander Larsson2012-03-201-4/+7
| | | | Also in new protocol don't send style data if not needed.
* Store SpicePath segment count rather than sizeAlexander Larsson2012-03-201-2/+14
| | | | | | | | | | | | | | | | | | | Internally and in the network protocol (for the new version) we now store the actual number of segments rather than the size of the full segments array in bytes. This change consists of multiple changes to handle this: * Make the qxl parser calculate num_segments * Make the canvas stroke code handle the new SpicePath layout. * Fix up is_equal_path in red_worker.c for the new layout * replace multiple calls to spice_marshall_PathSegment with a single spice_marshall_Path call * Make the byte_size() array size handling do the conversion from network size to number of elements when marshalling/demarshalling. * Update the current spice protocol to send the segment count rather than the size * Update the old spice protocol to use the new byte_size functionallity to calculate the size sent and the number of elements recieved
* demarshaller: Support @c_ptr attributes for pointersAlexander Larsson2012-03-201-7/+16
| | | | | | A @c_ptr pointer is stored in memory as a real pointer rather than a SPICE_ADDRESS. This is a temporary thing that will be removed again when all SPICE_ADDRESSes have been converted to real pointer.
* demarshaller: Don't parse @zero membersAlexander Larsson2012-03-201-1/+4
| | | | | | These just write zeros at the right place in the network protocol typically for old back-compat things. We don't want to read these back in.
* Make pointers 32bit in new protocol formatAlexander Larsson2012-03-201-9/+6
|
* Add support for @virtual markup in spice protocolAlexander Larsson2012-03-201-0/+7
| | | | | | | This means the member is not sent on the network at all. Instead its initialized to the attribute argument when demarshalled. This is useful for backwards compatibility support.
* Make internal generated marshaller functions staticAlexander Larsson2012-03-201-3/+3
|
* Support extra prefix in code generatorsAlexander Larsson2012-03-201-5/+5
| | | | | This is require when we add a new spice.proto for the old (major 1) protocol description.
* Add destructor for demarshalled messagesAlexander Larsson2012-03-201-7/+18
| | | | | | | This is required because we don't want to free messages that just refer to the unparsed message (like SpiceMsgData). Also, in the future we might need it for more complex demarshalling.
* Support @as_ptr in demarshaller to avoid copying data unnecessaryAlexander Larsson2012-03-201-1/+13
|
* Initial import of spice protocol description and demarshall generatorAlexander Larsson2012-03-201-0/+1033
The "spice.proto" file describes in detail the networking prototcol that spice uses and spice_codegen.py can parse this and generate demarshallers for such network messages.