static void Main(string[] args)
        {
            NetworkUtils.NetworkUtils.SayHello();
            TcpClient     client        = new TcpClient("127.0.0.1", 1330);
            NetworkStream networkStream = client.GetStream();

            bool done = false;

            Console.WriteLine("Type 'bye' to end connection");
            while (!done)
            {
                Console.Write("Enter a message to send to server: ");
                string message = Console.ReadLine();

#if USE_DELIMETER
                // Gebruik van optie 1:
                ClientServerUtil.WriteTextMessage(networkStream, message);
#else
                // Gebruik van optie 2:
                ClientServerUtil.SendMessage(networkStream, message);
#endif

                string response = ClientServerUtil.ReadTextMessage(networkStream);

                Console.WriteLine("Response: " + response);
                done = response.Equals("BYE");
            }

            client.Close();
            networkStream.Close();
        }
        static void HandleClientThread(object obj)
        {
            TcpClient client = obj as TcpClient;

            if (client == null)
            {
                return;
            }
            NetworkStream networkStream = client.GetStream();

            bool done = false;

            while (!done)
            {
#if USE_DELIMITER
                // Package protocol optie 1: een \n geeft einde van de boodschap aan.
                string received = ClientServerUtil.ReadTextMessage(networkStream);
#else
                // Optie 2: geef de lengte mee van de boodschap - uitwerking voor het practicum!
                string received = ClientServerUtil.ReadMessage(networkStream);
#endif

                Console.WriteLine("Received: {0}", received);
                done = received.Equals("bye");
                ClientServerUtil.WriteTextMessage(networkStream, done ? "BYE" : "OK");
            }
            client.Close();
            Console.WriteLine("Connection closed");
            networkStream.Close();
            Console.WriteLine("Networkstream closed");
        }
Beispiel #3
0
        /* ------------------------------------------ Server-Methoden ----------------------------------------------*/

        public void PopulateGrid(int simulationFactoryId)
        {
            ClientServerUtil csu = ClientServerUtil.getInstance();

            Sim.productMap productMap = csu.GetProducts(simulationFactoryId);

            if (productMap != null)
            {
                foreach (Sim.productMapEntry entry in productMap.productMap1.AsEnumerable())
                {
                    Sim.position  position = entry.key;
                    Sim.product[] products = entry.value;

                    for (int i = 0; i < products.Count(); i++)
                    {
                        Point3D point   = TransformServerToClientCoords(ChangeProductPoints(i, position));
                        Product product = GetProductByID(products[i].id);
                        if (product == null)
                        {
                            product = CreateProduct(products[i].id, point, point, products[i].name);
                            PlaceProduct(product);
                        }
                        else
                        {
                            product.position = point;
                            product.UpdateModelProperties(xOffset, yOffset);
                        }
                    }
                }
            }
        }
Beispiel #4
0
        public void CreateItemOnServer(Point3D p, int classID)
        {
            ClientServerUtil csu = ClientServerUtil.getInstance();
            int x = (int)TransformClientToServerCoords(p).X;
            int y = (int)TransformClientToServerCoords(p).Y;

            csu.CreateItem(classID, x, y, FactoryServiceReference.direction.NORTH);
        }
Beispiel #5
0
        public void RemoveAllItemsOnServer()
        {
            ClientServerUtil csu = ClientServerUtil.getInstance();

            if (modelList.Count > 0)
            {
                csu.DeleteItems(modelList.Select(item => item.instanceId).ToArray());
            }
        }
Beispiel #6
0
        public void RemoveSelectedItemsOnServer()
        {
            ClientServerUtil csu = ClientServerUtil.getInstance();

            if (selectedItems.Count > 0)
            {
                csu.DeleteItems(selectedItems.Select(item => item.instanceId).ToArray());
            }
        }
        /** Der DropEventHandler platziert ein GridItem auf dem Canvas **/
        // TODO: Refactoring.. viel zu lang die Methode
        protected override void OnDrop(DragEventArgs e)
        {
            Console.WriteLine("####### OnDrop-2D ######");
            base.OnDrop(e);
            Image imgObj  = e.Data.GetData("GRID_ITEM") as Image;
            int   classID = int.Parse(e.Data.GetData("CLASS_ID").ToString());

            BitmapImage contentImg = imgObj.Source as BitmapImage;

            #if DEBUG
            Console.WriteLine("GridCanvas.OnDrop: DragEventArgs.GetData('GRID_ITEM') lieferte " + contentImg.ToString());
            #endif

            if (contentImg != null)
            {
                GridItem newItem = null;

                if (contentImg != null)
                {
                    newItem = getGridItem(contentImg);

                    #if DEBUG
                    Console.WriteLine("GridCanvas.OnDrop: neues GridItem erstellt mit Contentelement " + newItem.Content.ToString());
                    #endif

                    Point position = e.GetPosition(this);

                    //TODO: Item darf nur hinzugefügt werden, wenn die Position frei ist..
                    double newX = Math.Max(0, position.X - newItem.Width / 2);
                    double newY = Math.Max(0, position.Y - newItem.Height / 2);

                    Point      p1    = new Point(newX, newY);
                    Point      p     = this.CalcGridPos(p1);
                    Coordinate coord = this.CalcGridCoord(p);

                    #if DEBUG
                    Console.WriteLine("GridCanvas.OnDrop: neue Maschine auf dem Server erstellen lassen mit X = " + coord.Item1 + " und Y = " + coord.Item2);
                    #endif

                    // GO server..
                    newItem.instanceId = ClientServerUtil.getInstance().createItem(classID, coord.Item1, coord.Item2, FactoryServiceReference.direction.NORTH);
                    if (newItem.instanceId != "")
                    {
                        //placeItem(newItem, coord.Item1, coord.Item2);
                        this.DeselectAll();
                        newItem.IsSelected = true;
                    }
                    else
                    {
                        this.DeselectAll();
                    }
                }

                e.Handled = true;
            }
        }
        /** Entfernt alle selektierten Items vom Grid **/
        public void removeSelected()
        {
            List <GridItem> sel = new List <GridItem>();

            foreach (GridItem item in SelectedItems)
            {
                sel.Add(item);
            }

            foreach (GridItem item in sel)
            {
                ClientServerUtil.getInstance().deleteItem(item.instanceId);
            }
        }
Beispiel #9
0
        public void RotateItemsOnServer(string direction)
        {
            ClientServerUtil csu = ClientServerUtil.getInstance();

            if (selectedItems.Count > 0)
            {
                if (direction == "left")
                {
                    csu.RotateItemsLeft(selectedItems.Select(item => item.instanceId).ToArray());
                }
                else // (direction == "right")
                {
                    csu.RotateItemsRight(selectedItems.Select(item => item.instanceId).ToArray());
                }
            }
        }
Beispiel #10
0
        public void RotateItem(string itemId, string dir)
        {
            ClientServerUtil csu = ClientServerUtil.getInstance();
            position         p   = csu.GetPosition(itemId);

            if (p != null)
            {
                GridItem3D item = GetItemByID(itemId);

                if (dir == "right")
                {
                    item.rotateRight();
                }
                else
                {
                    item.rotateLeft();
                }
                UpdateModel();
            }
        }
        public MainWindow()
        {
            InitializeComponent();

            //ConsoleManager.Show();

            icons = LoadIconSet();
            this.Focusable = false;

            Width.Text = lines.Length.ToString();
            Height.Text = lines.Width.ToString();

            grid = new GridModel(lines.Width, lines.Length, icons);
            Loaded += new RoutedEventHandler(OnGridLoaded);

            SimulationSpeedTextBox.Text = "" + 3;
            ConsumerEmptyTextBox.Text = "" + 0;

            DataContext = grid;
            view.ClipToBounds = false;

            CreateToolbox();
            Hide3DGrid();

            optionWindow = new OptionsWindow();
            optionWindow.configEvent += new EventHandler(optionWindow_configEvent);

            pluginWindow = new PluginWindow();
            pluginWindow.InitializeComboBox(icons.GetAvailablePlugins());
            pluginWindow.pluginEvent += new EventHandler(pluginWindow_pluginEvent);

            chatWindow = new ChatWindow();

            csu = ClientServerUtil.getInstance();
            csu.ClientServerEvent += new ClientServerEventHandler(csu_clientServerEvent);

            FactoryControll.IsEnabled = false;
            LoggedInControll.IsEnabled = false;
        }
Beispiel #12
0
        /** Der MouseDrag Eventhandler für das GridThumb **/
        private void GridThumb_DragDelta(object sender, DragDeltaEventArgs e)
        {
            Console.WriteLine("GridThumb");
            GridItem item = this.DataContext as GridItem;

            if (item != null)
            {
                GridCanvas GridC = VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(VisualTreeHelper.GetParent(this))) as GridCanvas;
                Point      p     = new Point(GridCanvas.GetLeft(item) + e.HorizontalChange, GridCanvas.GetTop(item) + e.VerticalChange);
                Coordinate coord = null;
                if (p != null) // wenn objekt gelöscht wurde, wärend wir verschieben ist p == null
                {
                    coord = GridC.CalcGridCoord(p);
                    // GO server..
                    if (coord != null)
                    {
                        ClientServerUtil.getInstance().moveItem(item.instanceId, coord.Item1, coord.Item2);
                        #if DEBUG
                        Console.WriteLine("\nObject Moved:");
                        #endif
                    }
                }
            }
        }
 public string GetScriptFromServer()
 {
     return(ClientServerUtil.getInstance().GetMachineScript(this.instanceId));
 }
 public void ScriptObjectOnServer(string script)
 {
     ClientServerUtil.getInstance().ScriptMachine(this.instanceId, script);
 }
 /* ----------------------------- Server - Methods ------------------------------------ */
 public void MoveItemOnServer(Point3D serverP)
 {
     ClientServerUtil.getInstance().MoveItem(this.instanceId, (int)serverP.X, (int)serverP.Y);
 }