111 lines
2.6 KiB
Plaintext
111 lines
2.6 KiB
Plaintext
module RSRES {
|
|
|
|
/* Implementation of the REmote Sim RESt (RSRES) JSON data types in TTCN-3.
|
|
* (C) 2019 by Harald Welte <laforge@gnumonks.org>
|
|
* All rights reserved.
|
|
*
|
|
* Released under the terms of GNU General Public License, Version 2 or
|
|
* (at your option) any later version.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*
|
|
*/
|
|
|
|
import from RSPRO all;
|
|
|
|
/* resembles "enum remsim_server_client_fsm_state" */
|
|
type enumerated ConnectionState {
|
|
INIT,
|
|
ESTABLISHED,
|
|
CONNECTED_CLIENT,
|
|
CONNECTED_BANKD
|
|
};
|
|
|
|
type record JsBank {
|
|
charstring peer,
|
|
ConnectionState state,
|
|
ComponentIdentity component_id,
|
|
BankId bankId,
|
|
SlotNumber numberOfSlots
|
|
};
|
|
type record of JsBank JsBanks;
|
|
|
|
template JsBank tr_JsBank(template ConnectionState state,
|
|
template ComponentIdentity comp_id,
|
|
template BankId bank_id,
|
|
template SlotNumber num_of_slots) := {
|
|
peer := ?,
|
|
state := state,
|
|
component_id := comp_id,
|
|
bankId := bank_id,
|
|
numberOfSlots := num_of_slots
|
|
}
|
|
|
|
type record JsClient {
|
|
charstring peer,
|
|
ConnectionState state,
|
|
ComponentIdentity component_id
|
|
};
|
|
type record of JsClient JsClients;
|
|
|
|
template JsClient tr_JsClient(template ConnectionState state,
|
|
template ComponentIdentity comp_id) := {
|
|
peer := ?,
|
|
state := state,
|
|
component_id := comp_id
|
|
}
|
|
|
|
/* resembles "enum slot_mapping_state" */
|
|
type enumerated SlotmapState {
|
|
NEW,
|
|
UNACKNOWLEDGED,
|
|
ACTIVE,
|
|
DELETE_REQ,
|
|
DELETING
|
|
};
|
|
|
|
type record JsSlotmap {
|
|
BankSlot bank,
|
|
ClientSlot client,
|
|
SlotmapState state optional
|
|
};
|
|
type record of JsSlotmap JsSlotmaps;
|
|
|
|
template (value) JsSlotmap ts_JsSlotmap(template (value) BankSlot bslot,
|
|
template (value) ClientSlot cslot,
|
|
template (omit) SlotmapState state := omit) := {
|
|
bank := bslot,
|
|
client := cslot,
|
|
state := state
|
|
}
|
|
template JsSlotmap tr_JsSlotmap(template BankSlot bslot,
|
|
template ClientSlot cslot,
|
|
template SlotmapState state := ?) := {
|
|
bank := bslot,
|
|
client := cslot,
|
|
state := state
|
|
}
|
|
|
|
|
|
|
|
/* root JSON type expressing what remsim-server can return */
|
|
type record JsRoot {
|
|
JsClients clients optional,
|
|
JsBanks banks optional,
|
|
JsSlotmaps slotmaps optional
|
|
};
|
|
|
|
external function f_enc_JsRoot(in JsRoot inp) return octetstring
|
|
with { extension "prototype(convert) encode(JSON)" }
|
|
external function f_dec_JsRoot(in octetstring inp) return JsRoot
|
|
with { extension "prototype(convert) decode(JSON)" }
|
|
|
|
external function f_enc_JsSlotmap(in JsSlotmap inp) return octetstring
|
|
with { extension "prototype(convert) encode(JSON)" }
|
|
external function f_dec_JsSlotmap(in octetstring inp) return JsSlotmap
|
|
with { extension "prototype(convert) decode(JSON)" }
|
|
|
|
|
|
|
|
} with { encode "JSON" }
|