#summary P2P Application (Draft) = Introduction = We will support P2P applications in v3 * P2PObjectTransferApplication (Display picture, Emoticon etc.) * P2PFileTransferApplication (File transfer) * P2PWebCamApplication (Video chat) * P2PActivity (Games) = FooGame Application = First, design a class extends P2PApplication. Pass your App-GUID and App-ID to P2PApplicationAttribute. {{{ [P2PApplication(APP_ID, "APP-GUID")] public class FooGameApplication : P2PApplication { } }}} Register your class. {{{ P2PApplication.AddApplication(Assembly assembly); // All applications in your dll P2PApplication.AddApplication(typeof(FooGameApplication)); // One type }}} Override properties and methods. {{{ public override string InvitationContext { get { string activityUrl = AppID + ";1;FooGame"; byte[] contextData = System.Text.UnicodeEncoding.Unicode.GetBytes(activityUrl); return Convert.ToBase64String(contextData, 0, contextData.Length); } } public override bool AutoAccept { get { return true; } } public override bool ValidateInvitation(SLPMessage invitation) { return base.ValidateInvitation(invitation); } public override void HandleMessage(IMessageProcessor sender, P2PMessage p2pMessage) { // Handle p2pMessage string incomingXml = Encoding.UTF8.GetString(p2pMessage.InnerBody); // And send the data P2PDataMessage p2pData = new P2PDataMessage(); p2pData.InnerBody = data; // xml data SendMessage(p2pData); } }}} Constructors {{{ // We have received an invitation public P2PObjectTransferApplication(P2PSession session) : base(session) { SLPMessage slp = session.Invite; } // We are initializer public P2PObjectTransferApplication(Contact remote) : base(contact) { } }}}