Browse Source

packet: support payload information

bboozzoo/dbus-support
Maciek Borzecki 8 years ago
parent
commit
5a373602cb
1 changed files with 40 additions and 1 deletions
  1. +40
    -1
      src/mconnect/packet.vala

+ 40
- 1
src/mconnect/packet.vala View File

@ -26,6 +26,20 @@ public errordomain PacketError {
class Packet : GLib.Object { class Packet : GLib.Object {
/**
* Payload:
* Wrapper for payload transfer information
*/
public struct Payload {
public uint64 size;
public uint port;
Payload() {
this.size = 0;
this.port = 0;
}
}
public const int PROTOCOL_VERSION = 5; public const int PROTOCOL_VERSION = 5;
public const string IDENTITY = "kdeconnect.identity"; public const string IDENTITY = "kdeconnect.identity";
@ -35,6 +49,7 @@ class Packet : GLib.Object {
public string pkt_type { get; private set; default = ""; } public string pkt_type { get; private set; default = ""; }
public int64 id { get; private set; default = 0; } public int64 id { get; private set; default = 0; }
public Json.Object body { get; private set; default = null; } public Json.Object body { get; private set; default = null; }
public Payload? payload { get; private set; default = null; }
public Packet(string type, Json.Object body, int64 id = 0) { public Packet(string type, Json.Object body, int64 id = 0) {
this.pkt_type = type; this.pkt_type = type;
@ -69,7 +84,31 @@ class Packet : GLib.Object {
vdebug("packet type: %s", type); vdebug("packet type: %s", type);
return new Packet(type, body, id);
var pkt = new Packet(type, body, id);
// ignore payload info for encrypted packets
if (type != ENCRYPTED) {
if (root_obj.has_member("payloadSize") &&
root_obj.has_member("payloadTransferInfo")) {
var size = root_obj.get_int_member("payloadSize");
var pti = root_obj.get_object_member("payloadTransferInfo");
int64 port = 0;
if (pti == null) {
warning("no payload transfer info?");
} else {
port = (int) pti.get_int_member("port");
}
if (size != 0 && port != 0) {
pkt.payload = {(uint64) size, (uint) port};
}
}
}
return pkt;
} catch (Error e) { } catch (Error e) {
message("failed to parse message: \'%s\', error: %s", message("failed to parse message: \'%s\', error: %s",
data, e.message); data, e.message);


Loading…
Cancel
Save