Exemple #1
0
 private void RaiseAfterReceiveMessage(TinctConnectReceiveArgs e)
 {
     if (AfterReceiveMessage != null)
     {
         AfterReceiveMessage(this, e);
     }
 }
Exemple #2
0
 private void RaiseConnectMessage(TinctConnectReceiveArgs e)
 {
     if (ConnectMessage != null)
     {
         ConnectMessage(this, e);
     }
 }
Exemple #3
0
        public void MapToHandlerByMessage(object sender, TinctConnectReceiveArgs args)
        {
            var RoutData = route.GetRouteData(args.ReceivedMessage);
            var controllerName = RoutData.Controller;
            var actionName = RoutData.ActionName;
            var taskID = RoutData.TaskID;
            lock (syncMachinestatus)
            {

                machineInfo.MachineInvokeInfos.Add(new MachineInvokeInfo(taskID, controllerName, actionName, MachineInvokeStatus.Running));
            }

            new Task(() =>
            {
                var remainMessage = route.RouteHandler.MapToControllerExcute(RoutData);
                remainMessage.MachineName = slaveName;
                SendMessageToMaster(remainMessage.ToJsonSerializeString(), masterName);

                lock (syncMachinestatus)
                {

                    var macinfos = machineInfo.MachineInvokeInfos.Where(t => t.ControllerName == remainMessage.ControllerName && t.ActionName == remainMessage.ActionName && t.TaskID == remainMessage.TaskID).First();
                    macinfos.Status = remainMessage.MachineInvokeStatus;
                    if (macinfos.Status == MachineInvokeStatus.Completed
                              || macinfos.Status == MachineInvokeStatus.Exception
                              || macinfos.Status == MachineInvokeStatus.Fault
                              || macinfos.Status == MachineInvokeStatus.PartCompleted)
                    {
                        machineInfo.MachineInvokeInfos.Remove(macinfos);
                    }
                }

            }).Start();


        }
Exemple #4
0
        public bool StartMasterServer(int port)
        {
            try
            {
                IPAddress myIPAddress = null;
                IPAddress[] myIPAddresses = (IPAddress[])Dns.GetHostAddresses(Dns.GetHostName());
                foreach (var add in myIPAddresses)
                {
                    try
                    {
                        long a = add.ScopeId;
                    }
                    catch
                    {
                        myIPAddress = add;
                    }
                }
                if (myIPAddress == null)
                {
                    //log
                    return false;
                }
                Console.WriteLine("IPAddress is {0}", myIPAddress.ToString());
                server = new TcpListener(myIPAddress, port);
                server.Start();
                List<byte> messagebytes = new List<byte>();
        
                String data = null;
                while (true)
                {
                    messagebytes.Clear();
                    Console.Write("Waiting for a connection... ");
                    TcpClient client = server.AcceptTcpClient();
                    Console.WriteLine("Connected!");
                    data = null;
                    Byte[] bytes = new Byte[256];

                    NetworkStream stream = client.GetStream();
                    StringBuilder messagebuilder = new StringBuilder();
                    int i;
                    while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        data = System.Text.Encoding.Unicode.GetString(bytes, 0, i);

                        if (data == "Tinct")
                        {
                            byte[] msg = System.Text.Encoding.Unicode.GetBytes(data);
                            stream.Write(msg, 0, msg.Length);
                        }
                        messagebuilder.Append(data);
                        // messagebytes.AddRange(bytes);
                        bytes = new Byte[256];
                    }
                    string message = messagebuilder.ToString();
                    // string message = System.Text.Encoding.Unicode.GetString(messagebytes.ToArray());
                    if (message.IndexOf('\0') != -1)
                    {
                        message = message.Substring(0, message.IndexOf('\0'));
                    }
                    TinctConnectReceiveArgs args = new TinctConnectReceiveArgs();
                    args.ReceivedMessage = message;
                    if (message.Trim() != "Tinct")
                    {
                        RaiseReceiveRestMessage(args);
                    }

                    client.Close();
                }
            }
            catch (SocketException e)
            {
                Console.WriteLine(e.Message);
                //log
                return false;
            }
            finally
            {
                server.Stop();
            }

        }