Ejemplo n.º 1
0
        public OptionsForm()
        {
            bone_server = IPCConnection.ClientConnect();
            InitializeComponent();
            writeAvailableDrivesInCombo();

            // Look into registry for autostart and set check box
            RegistryKey registryKey = Registry.CurrentUser.OpenSubKey
                                          ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

            if (registryKey.GetValue("FiSSH") == null)
            {
                checkBox_startup.Checked = false;
            }
            else
            {
                checkBox_startup.Checked = true;
            }

            checkBox3.Checked      = bone_server.IsReconnectAfterWakeUpSet();
            Loglevel.SelectedIndex = Loglevel.Items.IndexOf(bone_server.getLogLevel());

            char VirtualDriveLetter = bone_server.GetVirtualDriveLetter();

            virtualdriveletter.Items.Add(VirtualDriveLetter + ":");
            virtualdriveletter.SelectedIndex = virtualdriveletter.Items.IndexOf(VirtualDriveLetter + ":");
        }
Ejemplo n.º 2
0
        static void Main(String[] args)
        {
            LoadingForm.ShowSplashScreen();
            //if argument for no gui start is given, set this false
            bool StartGUI = true;

            IServiceFisshBone bone_server = IPCConnection.ClientConnect();

            //start ServiceHost if it is not running
            try
            {
                bone_server.listAll();
            }
            catch
            {
                ProcessStartInfo startEXE = new ProcessStartInfo();
                string           path     = Application.ExecutablePath;
                path = path.Substring(0, path.LastIndexOf('\\') + 1);
                startEXE.FileName         = path + "FiSSHBone.exe";
                startEXE.WorkingDirectory = "";
                startEXE.WindowStyle      = System.Diagnostics.ProcessWindowStyle.Hidden;
                startEXE.ErrorDialog      = true;
                if (Process.Start(startEXE) == null)
                {
                    Environment.Exit(1);
                }
            }

            // Loop: wait until IPC server is online
            for (int i = 0; i < 5; i++)
            {
                try
                {
                    bone_server.listAll();
                }
                catch
                {
                    System.Threading.Thread.Sleep(100);
                }
            }


            if (StartGUI)
            {
                LoadingForm.CloseForm();
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                // Original startup
                //Application.Run(new FiSSHForm());

                // "Only one instance" startup
                var app = new ApplicationManager();
                app.Run(args);
            }
        }
Ejemplo n.º 3
0
        public static void Main()
        {
            {
                SimpleMind.SimpleMind Log         = new SimpleMind.SimpleMind();
                ServiceHost           bone_server = IPCConnection.ServerConnect();
                ServiceFisshBone.Init();

                WaitHandler.Wait();
                bone_server.Close();
                Log.writeLog(SimpleMind.Loglevel.Debug, "FiSSHBoneMain", "FiSSHBone exit.");
            }
        }
Ejemplo n.º 4
0
    public void MakeNewConnection(GameState state)
    {
        if (m_connection != null)
        {
            m_connection.Kill();
        }

        m_gameState  = state;
        m_connection = new IPCConnection();
        m_connection.Connect(Application.streamingAssetsPath + "/" + c_processPath);

        StartCoroutine(co_mainLoop());
    }
Ejemplo n.º 5
0
        /// init methods

        /**
         * This method is called by other methods first.
         * It checks if there is already a connection to the IPC-Server.
         * If there is not it will be made.
         */
        private static void Init()
        {
            if (bone_server == null)
            {
                bone_server = IPCConnection.ClientConnect();
            }

            if (all_data == null)
            {
                all_data = bone_server.listAll();
            }

            return;
        }
Ejemplo n.º 6
0
    IEnumerator co_mainLoop()
    {
        m_state = State.Ready;

        IPCConnection.Message message = null;

        while (m_state != State.GameOver)               // 게임오버 스테이트에 도달할 때까지 계속 반복
        {
            // 1. solver index 입력

            m_requestedInput = InputType.SolverIndex;                           // solver index를 골라야함

            while ((message = ProcessMessage()) == null)                        // 유의미한 메세지 리턴받을 때까지 기다린다.
            {
                yield return(null);
            }

            if (m_state == State.GameOver)                                                      // 게임 종료시 루프 빠져나오기
            {
                break;
            }


            if (message.header == IPCConnection.Message.Header.Await)                   // 입력 기다리는 경우 - solver index임!
            {
                //Debug.Log("Solver index await");
                m_state        = State.SelectSolver;
                m_waitForInput = true;

                //Debug.Log("waiting for input : " + m_requestedInput);
            }

            while (m_waitForInput)                                                                              // 입력 해결될 때까지 기다린다.
            {
                yield return(null);
            }



            // 2. SolverStart 기다리기

            while ((message = ProcessMessage()) == null)                        // 유의미한 메세지 리턴받을 때까지 기다린다.
            {
                yield return(null);
            }

            if (m_state == State.GameOver)                                                      // 게임 종료시 루프 빠져나오기
            {
                break;
            }

            if (m_state != State.WaitingSolver)                                                 // WaitingSolver 상태가 아닌 경우엔 뭔가 잘못된 것임
            {
                Debug.LogErrorFormat("wrong state {0} - must be WaitingSolver", m_state);
                m_state = State.GameOver;
                break;
            }

            // 3. Solver answer 혹은 유저입력

            m_requestedInput = InputType.MovePosition;

            while ((message = ProcessMessage()) == null)                        // 유의미한 메세지 리턴받을 때까지 기다린다.
            {
                yield return(null);
            }

            if (m_state == State.GameOver)                                                      // 게임 종료시 루프 빠져나오기
            {
                break;
            }

            if (message.header == IPCConnection.Message.Header.Await)                   // 입력 기다리는 경우 - solver index임!
            {
                m_state        = State.SelectSolver;
                m_waitForInput = true;

                //Debug.Log("waiting for input : " + m_requestedInput);

                while (m_waitForInput)                                                                                  // 입력 해결될 때까지 기다린다.
                {
                    yield return(null);
                }

                while ((message = ProcessMessage()) == null)                                    // Solver Answer까지 기다린다
                {
                    yield return(null);
                }

                if (m_state == State.GameOver)                                                                  // 게임 종료시 루프 빠져나오기
                {
                    break;
                }
            }

            // 3-1. 진짜로 solver 응답 처리

            if (m_state == State.SolverAnswered)                                        // solver가 답을 준 경우 (아마 이 경우밖에 없을것임)
            {
                var paramStr = message.message.Split(new char[] { ':' }, 2)[1];
                var paramArr = paramStr.Split(new char[] { ',' }, 3);

                m_gameState.PlaceNewMove(int.Parse(paramArr[0]), int.Parse(paramArr[1]), paramArr[2]);
            }

            // 4. result 기다리기

            while ((message = ProcessMessage()) == null)                        // 유의미한 메세지 리턴받을 때까지 기다린다.
            {
                yield return(null);
            }
        }

        Debug.Log("Game Over!");

        // connection을 정리한다.

        m_connection.Kill();        // 보험...
        m_connection = null;
    }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            // Ab hier beginnt der Verbindungsteil, muss in jeden Client (Copy&Past)
            // danach kann auf die Verbindung über das Objekt "bone" zugreifen
            //Verbindungsteil-Ende

            /* ChannelFactory<IServiceFisshBone> pipeFactory =
             * new ChannelFactory<IServiceFisshBone>(
             *   new NetNamedPipeBinding(),
             *   new EndpointAddress(
             *     "net.pipe://localhost/FiSSH"));
             *
             * IServiceFisshBone bone =
             * pipeFactory.CreateChannel();
             */
            IServiceFisshBone bone = IPCConnection.ClientConnect();


            try
            {
                // Die Daten aus dem Backend holen
                List <ServerModel> liste_von_server = bone.listAll();

                // So erhält man den Server zu einem Servernamen
                ServerModel gesuchter_server = liste_von_server.Find(x => x.Name == "Ubuntu at VBox");

                // So erhält man den Ordnereintrag zu einem Ordnereintragsnamen
                FolderModel gesuchter_folder = gesuchter_server.Folders.Find(x => x.Name == "home vom user");

                // Editiern
                Console.WriteLine("Editieren ...");
                Console.ReadLine();

                // edit test
                ServerModel vbx_ubuntu = gesuchter_server;
                vbx_ubuntu.Name += " editiert";
                vbx_ubuntu.Port  = 1337;
                vbx_ubuntu.Notes = "hui, tolle notizen";
                bone.editServer(vbx_ubuntu);

                Console.WriteLine("Editiert.");
                Console.ReadLine();


                // edit test
                FolderModel home = gesuchter_folder;
                home.Name += " editiert";
                home.Note  = "hui, noch tollere notizen";
                bone.editFolder(gesuchter_server.ID, home);

                Console.WriteLine("Editiert.");
                Console.ReadLine();
                return;

                // So Mountet man einen Eintrag
                bone.Mount(gesuchter_server.ID, gesuchter_folder.ID);
                Console.WriteLine("Gemounted, Enter drücken um Unmounten");
                Console.ReadLine();

                // So Unmountet man einen Eintrag
                bone.UMount(gesuchter_server.ID, gesuchter_folder.ID);

                // So löscht man einen Ordner
                //bone.removeFolder(gesuchter_server.ID, gesuchter_folder.ID);

                //So löscht man einen Server
                //bone.removeServer(gesuchter_server.ID);

                Console.WriteLine("\nIm Folgenden wir alles aus dem Datenmodell angezeigt.");
                liste_von_server = bone.listAll();
                foreach (ServerModel i in liste_von_server)
                {
                    Console.WriteLine(i.ID + ": " + i.Name);

                    foreach (FolderModel j in i.Folders)
                    {
                        Console.WriteLine("    " + j.ID + ": " + j.Name);
                    }
                    Console.WriteLine();
                }
            }
            catch (FaultException <Fault> e)
            {
                Console.WriteLine(e.Detail.Message);
                Console.ReadLine();
                return;
            }

            Console.WriteLine("Enter drücken um Client zu beenden");
            Console.ReadLine();
        }