PageRenderTime 53ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/base/Applications/Network/DomainName/DomainName.cs

#
C# | 97 lines | 72 code | 14 blank | 11 comment | 6 complexity | 0e0235acb04ce53cfd7f20411fa1f7af MD5 | raw file
  1. ////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Microsoft Research Singularity
  4. //
  5. // Copyright (c) Microsoft Corporation. All rights reserved.
  6. //
  7. // Note: Simple Singularity test program.
  8. //
  9. using System;
  10. using System.Diagnostics;
  11. using System.Net.IP;
  12. using Microsoft.Singularity;
  13. using Microsoft.Singularity.Channels;
  14. using Microsoft.Singularity.Directory;
  15. using NetStack.Contracts;
  16. using NetStack.Channels.Public;
  17. using Microsoft.Contracts;
  18. using Microsoft.SingSharp.Reflection;
  19. using Microsoft.Singularity.Applications;
  20. using Microsoft.Singularity.Io;
  21. using Microsoft.Singularity.Configuration;
  22. [assembly: Transform(typeof(ApplicationResourceTransform))]
  23. namespace Microsoft.Singularity.Applications.Network
  24. {
  25. [ConsoleCategory(HelpMessage="Change network routing information", DefaultAction=true)]
  26. internal class Parameters {
  27. [InputEndpoint("data")]
  28. public readonly TRef<UnicodePipeContract.Exp:READY> Stdin;
  29. [OutputEndpoint("data")]
  30. public readonly TRef<UnicodePipeContract.Imp:READY> Stdout;
  31. [Endpoint]
  32. public readonly TRef<IPContract.Imp:Start> ipRef;
  33. [StringParameter( "n", Default=null, HelpMessage="new domain name")]
  34. internal string name;
  35. reflective internal Parameters();
  36. internal int AppMain() {
  37. DomainName.AppMain(this);
  38. return 0;
  39. }
  40. }
  41. /// <summary>
  42. /// Class for configuring Domain Name.
  43. /// </summary>
  44. public class DomainName
  45. {
  46. internal static int AppMain(Parameters! config)
  47. {
  48. IPContract.Imp ipConn = ((!)config.ipRef).Acquire();
  49. if (ipConn == null) {
  50. Console.WriteLine("Could not initialize IP endpoint.");
  51. return 1;
  52. }
  53. ipConn.RecvReady();
  54. try {
  55. if (config.name == null) {
  56. char[]! in ExHeap repDomain;
  57. ipConn.SendGetDomainName();
  58. ipConn.RecvDomainName(out repDomain);
  59. Console.WriteLine(Bitter.ToString2(repDomain));
  60. delete repDomain;
  61. }
  62. else {
  63. ipConn.SendSetDomainName(Bitter.FromString2(config.name));
  64. switch receive {
  65. case ipConn.Err():
  66. Console.WriteLine("Error setting domain name");
  67. return 1; // failure
  68. case ipConn.OK():
  69. Console.WriteLine("Set domain name successfully");
  70. break;
  71. case ipConn.ChannelClosed():
  72. Console.WriteLine("Error setting domain name (channel closed)");
  73. return 1; // failure
  74. }
  75. }
  76. }
  77. finally {
  78. delete ipConn;
  79. }
  80. return 0; // success
  81. }
  82. } // end class DomainName
  83. }