예제 #1
0
        public static LocalProcess ReserveLocalProcess(Participant participant, string address)
        {
            using (DaemonEntities entities = new DaemonEntities())
            {
                entities.Attach(participant);

                try
                {
                    int serverPort = MxpConstants.DefaultServerPort;
                    if ((from l in entities.LocalProcess select l).Count() > 0)
                    {
                        serverPort = (from l in entities.LocalProcess select l).Max(l => l.ServerPort) + 2;
                    }
                    int hubPort = serverPort + 1;

                    LocalProcess localProcess = new LocalProcess
                    {
                        LocalProcessId = Guid.NewGuid(),
                        Participant    = participant,
                        Name           = "(" + serverPort + "," + hubPort + ")",
                        Address        = address,
                        ServerPort     = serverPort,
                        HubPort        = hubPort,
                        Enabled        = false
                    };

                    entities.AddToLocalProcess(localProcess);
                    entities.SaveChanges();
                    entities.Detach(localProcess);

                    return(localProcess);
                }
                finally
                {
                    entities.Detach(participant);
                }
            }
        }