@@ -28,8 +28,12 @@ type (
2828 }
2929)
3030
31- // SyncManager manages processing of EditRequests from clients
32- type SyncManager struct {
31+ type SyncManager interface {
32+ IsItemBeingEditedRecursive (s * Section ) (err error )
33+ }
34+
35+ // DSSyncManager manages processing of EditRequests from clients
36+ type DSSyncManager struct {
3337 treeManager * TreeManager
3438 websocketConnectionManager * WebsocketConnectionManager
3539
@@ -42,16 +46,16 @@ type SyncManager struct {
4246
4347func NewSyncManager (
4448 treeManager * TreeManager ,
45- ) * SyncManager {
46- syncManager := & SyncManager {
49+ ) * DSSyncManager {
50+ syncManager := & DSSyncManager {
4751 treeManager : treeManager ,
4852 ServerShadows : make (map [* websocket.Conn ]string ),
4953 }
5054
5155 return syncManager
5256}
5357
54- func (sm * SyncManager ) IsItemBeingEditedRecursive (s * Section ) (err error ) {
58+ func (sm * DSSyncManager ) IsItemBeingEditedRecursive (s * Section ) (err error ) {
5559 for _ , doc := range * s .Documents {
5660 if sm .websocketConnectionManager .IsClientConnected (doc .ID ) {
5761 return errors .New ("a document within this section is currently being edited by another user" )
@@ -69,17 +73,17 @@ func (sm *SyncManager) IsItemBeingEditedRecursive(s *Section) (err error) {
6973}
7074
7175// sets the initial server shadow for a new client connection
72- func (sm * SyncManager ) initClient (conn * websocket.Conn , shadowContent string ) {
76+ func (sm * DSSyncManager ) initClient (conn * websocket.Conn , shadowContent string ) {
7377 sm .ServerShadows [conn ] = shadowContent
7478}
7579
7680// removes the shadow for the given client
77- func (sm * SyncManager ) removeClient (conn * websocket.Conn ) {
81+ func (sm * DSSyncManager ) removeClient (conn * websocket.Conn ) {
7882 delete (sm .ServerShadows , conn )
7983}
8084
8185// handles incoming edit requests from the client
82- func (sm * SyncManager ) handleEditRequest (client * websocket.Conn , editRequest EditRequest ) (err error ) {
86+ func (sm * DSSyncManager ) handleEditRequest (client * websocket.Conn , editRequest EditRequest ) (err error ) {
8387 documentId := editRequest .DocumentId
8488
8589 // check if the server shadow matches the client shadow before the patch has been applied
@@ -122,7 +126,7 @@ func (sm *SyncManager) handleEditRequest(client *websocket.Conn, editRequest Edi
122126}
123127
124128// send the full document text to a client
125- func (sm * SyncManager ) sendInitialTextResponse (client * websocket.Conn , document * Document ) (err error ) {
129+ func (sm * DSSyncManager ) sendInitialTextResponse (client * websocket.Conn , document * Document ) (err error ) {
126130 // set initial state in backend
127131 sm .initClient (client , document .Content )
128132
@@ -142,7 +146,7 @@ func (sm *SyncManager) sendInitialTextResponse(client *websocket.Conn, document
142146}
143147
144148// responds to a client with the changes from the server site document version
145- func (sm * SyncManager ) sendEditRequestResponse (client * websocket.Conn , documentId string ) (err error ) {
149+ func (sm * DSSyncManager ) sendEditRequestResponse (client * websocket.Conn , documentId string ) (err error ) {
146150 d := sm .treeManager .GetDocument (documentId )
147151
148152 shadow := sm .ServerShadows [client ]
@@ -177,7 +181,7 @@ func (sm *SyncManager) sendEditRequestResponse(client *websocket.Conn, documentI
177181// this will ensure the bytes are the same on all clients
178182// - the checksum string must include leading zeros
179183// - all characters are lowercase
180- func (sm * SyncManager ) calculateChecksum (text string ) string {
184+ func (sm * DSSyncManager ) calculateChecksum (text string ) string {
181185 encoder := unicode .UTF16 (unicode .LittleEndian , unicode .IgnoreBOM ).NewEncoder ()
182186 utf16 , err := encoder .String (text )
183187 if err != nil {
@@ -189,7 +193,7 @@ func (sm *SyncManager) calculateChecksum(text string) string {
189193 return strings .ToLower (checksum )
190194}
191195
192- func (sm * SyncManager ) saveCurrentDocumentContent (documentId string ) {
196+ func (sm * DSSyncManager ) saveCurrentDocumentContent (documentId string ) {
193197 sm .lock .RLock ()
194198 defer sm .lock .RUnlock ()
195199
@@ -209,7 +213,7 @@ func (sm *SyncManager) saveCurrentDocumentContent(documentId string) {
209213 log .Printf ("Document '%s' synchronized to disk successfully" , documentId )
210214}
211215
212- func (sm * SyncManager ) SetWebsocketConnectionManager (manager * WebsocketConnectionManager ) {
216+ func (sm * DSSyncManager ) SetWebsocketConnectionManager (manager * WebsocketConnectionManager ) {
213217 sm .websocketConnectionManager = manager
214218
215219 sm .websocketConnectionManager .SetOnNewClientListener (func (client * websocket.Conn , document * Document ) error {
0 commit comments