diff options
Diffstat (limited to 'OpenSim/Services')
-rw-r--r-- | OpenSim/Services/GridService/GridService.cs | 140 |
1 files changed, 118 insertions, 22 deletions
diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index 11897f8..aab403a 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs | |||
@@ -85,20 +85,39 @@ namespace OpenSim.Services.GridService | |||
85 | if (MainConsole.Instance != null) | 85 | if (MainConsole.Instance != null) |
86 | { | 86 | { |
87 | MainConsole.Instance.Commands.AddCommand("Regions", true, | 87 | MainConsole.Instance.Commands.AddCommand("Regions", true, |
88 | "deregister region", | 88 | "deregister region id", |
89 | "deregister region <Region UUID>", | 89 | "deregister region id <Region UUID>", |
90 | "Deregister a region manually.", | 90 | "Deregister a region manually.", |
91 | String.Empty, | 91 | String.Empty, |
92 | HandleDeregisterRegion); | 92 | HandleDeregisterRegion); |
93 | 93 | ||
94 | // A messy way of stopping this command being added if we are in standalone (since the simulator | ||
95 | // has an identically named command | ||
96 | // | ||
97 | // XXX: We're relying on the OpenSimulator version being registered first, which is not well defined. | ||
98 | if (MainConsole.Instance.Commands.Resolve(new string[] { "show", "regions" }).Length == 0) | ||
99 | MainConsole.Instance.Commands.AddCommand("Regions", true, | ||
100 | "show regions", | ||
101 | "show regions", | ||
102 | "Show details on all regions", | ||
103 | String.Empty, | ||
104 | HandleShowRegions); | ||
105 | |||
94 | MainConsole.Instance.Commands.AddCommand("Regions", true, | 106 | MainConsole.Instance.Commands.AddCommand("Regions", true, |
95 | "show region", | 107 | "show region name", |
96 | "show region <Region name>", | 108 | "show region name <Region name>", |
97 | "Show details on a region", | 109 | "Show details on a region", |
98 | String.Empty, | 110 | String.Empty, |
99 | HandleShowRegion); | 111 | HandleShowRegion); |
100 | 112 | ||
101 | MainConsole.Instance.Commands.AddCommand("Regions", true, | 113 | MainConsole.Instance.Commands.AddCommand("Regions", true, |
114 | "show region at", | ||
115 | "show region at <x-coord> <y-coord>", | ||
116 | "Show details on a region at the given co-ordinate.", | ||
117 | "For example, show region at 1000 1000", | ||
118 | HandleShowRegionAt); | ||
119 | |||
120 | MainConsole.Instance.Commands.AddCommand("Regions", true, | ||
102 | "set region flags", | 121 | "set region flags", |
103 | "set region flags <Region name> <flags>", | 122 | "set region flags <Region name> <flags>", |
104 | "Set database flags for region", | 123 | "Set database flags for region", |
@@ -504,13 +523,13 @@ namespace OpenSim.Services.GridService | |||
504 | 523 | ||
505 | private void HandleDeregisterRegion(string module, string[] cmd) | 524 | private void HandleDeregisterRegion(string module, string[] cmd) |
506 | { | 525 | { |
507 | if (cmd.Length != 3) | 526 | if (cmd.Length != 4) |
508 | { | 527 | { |
509 | MainConsole.Instance.Output("Syntax: degregister region <Region UUID>"); | 528 | MainConsole.Instance.Output("Syntax: degregister region id <Region UUID>"); |
510 | return; | 529 | return; |
511 | } | 530 | } |
512 | 531 | ||
513 | string rawRegionUuid = cmd[2]; | 532 | string rawRegionUuid = cmd[3]; |
514 | UUID regionUuid; | 533 | UUID regionUuid; |
515 | 534 | ||
516 | if (!UUID.TryParse(rawRegionUuid, out regionUuid)) | 535 | if (!UUID.TryParse(rawRegionUuid, out regionUuid)) |
@@ -540,36 +559,113 @@ namespace OpenSim.Services.GridService | |||
540 | return; | 559 | return; |
541 | } | 560 | } |
542 | 561 | ||
562 | private void HandleShowRegions(string module, string[] cmd) | ||
563 | { | ||
564 | if (cmd.Length != 2) | ||
565 | { | ||
566 | MainConsole.Instance.Output("Syntax: show regions"); | ||
567 | return; | ||
568 | } | ||
569 | |||
570 | List<RegionData> regions = m_Database.Get(int.MinValue, int.MinValue, int.MaxValue, int.MaxValue, UUID.Zero); | ||
571 | |||
572 | OutputRegionsToConsoleSummary(regions); | ||
573 | } | ||
574 | |||
575 | |||
543 | private void HandleShowRegion(string module, string[] cmd) | 576 | private void HandleShowRegion(string module, string[] cmd) |
544 | { | 577 | { |
545 | if (cmd.Length != 3) | 578 | if (cmd.Length != 4) |
546 | { | 579 | { |
547 | MainConsole.Instance.Output("Syntax: show region <region name>"); | 580 | MainConsole.Instance.Output("Syntax: show region name <region name>"); |
548 | return; | 581 | return; |
549 | } | 582 | } |
550 | List<RegionData> regions = m_Database.Get(cmd[2], UUID.Zero); | 583 | |
584 | string regionName = cmd[3]; | ||
585 | |||
586 | List<RegionData> regions = m_Database.Get(regionName, UUID.Zero); | ||
551 | if (regions == null || regions.Count < 1) | 587 | if (regions == null || regions.Count < 1) |
552 | { | 588 | { |
553 | MainConsole.Instance.Output("Region not found"); | 589 | MainConsole.Instance.Output("No region with name {0} found", regionName); |
554 | return; | 590 | return; |
555 | } | 591 | } |
556 | 592 | ||
557 | foreach (RegionData r in regions) | 593 | OutputRegionsToConsole(regions); |
594 | } | ||
595 | |||
596 | private void HandleShowRegionAt(string module, string[] cmd) | ||
597 | { | ||
598 | if (cmd.Length != 5) | ||
558 | { | 599 | { |
559 | OpenSim.Data.RegionFlags flags = (OpenSim.Data.RegionFlags)Convert.ToInt32(r.Data["flags"]); | 600 | MainConsole.Instance.Output("Syntax: show region at <x-coord> <y-coord>"); |
601 | return; | ||
602 | } | ||
603 | |||
604 | int x, y; | ||
605 | if (!int.TryParse(cmd[3], out x)) | ||
606 | { | ||
607 | MainConsole.Instance.Output("x-coord must be an integer"); | ||
608 | return; | ||
609 | } | ||
560 | 610 | ||
561 | ConsoleDisplayList dispList = new ConsoleDisplayList(); | 611 | if (!int.TryParse(cmd[4], out y)) |
562 | dispList.AddRow("Region Name", r.RegionName); | 612 | { |
563 | dispList.AddRow("Region ID", r.RegionID); | 613 | MainConsole.Instance.Output("y-coord must be an integer"); |
564 | dispList.AddRow("Location", string.Format("{0},{1}", r.coordX, r.coordY)); | 614 | return; |
565 | dispList.AddRow("URI", r.Data["serverURI"]); | 615 | } |
566 | dispList.AddRow("Owner ID", r.Data["owner_uuid"]); | ||
567 | dispList.AddRow("Flags", flags); | ||
568 | 616 | ||
569 | MainConsole.Instance.Output(dispList.ToString()); | 617 | RegionData region = m_Database.Get(x * (int)Constants.RegionSize, y * (int)Constants.RegionSize, UUID.Zero); |
618 | if (region == null) | ||
619 | { | ||
620 | MainConsole.Instance.OutputFormat("No region found at {0},{1}", x, y); | ||
621 | return; | ||
570 | } | 622 | } |
571 | 623 | ||
572 | return; | 624 | OutputRegionToConsole(region); |
625 | } | ||
626 | |||
627 | private void OutputRegionToConsole(RegionData r) | ||
628 | { | ||
629 | OpenSim.Data.RegionFlags flags = (OpenSim.Data.RegionFlags)Convert.ToInt32(r.Data["flags"]); | ||
630 | |||
631 | ConsoleDisplayList dispList = new ConsoleDisplayList(); | ||
632 | dispList.AddRow("Region Name", r.RegionName); | ||
633 | dispList.AddRow("Region ID", r.RegionID); | ||
634 | dispList.AddRow("Location", string.Format("{0},{1}", r.coordX, r.coordY)); | ||
635 | dispList.AddRow("URI", r.Data["serverURI"]); | ||
636 | dispList.AddRow("Owner ID", r.Data["owner_uuid"]); | ||
637 | dispList.AddRow("Flags", flags); | ||
638 | |||
639 | MainConsole.Instance.Output(dispList.ToString()); | ||
640 | } | ||
641 | |||
642 | private void OutputRegionsToConsole(List<RegionData> regions) | ||
643 | { | ||
644 | foreach (RegionData r in regions) | ||
645 | OutputRegionToConsole(r); | ||
646 | } | ||
647 | |||
648 | private void OutputRegionsToConsoleSummary(List<RegionData> regions) | ||
649 | { | ||
650 | ConsoleDisplayTable dispTable = new ConsoleDisplayTable(); | ||
651 | dispTable.AddColumn("Name", 16); | ||
652 | dispTable.AddColumn("ID", 36); | ||
653 | dispTable.AddColumn("Position", 11); | ||
654 | dispTable.AddColumn("Owner ID", 36); | ||
655 | dispTable.AddColumn("Flags", 60); | ||
656 | |||
657 | foreach (RegionData r in regions) | ||
658 | { | ||
659 | OpenSim.Data.RegionFlags flags = (OpenSim.Data.RegionFlags)Convert.ToInt32(r.Data["flags"]); | ||
660 | dispTable.AddRow( | ||
661 | r.RegionName, | ||
662 | r.RegionID.ToString(), | ||
663 | string.Format("{0},{1}", r.coordX, r.coordY), | ||
664 | r.Data["owner_uuid"].ToString(), | ||
665 | flags.ToString()); | ||
666 | } | ||
667 | |||
668 | MainConsole.Instance.Output(dispTable.ToString()); | ||
573 | } | 669 | } |
574 | 670 | ||
575 | private int ParseFlags(int prev, string flags) | 671 | private int ParseFlags(int prev, string flags) |