コード例 #1
0
    public static void AddFriends(JSONObject json) {
        if (json["friends"].Count > 0) { 
            json = json["friends"];
            for (int i = 0; i < json.keys.Count; i++) {
                ServerEntity temp = new ServerEntity();

                temp.sid = json.keys[i];
                temp.episodes = json[i]["episodes"].list.ConvertAll<int>(JSONObjectToInt);
                temp.petition.life = json[i]["petitions"]["life"].b;
                temp.petition.episode = json[i]["petitions"]["episode"].b;
                temp.received.life = json[i]["received"]["life"].b;
                temp.received.boosters = json[i]["received"]["boosters"].list.ConvertAll<int>(JSONObjectToInt);
                temp.sended.life = json[i]["sended"]["life"].b;
                temp.sended.boosters = json[i]["sended"]["boosters"].list.ConvertAll<int>(JSONObjectToInt);
                temp.levelsHistory = json[i]["history"].list.ConvertAll<ServerEntity.Level>(JSONObjectToLevelHistory);

                serverEntities.Add(temp);

                foreach (int episode in temp.episodes) {
                    Map.Instance.episodes[episode - 1].sids.Add(temp.sid);
                }

            }
        }
        onStartInitializeSuccess(2);
    }
コード例 #2
0
        public StartWindow()
        {
            ch = new BLL.CamearHelper();
            bool res = ch.getMysqlConfig();

            if (res == true)
            {
                LoginPark lp = new LoginPark();
                lp.ShowDialog();
                this.Close();
            }
            else
            {
                InitializeComponent();
                cc = new ServerPreferencesControl();
                cc.LoadDefaultConfig();
                //传参数到UI界面
                ServerEntity SQLdata = cc.GetServerConfig();
                txtservername.Text = SQLdata.Server;
                txtport.Text       = SQLdata.Port.ToString();
                txtsqlname.Text    = SQLdata.Database;
                txtusername.Text   = SQLdata.User;
                txtpwd.Text        = SQLdata.Password;
            }
        }
コード例 #3
0
ファイル: ToolService.cs プロジェクト: GlibWild/SQL-Op-Tool
        /// <summary>
        /// 读取服务器配置文件
        /// </summary>
        /// <param name="serverFilePath"></param>
        public List <ServerEntity> ReadXml(string serverFilePath)
        {
            List <ServerEntity> seList  = new List <ServerEntity>();
            XmlDocument         xmlDoc  = new XmlDocument();
            XmlReaderSettings   setting = new XmlReaderSettings();

            setting.IgnoreComments = true;
            xmlDoc.Load(serverFilePath);
            XmlNode     root = xmlDoc.SelectSingleNode("serverlist");
            XmlNodeList xn1  = root.ChildNodes;

            //位置在info中
            foreach (XmlNode item in xn1)
            {
                ServerEntity se = new ServerEntity();
                XmlElement   xe = (XmlElement)item;
                se.Name = xe.GetAttribute("name");
                //位置在server中
                XmlNodeList xn = item.ChildNodes;
                se.ServerIP       = xn[0].InnerText;
                se.ServerPort     = xn[1].InnerText;
                se.ServerUserName = xn[2].InnerText;
                se.ServerPassword = xn[3].InnerText;
                XmlNodeList xn2 = xn[4].ChildNodes;
                foreach (XmlNode child in xn2)
                {
                    se.ServerDBName.Add(child.InnerText);
                }

                seList.Add(se);
            }
            return(seList);
        }
コード例 #4
0
        public void Test1()
        {
            _server_api = new OpenServerApi("./server_information.json");
            _server_mapper = new ServerEntityMapper();
            _server_repository = new ServerRepository(_server_api, _server_mapper);

            _server_creator = new ServerCreatorRequest(_server_repository);
            _server_activator = new ServerActivatorRequest(_server_repository);

            ServerEntity server = _server_creator.Handle(666);

            Assert.IsNotNull(server);
            Assert.AreEqual(666, server.Port);

            ServerEntity server2 = _server_creator.Handle(667);

            Assert.IsNotNull(server2);
            Assert.AreEqual(667, server2.Port);
            Assert.AreEqual(666, server.Port);

            Assert.AreNotSame(server, server2);

            server = _server_activator.Handle(server, true, new ServerAcceptCallback(server));

            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 666));

            Assert.AreEqual(true, socket.Connected);
            Assert.AreEqual(true, server.IsRunning);
            Assert.AreEqual(false, server2.IsRunning);

            server = _server_activator.Handle(server, false, null);

            Assert.AreEqual(false, server.IsRunning);
        }
コード例 #5
0
        /// <summary>
        /// Tries to move a user in to a new zone.
        /// </summary>
        public bool RequestZoneTransfer(ServerEntity entity, int newZoneID)
        {
            //Check the zone exists
            if (m_zones.ContainsKey(newZoneID))
            {
                Zone newZone = m_zones[newZoneID];

                //See if the user is already in a zone
                if (m_userZones.ContainsKey(entity))
                {
                    //Remove them from their current zone
                    Zone currentZone = m_userZones[entity];
                    currentZone.RemoveEntity(entity);
                }
                else
                {
                    //Add them to the zone index
                    m_userZones.Add(entity, newZone);
                }

                //Move them in to their new zone
                m_userZones[entity] = newZone;
                newZone.AddEntity(entity);

                return(true);
            }

            return(false);
        }
コード例 #6
0
        private void OnEntityUse(int player, ServerEntityId id)
        {
            ServerEntity e = m.EntityGet(id);

            if (e.sign == null)
            {
                return;
            }

            // TODO: Check permissions

            Dialog d = new Dialog();

            d.Width   = 400;
            d.Height  = 200;
            d.IsModal = true;
            d.Widgets = new Widget[4];
            int widgetCount = 0;
            var font        = new DialogFont("Verdana", 11f, DialogFontStyle.Bold);

            d.Widgets[widgetCount++] = Widget.MakeSolid(0, 0, 300, 200, Color.FromArgb(255, 50, 50, 50).ToArgb());
            d.Widgets[widgetCount++] = Widget.MakeTextBox(e.sign.text, font, 50, 50, 200, 50, Color.FromArgb(255, 0, 0, 0).ToArgb());
            Widget okHandler = Widget.MakeSolid(100, 100, 100, 50, Color.FromArgb(255, 100, 100, 100).ToArgb());

            okHandler.ClickKey       = (char)13;
            okHandler.Id             = "UseSign_OK";
            d.Widgets[widgetCount++] = okHandler;
            d.Widgets[widgetCount++] = Widget.MakeText("OK", font, 100, 100, Color.FromArgb(255, 0, 0, 0).ToArgb());
            editingSign[player]      = id;
            m.SendDialog(player, "UseSign", d);
        }
コード例 #7
0
        public async Task <ServerEntity> CreateUpdateServerAsync(CreateUpdateServerRequest request, int userId)
        {
            var server = await _database.ServerList.FindAsync(request.Id);

            if (server == null)
            {
                server = new ServerEntity
                {
                    Name        = request.Name,
                    Description = request.Description,
                    IpAddress   = request.IpAddress,
                    Port        = request.Port,
                    OwnerUserId = userId,
                    StarCount   = 0,
                    ImageUrl    = request.ImageUrl
                };
                await _database.ServerList.AddAsync(server);
            }
            else
            {
                if (userId != server.OwnerUserId)
                {
                    return(null);
                }
                server.Name        = request.Name;
                server.Description = request.Description;
                server.IpAddress   = request.IpAddress;
                server.Port        = request.Port;
                server.ImageUrl    = request.ImageUrl;
                _database.ServerList.Update(server);
            }
            await _database.SaveChangesAsync();

            return(server);
        }
コード例 #8
0
        private void OnEntityUpdate(ServerEntityId id)
        {
            ServerEntity e = m.EntityGet(id);

            if (e.sign == null)
            {
                return;
            }
            if (e.drawModel == null)
            {
                e.drawModel = new ServerEntityAnimatedModel();
            }
            e.drawModel.model       = "signmodel.txt";
            e.drawModel.texture     = "signmodel.png";
            e.drawModel.modelHeight = 1.3f;

            if (e.drawText == null)
            {
                e.drawText = new ServerEntityDrawText();
            }
            e.drawText.text = e.sign.text;
            e.drawText.dx   = 0.1f;
            e.drawText.dy   = 1.1f;
            e.drawText.dz   = 0.1f;
            e.usable        = true;
            if (e.drawName == null)
            {
                e.drawName                  = new ServerEntityDrawName();
                e.drawName.name             = "Sign";
                e.drawName.onlyWhenSelected = true;
            }
        }
コード例 #9
0
        public async Task <DaoResultMessage> CreateServerEntity(string id, ServerEntity entity)
        {
            DaoResultMessage message = new DaoResultMessage();

            try
            {
                using (var context = new DjLiveCpContext())
                {
                    entity.Id = id;
                    var item = context.Server.Add(entity);
                    await context.SaveChangesAsync();

                    message.Code    = DaoResultCode.Success;
                    message.Message = "添加成功!";
                    message.para    = item;
                }
            }
            catch (Exception e)
            {
                LogHelper.Error(e.Message, e);
                message.Code    = DaoResultCode.UnExpectError;
                message.Message = e.Message;
            }

            return(message);
        }
コード例 #10
0
        public async Task <List <ServerEntity> > LoadServers()
        {
            var documents = await serversCollection.GetDocumentsListAsync();

            serversList.Clear();

            foreach (var document in documents)
            {
                var server = new ServerEntity
                {
                    Id                       = document["Id"].AsInt32,
                    Name                     = document["Name"].AsString,
                    Ip                       = document["IP"].AsString,
                    Port                     = document["Port"].AsInt32,
                    Region                   = (Region)document["Region"].AsInt32,
                    PlayersCount             = document["PlayersCount"].AsInt32,
                    PlayersMax               = document["PlayersMax"].AsInt32,
                    MinutesToNextLevelChange = document["MinutesToNextLevelChange"].AsInt32,
                    LastUpdateDateTime       = document["LastUpdateDateTime"].ToLocalTime()
                };
                serversList.Add(server);
            }

            //serversList = serversList.OrderBy(s => s.Id).ToList();
            return(serversList);
        }
コード例 #11
0
        public async Task <DaoResultMessage> Add2Account(string accountId, ServerEntity entity)
        {
            DaoResultMessage message = new DaoResultMessage();

            try
            {
                using (var context = new DjLiveCpContext())
                {
                    var dbentity = context.Account.FirstOrDefault(obj => obj.Id == accountId);
                    if (dbentity != null)
                    {
                        entity.AccountEntities.Add(dbentity);
                        context.Server.Add(entity);
                        await context.SaveChangesAsync();
                    }
                    else
                    {
                        message.Code    = DaoResultCode.ItemNotExist;
                        message.Message = "修改失败,对象不存在!";
                    }
                }
            }
            catch (Exception e)
            {
                LogHelper.Error(e.Message, e);
                message.Code    = DaoResultCode.UnExpectError;
                message.Message = e.Message;
            }

            return(message);
        }
コード例 #12
0
        public static HostOption Parse2Conf(this ServerEntity server)
        {
            var serviceConfig = JsonConvert.DeserializeObject <LiveServiceConfig>(server.Option);

            HostOption hostOption = new HostOption();

            if (serviceConfig != null)
            {
                hostOption.listen   = serviceConfig.RtmpPort != 0 ? serviceConfig.RtmpPort : hostOption.listen;
                hostOption.http_api = new ApiOption("")
                {
                    listen = serviceConfig.ApiPort != 0 ? serviceConfig.ApiPort : 1985,
                };
                hostOption.http_server = new HttpOption("")
                {
                    listen = serviceConfig.HttpPort != 0 ? serviceConfig.HttpPort : 8080,
                };
            }
            if (server.Domains != null)
            {
                foreach (DomainEntity serverDomain in server.Domains)
                {
                    hostOption.VHostOptions.Add(serverDomain.Parse2Conf());
                }
            }
            return(hostOption);
        }
コード例 #13
0
 public async Task <int> GetServerNodesCount(string userId, ServerEntity entityDelta)
 {
     try
     {
         using (var context = new DjLiveCpContext())
         {
             var sql         = $@"SELECT Count(0) FROM sys_servernode";
             var paraObjects = new object[] { };
             if (!string.IsNullOrEmpty(userId))
             {
                 sql         = $@"SELECT Count(0) FROM sys_servernode as b 
                         join sys_alli_account_servernode as c 
                         on c.AccountId = {"{0}"} 
                         and b.Id = c.NodeId";
                 paraObjects = new object[] { userId };
             }
             var objs = context.Database.SqlQuery <int>(sql, paraObjects);
             return(await objs.FirstOrDefaultAsync());
         }
     }
     catch (Exception e)
     {
         LogHelper.Error(e.Message, e);
         return(0);
     }
 }
コード例 #14
0
        public static ServerEntity LoadServerConfig()
        {
            ServerEntity result = new ServerEntity();
            string       path   = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configurations/Server.xml");
            XDocument    xml    = XDocument.Load(path);
            XElement     root   = xml.Root;

            result.RunWays           = root.Element("RunWays").Value.Trim();
            result.Port              = int.Parse(root.Element("Port").Value.Trim());
            result.SendThreads       = int.Parse(root.Element("SendThreads").Value.Trim());
            result.MaxPostLength     = long.Parse(root.Element("MaxPostLength").Value.Trim());
            result.MaxHeaderLines    = int.Parse(root.Element("MaxHeaderLines").Value.Trim());
            result.MaxQueuedRequests = int.Parse(root.Element("MaxQueuedRequests").Value.Trim());
            result.HostList          = new List <string>();
            XElement hostList = root.Element("HostList");

            foreach (XElement item in hostList.Elements("Host"))
            {
                result.HostList.Add(string.Format("{0}:{1}", item.Value.Trim(), result.Port));
            }
            result.CommandList = new List <string>();
            XElement commandList = root.Element("CommandList");

            foreach (XElement item in commandList.Elements("Command"))
            {
                result.CommandList.Add(item.Value.Trim());
            }
            return(result);
        }
コード例 #15
0
ファイル: Sign.cs プロジェクト: jchappelle/manicdigger
    void OnUseWithTool(int player, int x, int y, int z, int tool)
    {
        if (server.modManager.GetBlockName(tool) == "Sign")
        {
            ServerChunk c = server.d_Map.GetChunk(x, y, z);
            if (c == null)
            {
                return;
            }

            if (!server.CheckBuildPrivileges(player, x, y, z))
            {
                return;
            }

            ServerEntity e = new ServerEntity();
            e.position         = new ServerEntityPositionAndOrientation();
            e.position.x       = x + one / 2;
            e.position.y       = z;
            e.position.z       = y + one / 2;
            e.position.heading = EntityHeading.GetHeading(server.modManager.GetPlayerPositionX(player), server.modManager.GetPlayerPositionY(player), e.position.x, e.position.z);
            e.sign             = new ServerEntitySign();
            e.sign.text        = "Hello world!";
            server.AddEntity(x, y, z, e);
        }
    }
コード例 #16
0
    public static void HandleActiveEntityList(PacketReader Reader)
    {
        Log.PrintIncomingPacket("GameWorldState.HandleActiveEntityList");
        int EntityCount = Reader.ReadInt();

        for (int i = 0; i < EntityCount; i++)
        {
            //Extract each entities information as we loop through the packet data
            string  EntityType     = Reader.ReadString();
            string  EntityID       = Reader.ReadString();
            Vector3 EntityPosition = Reader.ReadVector3();
            int     EntityHealth   = Reader.ReadInt();
            //Spawn each new entity into the game world and store them in the entity manager
            GameObject   EntitySpawn   = ItemSpawner.Instance.SpawnItem(EntityPrefabs.GetEntityPrefab(EntityType), EntityPosition, Quaternion.identity);
            ServerEntity EntityDetails = EntitySpawn.GetComponent <ServerEntity>();
            EntityDetails.ID        = EntityID;
            EntityDetails.Health    = EntityHealth;
            EntityDetails.MaxHealth = EntityHealth;
            EntitySpawn.GetComponent <ServerEntity>().ID         = EntityID;
            EntitySpawn.GetComponentInChildren <TextMesh>().text = EntityType + " " + EntityDetails.Health + "/" + EntityDetails.MaxHealth;
            EntityManager.AddNewEntity(EntityID, EntitySpawn);
        }

        //Now request from the server the active item list
        //GameWorldStatePacketSender.SendActiveItemRequest();
    }
コード例 #17
0
 void StartTcpServer()
 {
     try
     {
         while (true)
         {
             string data = null;
             int    j    = 0;
             while (true)
             {
                 byte[] bytes = new byte[11000000];
                 int    i;
                 stream = List[j].Client.GetStream();
                 if (stream.DataAvailable)
                 {
                     i    = stream.Read(bytes, 0, bytes.Length);
                     data = Encoding.ASCII.GetString(bytes, 0, i);
                     if (data.Contains("PNG"))
                     {
                         SentClient(bytes, List[j].Id);
                         ServerEntity serverEntity = new ServerEntity();
                         serverEntity.Message = data;
                         var action = new Action(() => { ServerList.Add(serverEntity); });
                         Task.Run(() => App.Current.Dispatcher.BeginInvoke(action)).Wait();
                         data  = null;
                         bytes = null;
                     }
                     else
                     {
                         ServerEntity serverEntity = new ServerEntity();
                         string[]     arr          = data.Split('`');
                         serverEntity.Message = arr[0];
                         var action = new Action(() => { ServerList.Add(serverEntity); });
                         Task.Run(() => App.Current.Dispatcher.BeginInvoke(action)).Wait();
                         byte[] msg = Encoding.ASCII.GetBytes(arr[0]);
                         SentClient(msg, List[j].Id);
                     }
                 }
                 j++;
                 if (j == List.Count)
                 {
                     j = 0;
                 }
             }
             client.Close();
         }
     }
     catch (SocketException e)
     {
         MessageBox.Show("SocketException: {0}", e.Message);
     }
     catch (Exception e)
     {
         MessageBox.Show("Exception" + e.Message);
     }
     finally
     {
         server.Stop();
     }
 }
コード例 #18
0
        public async Task <List <ServerNodeModel> > GetSimpleServerNodes(string userId, ServerNodeModel delta)
        {
            try
            {
                ServerEntity entityDelta = null;
                if (delta != null)
                {
                    entityDelta = new ServerEntity()
                    {
                        Name = delta.Name
                    };
                }
                var entities = await ServerDao.GetServerEntitys(userId);

                return(entities?.Select(item => new ServerNodeModel()
                {
                    Id = item.Id,
                    Name = item.Name,
                }).ToList());
            }
            catch (Exception e)
            {
                throw;
            }
        }
コード例 #19
0
ファイル: Zone.cs プロジェクト: CairoLee/svn-dump
 /// <summary>
 /// Remove an entity from this zone
 /// </summary>
 public void RemoveEntity(ServerEntity entity)
 {
     if (mEntities.ContainsKey(entity.WorldID))
     {
         mEntities.Remove(entity.WorldID);
     }
 }
コード例 #20
0
        /// <summary>
        /// Insert a new record about a server.
        /// </summary>
        /// <param name="model">The server.</param>
        /// <returns>The server's identifier that has been inserted.</returns>
        public Int64 InsertServer(ServerModel model)
        {
            logger.WriteTrace("Inserting {0} into the database...", model);

            if (model.Id != 0)
            {
                throw new ArgumentException("Model's identifier should be 0. Now it is " + model.Id, "model");
            }

            logger.WriteTrace("Converting {0} into the entity...", model);
            ServerEntity entity = serverConverter.Convert(model);

            logger.WriteTrace("{0} has been converted. Generating sql command for {1}...", model, entity);

            string sqlCommand = string.Format(insertStatement, sqlSettings.WiseQueueDefaultSchema, serverTableName, entity.Name, entity.Description, entity.HeartbeatLifetime);

            logger.WriteTrace("The SqlCommand has been generated. Result: {0}", sqlCommand);

            logger.WriteTrace("Executing sql command...");
            using (IDbConnection connection = connectionFactory.CreateConnection())
            {
                using (IDbCommand command = connection.CreateCommand())
                {
                    command.CommandText = sqlCommand;
                    Int64 result = (Int64)command.ExecuteScalar();

                    logger.WriteTrace("The command has been executed. Entity identifier is {0}", result);
                    return(result);
                }
            }
        }
コード例 #21
0
ファイル: Zone.cs プロジェクト: CairoLee/svn-dump
        /// <summary>
        /// Sends states of nearby enemies to each other
        /// </summary>
        public void PushNearbyEntities(ServerEntity entity)
        {
            const int minSqrDistance = 768 * 768;

            foreach (var e in mEntities.Values)
            {
                if (e.AuthState != EEntityAuthState.Authorised || e.WorldID == entity.WorldID)
                {
                    //Skip unauthorised entities and don't send to self
                    continue;
                }

                float xDiff = entity.LastState.X - e.LastState.X;
                float yDiff = entity.LastState.Y - e.LastState.Y;

                var sqrdistance = (xDiff * xDiff) + (yDiff * yDiff);

                if (sqrdistance > minSqrDistance)
                {
                    continue;
                }

                //Add a push state into the coalesced data packet for this entity
                var state = PacketFactory.CreatePacket <PushState>();
                state.WorldID = e.WorldID;
                state.State   = e.LastState;

                entity.DeferredSendPacket(state);
            }
        }
コード例 #22
0
ファイル: ZoneManager.cs プロジェクト: GodLesZ/svn-dump
		/// <summary>
		/// Tells all zones to push states to entities that are near to each other.
		/// </summary>
		public void PushNearbyEntities(ServerEntity entity) {
			Zone zone;
			mUserZones.TryGetValue(entity, out zone);
			if (zone != null) {
				zone.PushNearbyEntities(entity);
			}
		}
コード例 #23
0
    void OnUseWithTool(int player, int x, int y, int z, int tool)
    {
        if (server.modManager.GetBlockName(tool) == "PermissionSign")
        {
            ServerChunk c = server.d_Map.GetChunk(x, y, z);
            if (c == null)
            {
                return;
            }

            if (!server.CheckBuildPrivileges(player, x, y, z))
            {
                return;
            }

            if (!server.PlayerHasPrivilege(player, ServerClientMisc.Privilege.area_add))
            {
                server.SendMessage(player, server.colorError + server.language.Get("Server_CommandInsufficientPrivileges"));
                return;
            }

            ServerEntity e = new ServerEntity();
            e.position         = new ServerEntityPositionAndOrientation();
            e.position.x       = x + one / 2;
            e.position.y       = z;
            e.position.z       = y + one / 2;
            e.position.heading = EntityHeading.GetHeading(server.modManager.GetPlayerPositionX(player), server.modManager.GetPlayerPositionY(player), e.position.x, e.position.z);

            e.permissionSign      = new ServerEntityPermissionSign();
            e.permissionSign.name = "Admin";
            e.permissionSign.type = PermissionSignType.Group;
            server.AddEntity(x, y, z, e);
        }
    }
コード例 #24
0
ファイル: ZoneManager.cs プロジェクト: GodLesZ/svn-dump
		/// <summary>
		/// Remove an entity from the zone that they are in
		/// </summary>
		public void RemoveEntity(ServerEntity entity) {
			Zone zone;
			mUserZones.TryGetValue(entity, out zone);
			if (zone != null) {
				zone.RemoveEntity(entity);
			}
		}
コード例 #25
0
ファイル: Zone.cs プロジェクト: Cakez0r/Cakewalk
        /// <summary>
        /// Sends states of nearby enemies to each other
        /// </summary>
        public void PushNearbyEntities(ServerEntity entity)
        {
            foreach (ServerEntity e in m_entities.Values)
            {
                if (e.AuthState != EntityAuthState.Authorised || e.WorldID == entity.WorldID)
                {
                    //Skip unauthorised entities and don't send to self
                    continue;
                }

                float xDiff = entity.LastState.X - e.LastState.X;
                float yDiff = entity.LastState.Y - e.LastState.Y;

                float sqrdistance = (xDiff * xDiff) + (yDiff * yDiff);

                if (sqrdistance < 768*768)
                {
                    //Add a push state into the coalesced data packet for this entity
                    PushState state = PacketFactory.CreatePacket<PushState>();
                    state.WorldID = e.WorldID;
                    state.State = e.LastState;

                    entity.DeferredSendPacket(state);
                }
            }
        }
コード例 #26
0
ファイル: WorkflowActivity.cs プロジェクト: ogazitt/zaplify
        /// <summary>
        /// Canned Execution method for an Activity for processing Items.  This method will:
        ///   1. validate the entity as an Item
        ///   2. verify the item type
        ///   3. check whether the target field is set on the Item and set state appropriately
        ///   4. check whether the user made a selection (via the data parameter) and set state appropriately
        ///   5. if none of this is true, add a set of suggestions from a suggestion function passed in
        /// </summary>
        /// <param name="workflowInstance">Workflow instance to process</param>
        /// <param name="entity">Entity to process</param>
        /// <param name="data">User selection data passed in</param>
        /// <param name="suggestionFunction">Suggestion function to invoke</param>
        /// <returns>return value for the Function</returns>
        protected Status Execute(
            WorkflowInstance workflowInstance,
            ServerEntity entity,
            object data,
            Guid expectedItemType,
            Func <WorkflowInstance, ServerEntity, Dictionary <string, string>, Status> suggestionFunction)
        {
            Item item = entity as Item;

            if (item == null)
            {
                TraceLog.TraceError("Entity is not an Item");
                return(Status.Error);
            }

            if (VerifyItemType(item, expectedItemType) == false)
            {
                return(Status.Error);
            }

            // if the target field has been set, this state can terminate
            if (CheckTargetField(workflowInstance, item))
            {
                return(Status.Complete);
            }

            // check for user selection
            if (data != null)
            {
                return(ProcessActivityData(workflowInstance, data));
            }

            return(CreateSuggestions(workflowInstance, entity, suggestionFunction));
        }
コード例 #27
0
        /// <summary>
        /// Run a workflow until it is blocked for user input or is terminated
        /// </summary>
        /// <param name="instance"></param>
        /// <param name="entity"></param>
        public void Run(WorkflowInstance instance, ServerEntity entity)
        {
            TraceLog.TraceInfo("Running workflow " + instance.WorkflowType);
            var status = WorkflowActivity.Status.Complete;

            try
            {
                // invoke the workflow and process steps until workflow is blocked for user input
                while (status == WorkflowActivity.Status.Complete)
                {
                    status = Execute(instance, entity);
                }
            }
            catch (Exception ex)
            {
                TraceLog.TraceException("Workflow execution failed", ex);
            }

            // if the workflow is done or experienced a fatal error, terminate it
            if (status == WorkflowActivity.Status.WorkflowDone ||
                status == WorkflowActivity.Status.Error)
            {
                try
                {
                    SuggestionsContext.WorkflowInstances.Remove(instance);
                    SuggestionsContext.SaveChanges();
                }
                catch (Exception ex)
                {
                    TraceLog.TraceException("Could not remove workflow instance", ex);
                }
            }
        }
コード例 #28
0
        protected HttpResponseMessageWrapper <T> ReturnResult <T>(HttpRequestMessage req, Operation operation, T t, HttpStatusCode code)
        {
            try
            {
                if (operation != null)
                {
                    operation.StatusCode = (int?)code;

                    // fix the EntityID (some clients like the web-client have the server assign the ID for new entities)
                    if (operation.EntityID == Guid.Empty)
                    {
                        ServerEntity entity = t as ServerEntity;
                        if (entity != null)
                        {
                            operation.EntityID = entity.ID;
                        }
                    }

                    this.StorageContext.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                TraceLog.TraceException("Could not log operation status", ex);
            }
            return(new HttpResponseMessageWrapper <T>(req, t, code));
        }
コード例 #29
0
ファイル: Sign.cs プロジェクト: jchappelle/manicdigger
    void UpdateEntity(int chunkx, int chunky, int chunkz, int id)
    {
        ServerEntity e = server.GetEntity(chunkx, chunky, chunkz, id);

        if (e.sign == null)
        {
            return;
        }
        if (e.drawModel == null)
        {
            e.drawModel = new ServerEntityAnimatedModel();
        }
        e.drawModel.model       = "signmodel.txt";
        e.drawModel.texture     = "signmodel.png";
        e.drawModel.modelHeight = one * 13 / 10;

        if (e.drawText == null)
        {
            e.drawText = new ServerEntityDrawText();
        }
        e.drawText.text = e.sign.text;
        e.drawText.dx   = one * 3 / 32;
        e.drawText.dy   = one * 36 / 32;
        e.drawText.dz   = one * 3 / 32;
        e.usable        = true;
        if (e.drawName == null)
        {
            e.drawName                  = new ServerEntityDrawName();
            e.drawName.name             = "Sign";
            e.drawName.onlyWhenSelected = true;
        }
    }
コード例 #30
0
ファイル: ZoneManager.cs プロジェクト: Cakez0r/Cakewalk
        /// <summary>
        /// Tries to move a user in to a new zone.
        /// </summary>
        public bool RequestZoneTransfer(ServerEntity entity, int newZoneID)
        {
            //Check the zone exists
            if (m_zones.ContainsKey(newZoneID))
            {
                Zone newZone = m_zones[newZoneID];

                //See if the user is already in a zone
                if (m_userZones.ContainsKey(entity))
                {
                    //Remove them from their current zone
                    Zone currentZone = m_userZones[entity];
                    currentZone.RemoveEntity(entity);
                }
                else
                {
                    //Add them to the zone index
                    m_userZones.Add(entity, newZone);
                }

                //Move them in to their new zone
                m_userZones[entity] = newZone;
                newZone.AddEntity(entity);

                return true;
            }

            return false;
        }
コード例 #31
0
ファイル: ToolService.cs プロジェクト: GlibWild/SQL-Op-Tool
        public void WriteXml(ServerEntity se)
        {
            XmlDocument doc     = new XmlDocument();
            XmlElement  servers = null;

            if (File.Exists(serverFilePath))
            {
                doc.Load(serverFilePath);
                servers = doc.DocumentElement;
            }
            else
            {
                //创建声明
                XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "gb2312", null);
                doc.AppendChild(dec);
                //创建根节点
                servers = doc.CreateElement("serverlist");
                doc.AppendChild(servers);
            }

            XmlElement childServer = doc.CreateElement("info");

            childServer.SetAttribute("name", se.Name);
            servers.AppendChild(childServer);

            XmlElement inner1 = doc.CreateElement("serverIP");

            inner1.InnerText = se.ServerIP;
            childServer.AppendChild(inner1);

            XmlElement inner2 = doc.CreateElement("serverPort");

            inner2.InnerText = se.ServerPort;
            childServer.AppendChild(inner2);

            XmlElement inner3 = doc.CreateElement("serverUserName");

            inner3.InnerText = se.ServerUserName;
            childServer.AppendChild(inner3);

            XmlElement inner4 = doc.CreateElement("serverPassword");

            inner4.InnerText = se.ServerPassword;
            childServer.AppendChild(inner4);

            XmlElement inner5 = doc.CreateElement("serverCatalog");

            childServer.AppendChild(inner5);

            foreach (string item in se.ServerDBName)
            {
                XmlElement inner6 = doc.CreateElement("List");
                inner6.InnerText = item;
                inner5.AppendChild(inner6);
            }


            doc.Save(serverFilePath);
        }
コード例 #32
0
ファイル: NetworkMgr.cs プロジェクト: soulhez/RPG_JG
    public void Connect(ServerEntity server, DefAction callBack)
    {
        this.connectCallBack = callBack;
        StateObj state = new StateObj();

        state.OnConnect = OnConnect;
        clientSocket.ConnectServer(server.ip, server.port, state);
    }
コード例 #33
0
 public ServerModel(string serverId)
 {
     _server = new ServerEntity
     {
         Id   = Guid.NewGuid(),
         Name = serverId
     };
 }
コード例 #34
0
        /// <summary>
        /// Convert server entity into the server model.
        /// </summary>
        /// <param name="serverEntity">The <see cref="ServerEntity"/> instance.</param>
        /// <returns>The <see cref="ServerModel"/> instance.</returns>
        public ServerModel Convert(ServerEntity serverEntity)
        {
            ServerModel result = (serverEntity.Id > 0)
                ? new ServerModel(serverEntity.Id, serverEntity.Name, serverEntity.Description,
                                  serverEntity.HeartbeatLifetime)
                : new ServerModel(serverEntity.Name, serverEntity.Description, serverEntity.HeartbeatLifetime);

            return(result);
        }
コード例 #35
0
        /// <summary>
        /// Default implementation for the Workflow's Process method.
        ///     Get the current state
        ///     Invoke the corresponding action (with the data object passed in)
        ///     Add any results to the Item's SuggestionsList
        ///     Move to the next state and terminate the workflow if it is at the end
        /// </summary>
        /// <param name="instance">Workflow instance</param>
        /// <param name="entity">Entity to process</param>
        /// <param name="data">Extra data to pass to Activity</param>
        /// <returns>true if completed, false if not</returns>
        protected virtual WorkflowActivity.Status Process(WorkflowInstance instance, ServerEntity entity, object data)
        {
            try
            {
                // get current state and corresponding activity
                TraceLog.TraceInfo(String.Format("Workflow {0} entering state {1}", instance.WorkflowType, instance.State));
                WorkflowState state = States.Single(s => s.Name == instance.State);
                //var activity = PrepareActivity(instance, state.Activity, UserContext, SuggestionsContext);

                WorkflowActivity activity = null;
                if (state.Activity != null)
                {
                    activity = WorkflowActivity.CreateActivity(state.Activity);
                }
                else if (state.ActivityDefinition != null)
                {
                    activity = WorkflowActivity.CreateActivity(state.ActivityDefinition, instance);
                }

                if (activity == null)
                {
                    TraceLog.TraceError("Could not find or prepare Activity");
                    return(WorkflowActivity.Status.Error);
                }
                else
                {
                    activity.UserContext        = UserContext;
                    activity.SuggestionsContext = SuggestionsContext;
                }

                // invoke the activity
                TraceLog.TraceInfo(String.Format("Workflow {0} invoking activity {1}", instance.WorkflowType, activity.Name));
                var status = activity.Function.Invoke(instance, entity, data);
                TraceLog.TraceInfo(String.Format("Workflow {0}: activity {1} returned status {2}", instance.WorkflowType, activity.Name, status.ToString()));
                instance.LastModified = DateTime.Now;

                // if the activity completed, advance the workflow state
                if (status == WorkflowActivity.Status.Complete)
                {
                    // store next state and terminate the workflow if next state is null
                    instance.State = state.NextState;
                    if (instance.State == null)
                    {
                        status = WorkflowActivity.Status.WorkflowDone;
                        TraceLog.TraceInfo(String.Format("Workflow {0} is done", instance.WorkflowType));
                    }
                }
                SuggestionsContext.SaveChanges();

                return(status);
            }
            catch (Exception ex)
            {
                TraceLog.TraceException("Process failed", ex);
                return(WorkflowActivity.Status.Error);
            }
        }
コード例 #36
0
        public void StumpsServerInstanceTests_SetUp()
        {
            _serverId = "ABCD";

            var proxyEntity = new ServerEntity()
            {
                AutoStart = false,
                RemoteServerHostName = "stumps-project.com",
                Port = 9000,
                ServerId = _serverId,
                UseSsl = false
            };

            _dal = Substitute.For<IDataAccess>();
            _dal.ServerFind("ABCD").Returns(proxyEntity);
        }
コード例 #37
0
    public static void StartGame(JSONObject json) {
        ServerEntity player = new ServerEntity();
        player.levelsHistory = json["history"].list.ConvertAll<ServerEntity.Level>(JSONObjectToLevelHistory);

        if (Main.user.levelsHistory.Count < player.levelsHistory.Count) {
            for (int i = 0; i < Main.user.levelsHistory.Count; i++) {
                if (Main.user.levelsHistory[i] < player.levelsHistory[i].scores) {
                    Main.user.levelsHistory[i] = player.levelsHistory[i].scores;
                }
            }
            for (int i = Main.user.levelsHistory.Count; i < player.levelsHistory.Count; i++) {
                if (player.levelsHistory[i].scores > 0) {
                    Main.user.levelsHistory.Add(player.levelsHistory[i].scores);
                }
            }
        }
        else {
            for (int i = 0; i < player.levelsHistory.Count; i++) {
                if (Main.user.levelsHistory[i] < player.levelsHistory[i].scores) {
                    Main.user.levelsHistory[i] = player.levelsHistory[i].scores;
                }
            }
        }

        for (int i = 0; i < JSONObjectToInt(json["game"]["episode"]) - 1; i++) {
            player.episodes.Add(i+2);
        }

        string tutorial = json["tutorial"].ToString();
        //Debug.Log(tutorial);
        //for (int i = 0; i < tutorial.Length; i++) {
        //    Debug.Log(Convert.ToInt32(tutorial[i]));
        //    Main.user.tutorial.Add((int)ch);
        //}

        Main.user.MusicSettings = json["game"]["music"].b;
        Main.user.SoundSettings = json["game"]["sound"].b;
        Main.user.unlockedEpisodes = player.episodes;

        LocalStorage.Save();

        onStartInitializeSuccess(1);
    }
コード例 #38
0
ファイル: StumpsHostTests.cs プロジェクト: Cayan-LLC/stumps
        public void Constructor_PortInUse_ThrowsException()
        {
            int port = NetworkInformation.FindRandomOpenPort();
            string externalHostName = "www.foo.com";
            bool autoStart = false;
            bool useSsl = true;

            var proxyEntity = new ServerEntity
            {
                AutoStart = autoStart,
                RemoteServerHostName = externalHostName,
                Port = port,
                UseSsl = useSsl,
                ServerId = RandomGenerator.GenerateIdentifier()
            };

            var dataAccess = Substitute.For<IDataAccess>();
            dataAccess.ServerFind(Arg.Any<string>()).Returns(proxyEntity);

            // create a TcpListener already listening on the port
            var tcpListener = new TcpListener(IPAddress.Loopback, port);

            try
            {
                tcpListener.Start();

                StumpsHost proxy = new StumpsHost(Substitute.For<IServerFactory>(), dataAccess);
                Assert.That(
                    () => proxy.CreateServerInstance(externalHostName, port, useSsl, autoStart),
                    Throws.Exception.TypeOf<StumpsNetworkException>().With.Property("Message").EqualTo("The port is already in use."));
            }
            finally
            {
                tcpListener.Stop();
            }
        }
コード例 #39
0
ファイル: Broker.cs プロジェクト: m-berkani/ClearCanvas
        protected static void PopulateEntity(SqlDataReader reader, ServerEntity entity, Dictionary<string, PropertyInfo> propMap)
        {
            for (int i = 0; i < reader.FieldCount; i++)
            {
                String columnName = reader.GetName(i);

                // Special case for when we select a range of values with an EntityBroker, just ignore
                if (columnName.Equals("RowNum"))
                    continue;

                if (columnName.Equals("GUID"))
                {
                    Guid uid = reader.GetGuid(i);
                    entity.SetKey(new ServerEntityKey(entity.Name, uid));
                    continue;
                }

                if (columnName.Equals(entity.Name) && columnName.Contains("Enum"))
                    columnName = "Enum";

                PropertyInfo prop;
				
                if (!propMap.TryGetValue(columnName, out prop))
                    throw new EntityNotFoundException("Unable to match column to property: " + columnName, null);

                if (columnName.Contains("GUID"))
                    columnName = columnName.Replace("GUID", "Key");

                if (reader.IsDBNull(i))
                {
                    prop.SetValue(entity, null, null);
                    continue;
                }

                Type propType = prop.PropertyType;
                if (propType == typeof(String))
                    prop.SetValue(entity, reader.GetString(i), null);
                else if (propType == typeof(ServerEntityKey))
                {
                    Guid uid = reader.GetGuid(i);
                    prop.SetValue(entity, new ServerEntityKey(columnName.Replace("Key", String.Empty), uid), null);
                }
                else if (propType == typeof(DateTime))
                    prop.SetValue(entity, reader.GetDateTime(i), null);
                else if (propType == typeof(DateTime?))
                {
                    if (reader.IsDBNull(i))
                    {
                        prop.SetValue(entity, null, null);
                    }
                    else
                    {
                        prop.SetValue(entity, reader.GetDateTime(i), null);
                    }
                    
                }
                else if (propType == typeof(bool))
                    prop.SetValue(entity, reader.GetBoolean(i), null);
                else if (propType == typeof(Int32))
                    prop.SetValue(entity, reader.GetInt32(i), null);
                else if (propType == typeof(Int16))
                    prop.SetValue(entity, reader.GetInt16(i), null);
                else if (propType == typeof(double))
                    prop.SetValue(entity, reader.GetDouble(i), null);
                else if (propType == typeof(Decimal))
                    prop.SetValue(entity, reader.GetDecimal(i), null);
                else if (propType == typeof(float))
                    prop.SetValue(entity, reader.GetFloat(i), null);
                else if (propType == typeof(XmlDocument))
                {
                    SqlXml xml = reader.GetSqlXml(i);
                    if (xml!=null && !xml.IsNull)
                    {
                        XmlReader xmlReader = xml.CreateReader();
                        if (xmlReader != null)
                        {
                            XmlDocument xmlDoc = new XmlDocument();
                            xmlDoc.Load(xmlReader);
                            prop.SetValue(entity, xmlDoc, null);
                        }
                        else
                            prop.SetValue(entity, null, null);
                    }
                    else
                    {
                        prop.SetValue(entity, null, null);
                    }
                }
                else if (typeof(ServerEnum).IsAssignableFrom(propType))
                {
                    short enumVal = reader.GetInt16(i);
                    ConstructorInfo construct = prop.PropertyType.GetConstructor(new Type[0]);
                    ServerEnum val = (ServerEnum)construct.Invoke(null);
                    val.SetEnum(enumVal);
                    prop.SetValue(entity, val, null);
                }
                else
                    throw new EntityNotFoundException("Unsupported property type: " + propType, null);
            }
        }
コード例 #40
0
    Packet_ServerEntity ToNetworkEntity(ServerPlatform platform, ServerEntity entity)
    {
        Packet_ServerEntity p = new Packet_ServerEntity();
        if (entity.position != null)
        {
            p.Position = ToNetworkEntityPosition(platform, entity.position);
        }
        if (entity.drawModel != null)
        {
            p.DrawModel = new Packet_ServerEntityAnimatedModel();
            p.DrawModel.EyeHeight = platform.FloatToInt(entity.drawModel.eyeHeight * 32);
            p.DrawModel.Model_ = entity.drawModel.model;
            p.DrawModel.ModelHeight = platform.FloatToInt(entity.drawModel.modelHeight * 32);
            p.DrawModel.Texture_ = entity.drawModel.texture;
            p.DrawModel.DownloadSkin = entity.drawModel.downloadSkin ? 1 : 0;
        }
        if (entity.drawName != null)
        {
            p.DrawName_ = new Packet_ServerEntityDrawName();
            p.DrawName_.Name = entity.drawName.name;
            p.DrawName_.Color = entity.drawName.color;
            p.DrawName_.OnlyWhenSelected = entity.drawName.onlyWhenSelected;
            p.DrawName_.ClientAutoComplete = entity.drawName.clientAutoComplete;
        }
        if (entity.drawText != null)
        {
            p.DrawText = new Packet_ServerEntityDrawText();
            p.DrawText.Dx = platform.FloatToInt(entity.drawText.dx * 32);
            p.DrawText.Dy = platform.FloatToInt(entity.drawText.dy * 32);
            p.DrawText.Dz = platform.FloatToInt(entity.drawText.dz * 32);
            p.DrawText.Rotx = platform.FloatToInt(entity.drawText.rotx);
            p.DrawText.Roty = platform.FloatToInt(entity.drawText.roty);
            p.DrawText.Rotz = platform.FloatToInt(entity.drawText.rotz);
            p.DrawText.Text = entity.drawText.text;
        }
        if (entity.push != null)
        {
            p.Push = new Packet_ServerEntityPush();
            p.Push.RangeFloat = platform.FloatToInt(entity.push.range * 32);
        }
        p.Usable = entity.usable;
        if (entity.drawArea != null)
        {
            p.DrawArea = new Packet_ServerEntityDrawArea();
            p.DrawArea.X = entity.drawArea.x;
            p.DrawArea.Y = entity.drawArea.y;
            p.DrawArea.Z = entity.drawArea.z;
            p.DrawArea.Sizex = entity.drawArea.sizex;
            p.DrawArea.Sizey = entity.drawArea.sizey;
            p.DrawArea.Sizez = entity.drawArea.sizez;
            p.DrawArea.VisibleToClientId = entity.drawArea.visibleToClientId;
        }

        return p;
    }
コード例 #41
0
ファイル: World.cs プロジェクト: GodLesZ/svn-dump
		/// <summary>
		///     Event handler for TCP connections.
		/// </summary>
		private void Tcp_SocketConnected(Socket socket) {
			//Keep going until we find an ID for them
			while (true) {
				//Generate an ID
				var worldID = mRng.Next();

				//See if it's unique
				if (!mEntities.ContainsKey(worldID)) {
					//Add them in
					var entity = new ServerEntity(socket, worldID, this, mAsyncPool);
					if (mEntities.TryAdd(worldID, entity)) {
						//DONE!
						Console.WriteLine(worldID + " joined");
						break;
					}
				}
			}
		}
コード例 #42
0
ファイル: Zone.cs プロジェクト: Cakez0r/Cakewalk
 /// <summary>
 /// Add an entity to this zone
 /// </summary>
 public void AddEntity(ServerEntity entity)
 {
     m_entities.Add(entity.WorldID, entity);
 }
コード例 #43
0
ファイル: Zone.cs プロジェクト: Cakez0r/Cakewalk
 /// <summary>
 /// Remove an entity from this zone
 /// </summary>
 public void RemoveEntity(ServerEntity entity)
 {
     if (m_entities.ContainsKey(entity.WorldID))
     {
         m_entities.Remove(entity.WorldID);
     }
 }
コード例 #44
0
    void OnUseWithTool(int player, int x, int y, int z, int tool)
    {
        if (server.modManager.GetBlockName(tool) == "PermissionSign")
        {
            ServerChunk c = server.d_Map.GetChunk(x, y, z);
            if (c == null)
            {
                return;
            }

            if (!server.CheckBuildPrivileges(player, x, y, z))
            {
                return;
            }

            if (!server.PlayerHasPrivilege(player, ServerClientMisc.Privilege.area_add))
            {
                server.SendMessage(player, server.colorError + server.language.Get("Server_CommandInsufficientPrivileges"));
                return;
            }

            ServerEntity e = new ServerEntity();
            e.position = new ServerEntityPositionAndOrientation();
            e.position.x = x + one / 2;
            e.position.y = z;
            e.position.z = y + one / 2;
            e.position.heading = EntityHeading.GetHeading(server.modManager.GetPlayerPositionX(player), server.modManager.GetPlayerPositionY(player), e.position.x, e.position.z);

            e.permissionSign = new ServerEntityPermissionSign();
            e.permissionSign.name = "Admin";
            e.permissionSign.type = PermissionSignType.Group;
            server.AddEntity(x, y, z, e);
        }
    }
コード例 #45
0
ファイル: StumpsHost.cs プロジェクト: Cayan-LLC/stumps
        /// <summary>
        ///     Creates a new instance of a Stumps server.
        /// </summary>
        /// <param name="remoteServerHostName">The host name for the remote server by the Stumps server.</param>
        /// <param name="port">The TCP port used to listen for incomming HTTP requests.</param>
        /// <param name="useSsl"><c>true</c> if the remote server requires SSL.</param>
        /// <param name="autoStart"><c>true</c> to automatically start the Stumps server.</param>
        /// <returns>
        ///     A <see cref="T:Stumps.Server.StumpsServerInstance" /> represeting the new Stumps server.
        /// </returns>
        /// <exception cref="System.ArgumentNullException"><paramref name="remoteServerHostName"/> is null.</exception>
        /// <exception cref="System.ArgumentOutOfRangeException"><paramref name="port"/> exceeds the allowed TCP port range.</exception>
        /// <exception cref="StumpsNetworkException">The port is already in use.</exception>
        public StumpsServerInstance CreateServerInstance(string remoteServerHostName, int port, bool useSsl, bool autoStart)
        {
            if (string.IsNullOrWhiteSpace(remoteServerHostName))
            {
                throw new ArgumentNullException("remoteServerHostName");
            }

            if (port < IPEndPoint.MinPort || port > IPEndPoint.MaxPort)
            {
                throw new ArgumentOutOfRangeException("port");
            }

            if (NetworkInformation.IsPortBeingUsed(port))
            {
                throw new StumpsNetworkException(Resources.PortIsInUseError);
            }

            // Create a new data entity representing the Stumps server
            var serverEntity = new ServerEntity
            {
                AutoStart = autoStart,
                RemoteServerHostName = remoteServerHostName,
                Port = port,
                UseSsl = useSsl,
                ServerId = RandomGenerator.GenerateIdentifier()
            };

            // Persist the server data entity
            _dataAccess.ServerCreate(serverEntity);

            // Create a new service instance from the entity
            UnwrapAndRegisterServer(serverEntity);

            var server = _serverInstances[serverEntity.ServerId];

            if (autoStart)
            {
                server.Start();
            }

            return server;
        }
コード例 #46
0
ファイル: StumpsHost.cs プロジェクト: Cayan-LLC/stumps
        private void UnwrapAndRegisterServer(ServerEntity entity)
        {
            var server = new StumpsServerInstance(_serverFactory, entity.ServerId, _dataAccess)
            {
                AutoStart = entity.AutoStart,
                ListeningPort = entity.Port,
                RemoteServerHostName = entity.RemoteServerHostName,
                UseHttpsForIncommingConnections = entity.UseHttpsForIncommingConnections,
                UseSsl = entity.UseSsl
            };

            _serverInstances.AddOrUpdate(server.ServerId, server, (key, oldServer) => server);
        }
コード例 #47
0
ファイル: DataAccessTests.cs プロジェクト: Cayan-LLC/stumps
        private static DataAccess CreateDataAccessLayerWithProxy()
        {
            var temporaryDirectory = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            Directory.CreateDirectory(temporaryDirectory);

            var dataAccess = new DataAccess(temporaryDirectory);

            var entity = new ServerEntity
            {
                AutoStart = false,
                RemoteServerHostName = SampleHostName,
                Port = 500,
                ServerId = "ABCD",
                UseSsl = false
            };

            dataAccess.ServerCreate(entity);

            return dataAccess;
        }
コード例 #48
0
ファイル: DataAccessTests.cs プロジェクト: Cayan-LLC/stumps
        public DataAccessTests()
        {
            _sampleProxyServer = new ServerEntity
            {
                AutoStart = false,
                RemoteServerHostName = SampleHostName,
                Port = 500,
                ServerId = "ABCD",
                UseSsl = false
            };

            var originalRequest = new HttpRequestEntity()
            {
                HttpMethod = "GET",
                BodyResourceName = null,
                Headers = new List<NameValuePairEntity>(),
                ProtocolVersion = "1.1",
                RawUrl = "/"
            };

            var originalResponse = new HttpResponseEntity()
            {
                BodyResourceName = null,
                Headers = new List<NameValuePairEntity>()
                {
                    new NameValuePairEntity
                    {
                        Name = "Content-Type",
                        Value = "text/plain"
                    }
                },
                RedirectAddress = null,
                StatusCode = 200,
                StatusDescription = "OK"
            };

            var response = new HttpResponseEntity()
            {
                BodyResourceName = null,
                Headers = new List<NameValuePairEntity>()
                {
                    new NameValuePairEntity
                    {
                        Name = "Content-Type",
                        Value = "text/plain"
                    }
                },
                RedirectAddress = null,
                StatusCode = 200,
                StatusDescription = "OK"
            };

            _sampleStump = new StumpEntity
            {
                OriginalRequest = originalRequest,
                OriginalResponse = originalResponse,
                Response = response,
                Rules = new List<RuleEntity>(),
                StumpCategory = "Uncategorized",
                StumpId = "ABCD",
                StumpName = "MyStump"
            };

            _sampleBytes = new byte[]
            {
                1, 2, 3
            };
        }
コード例 #49
0
ファイル: Sign.cs プロジェクト: MagistrAVSH/manicdigger
    void OnUseWithTool(int player, int x, int y, int z, int tool)
    {
        if (server.modManager.GetBlockName(tool) == "Sign")
        {
            ServerChunk c = server.d_Map.GetChunk(x, y, z);
            if (c == null)
            {
                return;
            }

            if (!server.CheckBuildPrivileges(player, x, y, z))
            {
                return;
            }

            ServerEntity e = new ServerEntity();
            e.position = new ServerEntityPositionAndOrientation();
            e.position.x = x + one / 2;
            e.position.y = z;
            e.position.z = y + one / 2;
            e.position.heading = EntityHeading.GetHeading(server.modManager.GetPlayerPositionX(player), server.modManager.GetPlayerPositionY(player), e.position.x, e.position.z);
            e.sign = new ServerEntitySign();
            e.sign.text = "Hello world!";
            server.AddEntity(x, y, z, e);
        }
    }
コード例 #50
0
ファイル: DataAccess.cs プロジェクト: Cayan-LLC/stumps
        /// <summary>
        ///     Creates an entry for a new stumps server.
        /// </summary>
        /// <param name="server">The <see cref="T:Stumps.Server.Data.ServerEntity" /> to create.</param>
        /// <exception cref="System.ArgumentNullException">server</exception>
        public void ServerCreate(ServerEntity server)
        {
            if (server == null)
            {
                throw new ArgumentNullException("server");
            }

            var serverFile = Path.Combine(_storagePath, server.ServerId + DataAccess.StumpsServerFileExtension);
            JsonUtility.SerializeToFile(server, serverFile);

            Directory.CreateDirectory(Path.Combine(_storagePath, server.ServerId));
            Directory.CreateDirectory(Path.Combine(_storagePath, server.ServerId, DataAccess.StumpsPathName));
        }