| /////////////////////////////////////////////////////////////////////////////// |
| // // |
| // Copyright (c) 2000-2019 Ericsson Telecom AB // |
| // // |
| // All rights reserved. This program and the accompanying materials // |
| // are made available under the terms of the Eclipse Public License v2.0 // |
| // which accompanies this distribution, and is available at // |
| // https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html // |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| /////////////////////////////////////////////////////////// |
| // Module: EPTF_CLL_NameService_Definitions |
| // |
| // Purpose: |
| // This module contains type definitions for TTCN-3 EPTF NameService implementation. |
| // |
| // Module Parameters: |
| // tsp_EPTF_NameService_loggingComponentMask - *charstring* - component-type mask for logging, default value: "EPTF_NameService" |
| // tsp_EPTF_NameServiceClient_loggingComponentMask - *charstring* - component-type mask for logging, default value: "EPTF_NameServiceClient" |
| // |
| // Module depends on: |
| // <EPTF_CLL_Base_Definitions> |
| // <EPTF_CLL_Logging_Definitions> |
| // |
| // Current Owner: |
| // Jozsef Gyurusi (ETHJGI) |
| // |
| // Last Review Date: |
| // 2007-12-06 |
| // |
| // Detailed Comments: |
| // This module contains type definitions for TTCN-3 EPTF Name Service implementation. |
| // |
| /////////////////////////////////////////////////////////////// |
| |
| module EPTF_CLL_NameService_Definitions { |
| |
| import from EPTF_CLL_Base_Definitions all; |
| import from EPTF_CLL_Logging_Definitions all; |
| |
| modulepar charstring tsp_EPTF_NameService_loggingComponentMask := "EPTF_NameService"; |
| modulepar charstring tsp_EPTF_NameServiceClient_loggingComponentMask := "EPTF_NameServiceClient"; |
| |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_RegisteredItem |
| // |
| // Purpose: |
| // Type of the registered items |
| // |
| // Elements: |
| // name - *charstring* - name of the registered object |
| // ownerComp - <EPTF_NS_Client_CT> - reference to the component which registered the name |
| // id - *integer* *optional* - a user given id that identifies the registered object in the client component (in the sender component) |
| // |
| // Detailed Comments: |
| // |
| /////////////////////////////////////////////////////////// |
| type record EPTF_NS_RegisteredItem { |
| charstring name, // the name to register |
| EPTF_NS_Client_CT ownerComp, // reference to the component which registered the name |
| integer id optional // a user given id that identifies the registered object in the client component (in the sender component) |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_RegisteredItems |
| // |
| // Purpose: |
| // List of <EPTF_NS_RegisteredItem>-s. The type of the database. |
| // |
| // Elements: |
| // |
| // Detailed Comments: |
| // |
| /////////////////////////////////////////////////////////// |
| type record of EPTF_NS_RegisteredItem EPTF_NS_RegisteredItems; |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_RegisterName |
| // |
| // Purpose: |
| // This record defines the management message EPTF_NS_RegisterName sent/received by the <EPTF_NS_Mgmt_PT> |
| // |
| // Elements: |
| // name - *charstring* - name of the registered object |
| // id - *integer* *optional* - a user given id that identifies the registered object in the client component (in the sender component) |
| // |
| // Detailed Comments: |
| // This message is sent to the NS server component |
| // to register the name |
| // |
| /////////////////////////////////////////////////////////// |
| type record EPTF_NS_RegisterName { |
| charstring name, // the name to register |
| integer id optional // a user given id that identifies the registered object in the client component (in the sender component) |
| // the sender component reference will be read from the sender of the message |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_RegisterNAck |
| // |
| // Purpose: |
| // This record defines the management message EPTF_NS_RegisterNAck sent/received by the <EPTF_NS_Mgmt_PT> |
| // |
| // Elements: |
| // name - *charstring* - name of the registered object |
| // |
| // Detailed Comments: |
| // This message is sent to the NS client component |
| // as a negative response to the register message |
| // |
| /////////////////////////////////////////////////////////// |
| type EPTF_NS_RegisterName EPTF_NS_RegisterNAck; // sent in case of a failed registration to the client |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_DeregisterName |
| // |
| // Purpose: |
| // This record defines the management message EPTF_NS_DeregisterName sent/received by the <EPTF_NS_Mgmt_PT> |
| // |
| // Elements: |
| // name - *charstring* - name of the registered object |
| // |
| // Detailed Comments: |
| // This message is sent to the NS server component |
| // to clear the name from the database |
| // |
| /////////////////////////////////////////////////////////// |
| type record EPTF_NS_DeregisterName { |
| charstring name // the name to register |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_Query |
| // |
| // Purpose: |
| // This record defines the management message EPTF_NS_Query sent/received by the <EPTF_NS_Mgmt_PT> |
| // |
| // Elements: |
| // name - *charstring* - name of the registered object |
| // |
| // Detailed Comments: |
| // This message is sent to the NS server component |
| // to query a registered item by name |
| // |
| /////////////////////////////////////////////////////////// |
| type record EPTF_NS_Query { |
| charstring name // the name to query |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_QueryResp |
| // |
| // Purpose: |
| // This record defines the management message EPTF_NS_QueryResp sent/received by the <EPTF_NS_Mgmt_PT> |
| // |
| // Elements: |
| // name - *charstring* - the name queried |
| // ownerComp - <EPTF_NS_Client_CT> *optional* - component reference of the registerer (owner) (set to omit if name is not found) |
| // id - *integer* - a user given id that identifies the registered object in the client component (in the sender component) (set to omit if name is not found) |
| // |
| // Detailed Comments: |
| // This message is the response for the EPTF_NS_Query message. |
| // If the query fails, i.e. there is no registered item found for |
| // the given name, the fields ownerComp and id are set to omit. |
| // |
| /////////////////////////////////////////////////////////// |
| type record EPTF_NS_QueryResp { |
| charstring name, // the name queried |
| EPTF_NS_Client_CT ownerComp optional, // component reference of the registerer (owner) (set to omit if name is not found) |
| integer id optional // a user given id that identifies the registered object in the client component (in the sender component) (set to omit if name is not found) |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_Bye |
| // |
| // Purpose: |
| // This record defines the management message EPTF_NS_Bye sent/received by the <EPTF_NS_Mgmt_PT> |
| // |
| // Elements: |
| // - |
| // |
| // Detailed Comments: |
| // This message is sent to the NS server component |
| // before the EPTF_NS_Client_CT component terminates |
| // |
| /////////////////////////////////////////////////////////// |
| type record EPTF_NS_Bye { |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_ByeAck |
| // |
| // Purpose: |
| // This record defines the management message EPTF_NS_ByeAck sent/received by the <EPTF_NS_Mgmt_PT> |
| // |
| // Elements: |
| // - |
| // |
| // Detailed Comments: |
| // This message is a response to the <EPTF_NS_ByeAck> message |
| // |
| /////////////////////////////////////////////////////////// |
| type EPTF_NS_Bye EPTF_NS_ByeAck; |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_MgmtMsg |
| // |
| // Purpose: |
| // This union defines the management message type sent/received by the <EPTF_NS_Mgmt_PT> |
| // |
| // Elements: |
| // registerName - <EPTF_NS_RegisterName> - register a name into the NameService |
| // registerNAck - <EPTF_NS_RegisterNAck> - sent in case of a failed registration to the client |
| // deregisterName - <EPTF_NS_DeregisterName> - deregister the name from the NameService |
| // query - <EPTF_NS_Query> - client query a registered object by name |
| // queryResp - <EPTF_NS_QueryResp> - response to the query |
| // bye - <EPTF_NS_Bye> - message sent by the client to notify the name service before it exits |
| // byeAck - <EPTF_NS_ByeAck> - response to the bye |
| // |
| // Detailed Comments: |
| // |
| /////////////////////////////////////////////////////////// |
| type union EPTF_NS_MgmtMsg { |
| EPTF_NS_RegisterName registerName, // register a name into the NameService |
| EPTF_NS_RegisterNAck registerNAck, // sent in case of a failed registration to the client |
| EPTF_NS_DeregisterName deregisterName, // deregister the name from the NameService |
| EPTF_NS_Query query, // client query a registered object by name |
| EPTF_NS_QueryResp queryResp, // response to the query |
| EPTF_NS_Bye bye, // message sent by the client to notify the name service before it exits |
| EPTF_NS_ByeAck byeAck // response to the bye |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_Mgmt_PT |
| // |
| // Purpose: |
| // The management port of EPTF Name Service component |
| // |
| // Elements: |
| // - |
| // |
| // Detailed Comments: |
| // |
| /////////////////////////////////////////////////////////// |
| type port EPTF_NS_Mgmt_PT message { |
| inout EPTF_NS_MgmtMsg; |
| } with {extension "internal"} |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_Client_CT |
| // |
| // Purpose: |
| // The component that implements the EPTF Name Service Client feature |
| // |
| // Elements: |
| // v_NS_Client_initialized - *boolean* - initialized flag to prevent miltiple execution of the init/cleanup functions |
| // EPTF_NS_MgmtIf - <EPTF_NS_Mgmt_PT> - the management port |
| // v_NS_Server - <EPTF_NS_CT> - reference to the NS server component |
| // v_EPTF_NS_Client_def - *default* - the default altstep |
| // v_NameServiceClient_loggingMaskId - *integer* - logging component mask ID |
| // |
| // Detailed Comments: |
| // To use the EPTF Name Service, extend your component with <EPTF_NS_Client_CT> |
| // |
| /////////////////////////////////////////////////////////// |
| type component EPTF_NS_Client_CT extends EPTF_Base_CT, EPTF_Logging_CT { |
| private var boolean v_NS_Client_initialized := false; // initialized flag to prevent miltiple execution of the init/cleanup functions |
| private port EPTF_NS_Mgmt_PT EPTF_NS_Client_MgmtIf; // management interface of EPTF_NS_Client_CT |
| private var EPTF_NS_CT v_NS_Server; // reference to the NS server component |
| private var default v_EPTF_NS_Client_def; |
| |
| // logging |
| private var integer v_NameServiceClient_loggingMaskId := c_EPTF_Logging_invalidMaskId; |
| } |
| |
| /////////////////////////////////////////////////////////// |
| // Type: EPTF_NS_Server_CT |
| // |
| // Purpose: |
| // The component that implements the EPTF Name Service feature |
| // |
| // Elements: |
| // v_NS_initialized - *boolean* - initialized flag to prevent miltiple execution of the init/cleanup functions |
| // EPTF_NS_MgmtIf - <EPTF_NS_Mgmt_PT> - the management port |
| // v_EPTF_NS_RegisteredItems - <EPTF_NS_RegisteredItems> - the database of registered items |
| // v_EPTF_NS_def - *default* - the default altstep |
| // v_NameService_loggingMaskId - *integer* - logging component mask ID |
| // |
| // Detailed Comments: |
| // To use the EPTF Name Service, this component should be created |
| // and its behaviour function should be started on it. |
| // This Name Service component implements the Name Service feature |
| // and Name Service Clients can connect and register/search names in it |
| // |
| /////////////////////////////////////////////////////////// |
| type component EPTF_NS_CT extends EPTF_Base_CT, EPTF_Logging_CT { |
| private var boolean v_NS_initialized := false; |
| private port EPTF_NS_Mgmt_PT EPTF_NS_MgmtIf; // management interface of EPTF_NS_CT |
| private var EPTF_NS_RegisteredItems v_EPTF_NS_RegisteredItems := {}; // the database of registered items |
| private var default v_EPTF_NS_def; |
| |
| // logging |
| private var integer v_NameService_loggingMaskId := c_EPTF_Logging_invalidMaskId; |
| } |
| |
| // cast function to EPTF_Base_CT |
| |
| /////////////////////////////////////////////////////////// |
| // Function: f_EPTF_NS_Client_upcast |
| // |
| // Purpose: |
| // Casts the component type <EPTF_NS_Client_CT> to <EPTF_Base_CT> |
| // |
| // Parameters: |
| // pl_compRef - *in* <EPTF_NS_Client_CT> - reference to the component that should be upcasted |
| // |
| // Return Value: |
| // - |
| // |
| // Errors: |
| // - |
| // |
| // Detailed Comments: |
| // Needed for integration with other EPTF component types, e.g. for <EPTF_Var_CT>. |
| // |
| /////////////////////////////////////////////////////////// |
| public external function f_EPTF_NS_Client_upcast(in EPTF_NS_Client_CT pl_compRef) return EPTF_Base_CT; |
| /////////////////////////////////////////////////////////// |
| // Function: f_EPTF_NS_Client_downcast |
| // |
| // Purpose: |
| // Casts the component type <EPTF_Base_CT> to <EPTF_NS_Client_CT> |
| // |
| // Parameters: |
| // pl_compRef - *in* <EPTF_Base_CT> - reference to the component that should be downcasted |
| // |
| // Return Value: |
| // - |
| // |
| // Errors: |
| // - |
| // |
| // Detailed Comments: |
| // Needed for integration with other EPTF component types, e.g. for <EPTF_Var_CT>. |
| // |
| /////////////////////////////////////////////////////////// |
| public external function f_EPTF_NS_Client_downcast(in EPTF_Base_CT pl_compRef) return EPTF_NS_Client_CT; |
| |
| /////////////////////////////////////////////////////////// |
| // Constant: c_EPTF_NameService_loggingEventClasses |
| // |
| // Purpose: |
| // list of logging event class names used on the NameService |
| // |
| // Detailed Comments: |
| // <EPTF_Logging_EventClassPrefixList> { "Warning", "Debug" } |
| /////////////////////////////////////////////////////////// |
| const EPTF_Logging_EventClassPrefixList c_EPTF_NameService_loggingEventClasses := { "Warning", "Debug" }; |
| |
| /////////////////////////////////////////////////////////// |
| // Constant: c_EPTF_NameService_loggingClassIdx_Warning |
| // |
| // Purpose: |
| // logging class index for Error |
| // |
| // Detailed Comments: |
| // *0* |
| /////////////////////////////////////////////////////////// |
| const integer c_EPTF_NameService_loggingClassIdx_Warning := 0; |
| /////////////////////////////////////////////////////////// |
| // Constant: c_EPTF_NameService_loggingClassIdx_Debug |
| // |
| // Purpose: |
| // logging class index for Error |
| // |
| // Detailed Comments: |
| // *1* |
| /////////////////////////////////////////////////////////// |
| const integer c_EPTF_NameService_loggingClassIdx_Debug := 1; |
| |
| |
| |
| } // end of module |