Project

General

Profile

ODF » History » Revision 9

Revision 8 (Adrian Georgescu, 11/04/2014 01:16 PM) → Revision 9/21 (Adrian Georgescu, 11/04/2014 01:20 PM)

h1. ODF integration 

 This documents layout the changes required to support a new type of stream for collaborative editing. 

 h2. SDK changes 

 h3. Signaling 

 There is no need to alter anything related to signalling. 

 h3. Media 

 h4. Variant 1 

 This by far the simplest way. Establish a standard chat stream and add _'application/odf+xml'_ to the lists of supported payloads. Then add Add an attribute to the MSRP stream to signal the support for this feature: 

 <pre> 
 class BlinkChatStream(ChatStream): 
     def _create_local_media(self, uri_path): 
         local_media = super(BlinkChatStream, self)._create_local_media(uri_path) 
         local_media.attributes.append(SDPAttribute('features', 'history-control icon otf-editor')) 
         return local_media 
 </pre> 

 After session negotiation, the clients can invoke their corespondent GUI elements related to the collaborative editing. 

 This will work with any MSRP implementation, the data will piggy-back on top of an existent stream which makes development of a other end-points easy as no internal mechanism of session initiation must be done. 

 



 h4. Variant 2 

 Create a A new MSRP media type based on MSRP protocol can be created similar to file-transfer or screen sharing. See SIP SIMPLE Client SDK MSRP streams definition: 

 <pre> 
 sipsimple/streams/msrp.py 
 </pre> 

 Example of a new type of stream 

 <pre> 
 class ODFStream(MSRPStreamBase): 
     type = 'odf' 

     media_type = 'odf' 
     accept_types = ['application/odf+xml'] 
     accept_wrapped_types = ['*'] 
 </pre> 

 Once established, the MSRP stream can cary back and forth payloads of the types specified in the stream definition. Is up to the end-points to handle the actual payloads and match various files shared through this mechanism over the same session. The SIP session id can be used to group together various flows within the same stream. 

 This mechanism will require similar changes in other clients that wish to implement this feature. 

 


 h3. Presence 

 Optionally, the The end-points supporting this feature can will advertise this capability by publishing it using the SIP SIMPLE Presence payload. Presence. For this, this the end-point capabilities must be extended to support off. 

 <pre> 
 sipsimple/payloads/caps.py 
 </pre> 

 h2. GUI changes 

 The GUI must handle sessions for incoming and outgoing media stream defined above by creating its own controller that it is invoked either when negotiating the session, when a proper payload arrives over the chat channel or when user clicks in the GUI. controller.