Пример #1
0
        public void handleAddUser(object arg)
        {
            try {
                Logger.Debug("Update addUser To Memory Synchronized - Begin");
                OOBTransaction request    = (OOBTransaction)arg;
                UserFileSystem fileSystem = null;

                Group      group     = FileServerComm.getInstance().getFileServerGroup();
                OOBHandler oobhandle = FileServerComm.getInstance().getOOBHandler();

                MemoryMappedFile transferredFile = group.OOBFetch(request.transactionID);

                if (null != transferredFile)
                {
                    Logger.Debug("AddUser for OOB Fetch Success :)");
                    int index = 0;
                    fileSystem = oobhandle.deserializeFromMemoryMappedFile(transferredFile, ref index, request.fileLength) as UserFileSystem;
                    Logger.Debug("Received User is " + fileSystem.ToString());
                }
                else
                {
                    Logger.Debug("AddUser for OOB Fetch Success :(");
                }
                group.OOBDelete(request.transactionID);

                TryReleaseLock(request.initiatedSystemId, request.transactionID);
                Logger.Debug("Update addUser To Memory Synchronized - End");
            } catch (Exception e) {
                Logger.Debug("Update addUser To Memory Synchronized encountered exception " + e.ToString());
            }
        }
Пример #2
0
        void handleBootStrappingContinue(BootStrappingCheckPoint request, Group group, OOBHandler oobhandle)
        {
            Logger.Debug("handleBootStrappingContinue , Response received from " + request.nodeAddress.ToStringVerboseFormat());
            int bootStrapStatus    = SUCCESS;
            int numberOfUsersAdded = 0;

            if (null != state.selectedNode && request.nodeAddress.Equals(state.selectedNode))
            {
                Logger.Debug("handleBootStrapping Continue :)");

                state.currState = eBootStrapState.ReceivingData;
                MemoryMappedFile transferredFile = group.OOBFetch(request.fileName);

                if (transferredFile != null)
                {
                    Logger.Debug("File" + request.fileName + "request Transfer Successfull!");
                    try
                    {
                        int index = 0;
                        InMemoryFileSystem tempFileSystem = null;
                        tempFileSystem = oobhandle.deserializeFromMemoryMappedFile(transferredFile, ref index, request.dataLength) as InMemoryFileSystem;

                        List <string> users = tempFileSystem.GetInMemoryUserList();
                        numberOfUsersAdded = users.Count;

                        foreach (string user in users)
                        {
                            UserFileSystem userfilesys = tempFileSystem.GetClonedInMemoryUserFileSystem(user);
                            if (null != userfilesys)
                            {
                                fileSystem.addFSToMapSynchronized(userfilesys, user);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Debug("Exception Encountered : " + e.ToString());
                        bootStrapStatus = FAILURE;
                    }
                }
                else
                {
                    Logger.Debug("File" + request.fileName + "was Deleted!");
                    bootStrapStatus = FAILURE;
                }

                Logger.Debug("handleBootStrapping Added :)" + numberOfUsersAdded + " Users");
                group.OOBDelete(request.fileName);

                BootStrappingResponse response = null;
                response = new BootStrappingResponse(request.fileName, IsisSystem.GetMyAddress(), bootStrapStatus);

                group.P2PSend(request.nodeAddress, FileServerComm.BootStrapResponse, response);
            }
            else
            {
                Logger.Debug("handleBootStrappingContinue, Receieved from Another Node, Some Problem. Ignore this Plz :)");
            }
        }
Пример #3
0
        /*
         * Handler Function which Adds a File into Memory
         */
        public void handleAddFileToMemory(object arg)
        {
            try {
                OOBTransaction request     = (OOBTransaction)arg;
                UserFile       userfilesys = null;
                Logger.Debug("Update addFileToMemory Data Synchronized - Begin");

                Group      group     = FileServerComm.getInstance().getFileServerGroup();
                OOBHandler oobhandle = FileServerComm.getInstance().getOOBHandler();

                MemoryMappedFile transferredFile = group.OOBFetch(request.transactionID);

                if (null != transferredFile)
                {
                    Logger.Debug("getUserFileInfo OOB Fetch Success :)");
                    int index = 0;
                    userfilesys = oobhandle.deserializeFromMemoryMappedFile(transferredFile, ref index, request.fileLength) as UserFile;
                }
                else
                {
                    Logger.Debug("getUserFileInfo Failed Reason: OOB Fetch Failed:)");
                }

                if (!request.initiatedSystemId.Equals(IsisSystem.GetMyAddress()) &&
                    null != userfilesys)
                {
                    filesystem.addFileSynchronized(userfilesys.filemetadata.owner, userfilesys);
                }
                group.OOBDelete(request.transactionID);

                TryReleaseLock(request.initiatedSystemId, request.transactionID);
                Logger.Debug("Update addFileToMemory Data Synchronized - End");
            } catch (Exception e) {
                Logger.Debug("Update addFileToMemory Data Synchronized encountered an exception " + e.ToString());
            }
        }
Пример #4
0
        void handleBootStrappingContinue(BootStrappingCheckPoint request, Group group, OOBHandler oobhandle)
        {
            Logger.Debug("handleBootStrappingContinue , Response received from " + request.nodeAddress.ToStringVerboseFormat());
            int bootStrapStatus = SUCCESS;
            int numberOfUsersAdded = 0;

            if (null != state.selectedNode && request.nodeAddress.Equals (state.selectedNode)) {
                Logger.Debug ("handleBootStrapping Continue :)");

                state.currState = eBootStrapState.ReceivingData;
                MemoryMappedFile transferredFile = group.OOBFetch (request.fileName);

                if (transferredFile != null) {
                    Logger.Debug ("File" + request.fileName + "request Transfer Successfull!");
                    try
                    {
                        int index = 0;
                        InMemoryFileSystem tempFileSystem = null;
                        tempFileSystem = oobhandle.deserializeFromMemoryMappedFile(transferredFile, ref index, request.dataLength) as InMemoryFileSystem;

                        List<string> users = tempFileSystem.GetInMemoryUserList ();
                        numberOfUsersAdded = users.Count;

                        foreach(string user in users) {
                            UserFileSystem userfilesys = tempFileSystem.GetClonedInMemoryUserFileSystem (user);
                            if(null != userfilesys) {
                                fileSystem.addFSToMapSynchronized(userfilesys,user);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Debug("Exception Encountered : " + e.ToString());
                        bootStrapStatus = FAILURE;
                    }
                } else {
                    Logger.Debug ("File" + request.fileName + "was Deleted!");
                    bootStrapStatus = FAILURE;
                }

                Logger.Debug ("handleBootStrapping Added :)" + numberOfUsersAdded + " Users");
                group.OOBDelete (request.fileName);

                BootStrappingResponse response = null;
                response = new BootStrappingResponse(request.fileName, IsisSystem.GetMyAddress (), bootStrapStatus);

                group.P2PSend (request.nodeAddress, FileServerComm.BootStrapResponse, response);

            } else {
                Logger.Debug ("handleBootStrappingContinue, Receieved from Another Node, Some Problem. Ignore this Plz :)");
            }
        }