// Copyright (c) 2013 DMTF.  All rights reserved.
   [Version ( "2.39.0" ), 
    UMLPackagePath ( "CIM::Core::Service" ), 
    Description ( 
       "ProtocolService represents represents an application layer "
       "service available on a hosting system. Often times, the "
       "service name reflects the employed/supported communication "
       "protocol (e.g. file transfer - FTP), however in some other "
       "cases it does not. (e.g. mail notification service - biff). "
       "Access to the service is modeled with one or more instances of "
       "ProtocolEndpoint. This class represents the availability of "
       "the function on the system. Issuing a stop to this instance is "
       "equivalent to disabling the functionality and making it "
       "unavailable to users. Thus a stop of this service will result "
       "in the removing of all ProtocolEndpoints which are associated "
       "with the instance via ServicAccessBySAP. The functionality can "
       "be made available again by issuing a start to the service. "
       "This class contains service definitions which are currently "
       "needed. Future extensions are expected." )]
class CIM_ProtocolService : CIM_Service {

      [Description ( 
          "The protocol this service provides. Values defined for "
          "this property are limited to the known use cases where "
          "it is desirable to represent the ability to enable or "
          "disable the functionality on the system." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", 
          "8..32767", "32768..65535" }, 
       Values { "Unknown", "Other", "SSH", "Telnet", "CLP", 
          "CIM-XML", "WS-Management", "CIM-RS", "DMTF Reserved", 
          "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_ProtocolService.OtherProtocol" }]
   uint16 Protocol;

      [Description ( 
          "If the Protocol property is set to 1 \"Other\" then free "
          "form string providing more information about the "
          "protocol. If not set to 1, this string has no meaning." ), 
       ModelCorrespondence { "CIM_ProtocolService.Protocol" }]
   string OtherProtocol;

      [Write, Description ( 
          "MaxConnections specifies the maximum number of "
          "connections currently allowed by the service. The values "
          "32768..65535 are DMTF Reserved." ), 
       MaxValue ( 65535 )]
   uint16 MaxConnections = 1;

      [Description ( 
          "CurrentActiveConnections indicates the number of "
          "sessions currently established with the protocol "
          "service. A value of null for this property shall "
          "indicate the number of active sessions is unknown. A "
          "value of zero shall indicate there are no active "
          "sessions. Any other value shall correspond to the number "
          "of active sessions." ), 
       MinValue ( 0 ), 
       MaxValue ( 65535 )]
   uint16 CurrentActiveConnections;


      [Description ( 
          "Create a CIM_TCPProtocoEndpoint instance and associate "
          "it with this CIM_ProtocolService instance via an "
          "instance of CIM_ServiceAccessBySAP. The newly created "
          "instance of CIM_TCPProtocolEndpoint will be for the port "
          "specified. When the CIM_IPProtocolEndpoint is not "
          "specified, the method will create an instance of "
          "CIM_HostedAccessPoint which associates the newly created "
          "CIM_TCPProtocolEndpoint instance with the instance of "
          "CIM_ComputerSystem with which this instance is "
          "associated via an instance of CIM_HostedService (the "
          "scoping system) It will also create instances of "
          "CIM_BindsTo which associate the created "
          "CIM_TCPProtocolEndpoint with each instance "
          "CIM_IPProtocolEndpoint which is associated with the "
          "scoping system. When an instance of "
          "CIM_IPProtocolEndpoint is specified, the "
          "CIM_HostedAccessPoint will associate the "
          "CIM_TCPProtocolEndpoint with the same instance which is "
          "associated with the CIM_IPProtocolEndpoint. In addition, "
          "the implementation will create a single instance of "
          "CIM_BindsTo that associates the CIM_TCPProtocolEndpoint "
          "with the specified instance of CIM_IPProtocolEndpoint. "
          "For each instance of CIM_BindsTo created by this method, "
          "the value of the Dependent property will be a reference "
          "to the newly created instance of "
          "CIM_TCPProtocolEndpoint. An extrinsic method is required "
          "in order to provide atomic creation of multiple, related "
          "instances. Prior to creating the instances, the "
          "implementation will verify that a "
          "CIM_TCPProtocolEndpoint instance can be created and "
          "associated with this instance." ), 
       ValueMap { "0", "1", "2", "4", "..", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Error Occurred", "Invalid Port", "DMTF Reserved", 
          "Vendor Reserved" }]
   uint32 ListenOnPort(
         [Required, Description ( "The desired listening port." )]
      uint32 PortNumber, 
         [Description ( 
             "A specific CIM_IPProtocolEndpoint on which the "
             "service will listen to the specified port." )]
      CIM_IPProtocolEndpoint REF IPEndpoint, 
         [IN ( false ), OUT, Description ( 
             "The created TCPProtocolEndpoint." )]
      CIM_TCPProtocolEndpoint REF TCPEndpoint);

      [Description ( 
          "Create a CIM_TCPProtocoEndpoint instance and associate "
          "it with this CIM_ProtocolService instance via an "
          "instance of CIM_ServiceAccessBySAP. The newly created "
          "instance of CIM_TCPProtocolEndpoint shall be for the "
          "port and ProtocolIFType specified. When the "
          "CIM_IPProtocolEndpoint is not specified, the method "
          "shall create an instance of CIM_HostedAccessPoint which "
          "associates the newly created CIM_TCPProtocolEndpoint "
          "instance with the instance of CIM_ComputerSystem with "
          "which this instance is associated via an instance of "
          "CIM_HostedService (the scoping system). The "
          "implementation shall also create instances of "
          "CIM_BindsTo which associate the created "
          "CIM_TCPProtocolEndpoint with each instance "
          "CIM_IPProtocolEndpoint which is associated with the "
          "scoping system (in other words the listening port is "
          "bound to all IPs). When an instance of "
          "CIM_IPProtocolEndpoint is specified, the "
          "CIM_HostedAccessPoint shall associate the "
          "CIM_TCPProtocolEndpoint with the same instance which is "
          "associated with the CIM_IPProtocolEndpoint (andthe "
          "implementation shall only bind to the IP Address "
          "represented by the CIM_IPProtocolEndpoint). In addition, "
          "the implementation shall create a single instance of "
          "CIM_BindsTo that associates the CIM_TCPProtocolEndpoint "
          "with the specified instance of CIM_IPProtocolEndpoint. "
          "For each instance of CIM_BindsTo created by this method, "
          "the value of the Dependent property will be a reference "
          "to the newly created instance of "
          "CIM_TCPProtocolEndpoint. An extrinsic method is required "
          "in order to provide atomic creation of multiple, related "
          "instances. Prior to creating the instances, the "
          "implementation shall verify that a "
          "CIM_TCPProtocolEndpoint instance can be created and "
          "associated with this instance." ), 
       ValueMap { "0", "1", "2", "4", "..", "32768..65535" }, 
       Values { "Completed with No Error", "Not Supported", 
          "Error Occurred", "Invalid Port", "DMTF Reserved", 
          "Vendor Reserved" }]
   uint32 ListenOnPortIF(
         [Required, Description ( "The desired listening port." )]
      uint32 PortNumber, 
         [Description ( 
             "A specific CIM_IPProtocolEndpoint on which the "
             "service will listen to the specified port." )]
      CIM_IPProtocolEndpoint REF IPEndpoint, 
         [IN ( false ), OUT, Description ( 
             "The created TCPProtocolEndpoint." )]
      CIM_TCPProtocolEndpoint REF TCPEndpoint, 
         [Required, Description ( "The ProtocolIFType" ), 
          ValueMap { "1", "225..4095", "4111", "4200", "4201", 
             "4202", "4203", "4204", "4205", "4300", "4400", 
             "4401", "4402", "4403", "4404", "4405", "4406", 
             "4301..32767" }, 
          Values { "Other", "IANA Reserved", "TCP", "NFS", 
             "CIFS", "DAFS", "WebDAV", "HTTP", "FTP", "NDMP", 
             "Telnet", "SSH", "SM CLP", "SMTP", "LDAP", "RDP", 
             "HTTPS", "DMTF Reserved" }]
      uint32 ProtocolIFType);

};
