summaryrefslogtreecommitdiff
path: root/libpurple/protocols/msn/p2p.c
diff options
context:
space:
mode:
Diffstat (limited to 'libpurple/protocols/msn/p2p.c')
-rw-r--r--libpurple/protocols/msn/p2p.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/libpurple/protocols/msn/p2p.c b/libpurple/protocols/msn/p2p.c
new file mode 100644
index 0000000000..20caeb5469
--- /dev/null
+++ b/libpurple/protocols/msn/p2p.c
@@ -0,0 +1,76 @@
+#include "internal.h"
+
+#include "p2p.h"
+
+MsnP2PHeader *
+msn_p2p_header_from_wire(MsnP2PHeader *wire)
+{
+ MsnP2PHeader *header;
+
+ header = g_new(MsnP2PHeader, 1);
+
+ header->session_id = GUINT32_FROM_LE(wire->session_id);
+ header->id = GUINT32_FROM_LE(wire->id);
+ header->offset = GUINT64_FROM_LE(wire->offset);
+ header->total_size = GUINT64_FROM_LE(wire->total_size);
+ header->length = GUINT32_FROM_LE(wire->length);
+ header->flags = GUINT32_FROM_LE(wire->flags);
+ header->ack_id = GUINT32_FROM_LE(wire->ack_id);
+ header->ack_sub_id = GUINT32_FROM_LE(wire->ack_sub_id);
+ header->ack_size = GUINT64_FROM_LE(wire->ack_size);
+
+ return header;
+}
+
+MsnP2PHeader *
+msn_p2p_header_to_wire(MsnP2PHeader *header)
+{
+ MsnP2PHeader *wire;
+
+ wire = g_new(MsnP2PHeader, 1);
+
+ wire->session_id = GUINT32_TO_LE(header->session_id);
+ wire->id = GUINT32_TO_LE(header->id);
+ wire->offset = GUINT64_TO_LE(header->offset);
+ wire->total_size = GUINT64_TO_LE(header->total_size);
+ wire->length = GUINT32_TO_LE(header->length);
+ wire->flags = GUINT32_TO_LE(header->flags);
+ wire->ack_id = GUINT32_TO_LE(header->ack_id);
+ wire->ack_sub_id = GUINT32_TO_LE(header->ack_sub_id);
+ wire->ack_size = GUINT64_TO_LE(header->ack_size);
+
+ return wire;
+
+}
+
+MsnP2PFooter *
+msn_p2p_footer_from_wire(MsnP2PFooter *wire)
+{
+ MsnP2PFooter *footer;
+
+ footer = g_new(MsnP2PFooter, 1);
+
+ footer->value = GUINT32_FROM_BE(wire->value);
+
+ return footer;
+}
+
+MsnP2PFooter *
+msn_p2p_footer_to_wire(MsnP2PFooter *footer)
+{
+ MsnP2PFooter *wire;
+
+ wire = g_new(MsnP2PFooter, 1);
+
+ wire->value = GUINT32_TO_BE(footer->value);
+
+ return wire;
+}
+
+gboolean
+msn_p2p_msg_is_data(const MsnP2PHeaderFlag flags)
+{
+ return (flags == P2P_MSN_OBJ_DATA ||
+ flags == (P2P_WML2009_COMP | P2P_MSN_OBJ_DATA) ||
+ flags == P2P_FILE_DATA);
+}