The unified diff between revisions [01477beb..] and [9b3b2d4f..] is displayed below. It can also be downloaded as a raw diff.
#
#
# delete "examples/dsa/Makefile.local"
#
# delete "examples/dsa/echo/README"
#
# delete "examples/dsa/local.gpr"
#
# add_dir "corba_bis"
#
# add_dir "corba_bis/all_exceptions"
#
# add_dir "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_0"
#
# add_dir "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_1"
#
# add_dir "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_2"
#
# add_dir "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_3"
#
# add_dir "corba_bis/benchs"
#
# add_dir "corba_bis/benchs/CORBA_BENCHS_0"
#
# add_dir "corba_bis/code_sets"
#
# add_dir "corba_bis/code_sets/CODE_SETS_0"
#
# add_dir "corba_bis/code_sets/CODE_SETS_1"
#
# add_dir "corba_bis/domainmanager"
#
# add_dir "corba_bis/domainmanager/DOMAINMANAGER_0"
#
# add_dir "corba_bis/harness"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_0"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_1"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_2"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_3"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_4"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_5"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_6"
#
# add_dir "corba_bis/harness/CORBA_HARNESS_7"
#
# add_dir "corba_bis/interop"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_0"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_1"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_2"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_3"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_4"
#
# add_dir "corba_bis/interop/CORBA_INTEROP_5"
#
# add_dir "corba_bis/local"
#
# add_dir "corba_bis/local/LOCAL_0"
#
# add_dir "corba_bis/location_forwarding"
#
# add_dir "corba_bis/location_forwarding/LOCATION_FORWARDING_0"
#
# add_dir "corba_bis/location_forwarding/LOCATION_FORWARDING_1"
#
# add_dir "corba_bis/object"
#
# add_dir "corba_bis/object/OBJECT_0"
#
# add_dir "corba_bis/orb_init"
#
# add_dir "corba_bis/orb_init/ORB_INIT_0"
#
# add_dir "corba_bis/performance"
#
# add_dir "corba_bis/performance/CORBA_PERFORMANCE_0"
#
# add_dir "corba_bis/portableinterceptor"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_0"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_2"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_3"
#
# add_dir "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_4"
#
# add_dir "corba_bis/portableserver"
#
# add_dir "corba_bis/portableserver/PORTABLESERVER_0"
#
# add_dir "corba_bis/portableserver/PORTABLESERVER_1"
#
# add_dir "corba_bis/portableserver/PORTABLESERVER_2"
#
# add_dir "corba_bis/rtcorba-rtcurrent"
#
# add_dir "corba_bis/rtcorba-rtcurrent/RTCURRENT_0"
#
# add_dir "corba_bis/rtcorba-rtorb"
#
# add_dir "corba_bis/rtcorba-rtorb/RTORB_0"
#
# add_dir "corba_bis/rtcorba-rtpoa"
#
# add_dir "corba_bis/rtcorba-rtpoa/RTPOA_0"
#
# add_dir "corba_bis/shutdown"
#
# add_dir "corba_bis/shutdown/SHUTDOWN_0"
#
# add_dir "corba_bis/shutdown/SHUTDOWN_1"
#
# add_dir "core_bis"
#
# add_dir "core_bis/chained_lists"
#
# add_dir "core_bis/chained_lists/CHAINED_LIST_0"
#
# add_dir "core_bis/dynamic_dict"
#
# add_dir "core_bis/dynamic_dict/DYNAMIC_DICT_0"
#
# add_dir "core_bis/fixed_point"
#
# add_dir "core_bis/fixed_point/FIXED_0"
#
# add_dir "core_bis/initialization"
#
# add_dir "core_bis/initialization/INIT_0"
#
# add_dir "core_bis/initialization/INIT_1"
#
# add_dir "core_bis/initialization/INIT_2"
#
# add_dir "core_bis/initialization/INIT_3"
#
# add_dir "core_bis/initialization/INIT_4"
#
# add_dir "core_bis/obj_adapters"
#
# add_dir "core_bis/obj_adapters/OA_0"
#
# add_dir "core_bis/obj_adapters/OA_1"
#
# add_dir "core_bis/poa"
#
# add_dir "core_bis/poa/POA_0"
#
# add_dir "core_bis/random"
#
# add_dir "core_bis/random/RANDOM_0"
#
# add_dir "core_bis/sync_policies"
#
# add_dir "core_bis/sync_policies/CORE_SYNC_POLICIES_0"
#
# add_dir "core_bis/tasking"
#
# add_dir "core_bis/tasking/TASK_0"
#
# add_dir "core_bis/tasking/TASK_1"
#
# add_dir "core_bis/tasking/TASK_2"
#
# add_dir "core_bis/tasking/TASK_3"
#
# add_dir "core_bis/uri_encoding"
#
# add_dir "core_bis/uri_encoding/URI_ENCODING_0"
#
# add_dir "cos_bis"
#
# add_dir "cos_bis/ir"
#
# add_dir "cos_bis/ir/IR_0"
#
# add_dir "cos_bis/naming"
#
# add_dir "cos_bis/naming/NAMING_0"
#
# add_dir "cos_bis/time"
#
# add_dir "cos_bis/time/TIME_0"
#
# add_dir "examples/dsa/connections"
#
# add_dir "examples/dsa/demo"
#
# add_dir "examples/dsa/mailboxes"
#
# add_dir "examples_bis"
#
# add_dir "examples_bis/corba-all_functions"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_0"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_1"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_2"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_3"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_4"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_5"
#
# add_dir "examples_bis/corba-all_functions/ALL_FUNCTIONS_6"
#
# add_dir "examples_bis/corba-all_types"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_0"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_1"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_2"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_3"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_4"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_5"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_6"
#
# add_dir "examples_bis/corba-all_types/ALL_TYPES_7"
#
# add_dir "examples_bis/corba-echo"
#
# add_dir "examples_bis/corba-echo/ECHO_0"
#
# add_dir "examples_bis/corba-echo/ECHO_1"
#
# add_dir "examples_bis/corba-echo/ECHO_2"
#
# add_dir "examples_bis/corba-echo/ECHO_3"
#
# add_dir "examples_bis/corba-echo/ECHO_4"
#
# add_dir "examples_bis/corba-echo/ECHO_5"
#
# add_dir "examples_bis/corba-echo/ECHO_6"
#
# add_dir "examples_bis/corba-echo/ECHO_7"
#
# add_dir "examples_bis/corba-random"
#
# add_dir "examples_bis/corba-random/CORBA_RANDOM_0"
#
# add_dir "examples_bis/corba-random/CORBA_RANDOM_1"
#
# add_dir "examples_bis/corba-rtcorba-client_propagated"
#
# add_dir "examples_bis/corba-rtcorba-client_propagated/RTCORBA_CLIENT_PROPAGATED_0"
#
# add_dir "examples_bis/corba-rtcorba-dhb"
#
# add_dir "examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0"
#
# add_dir "examples_bis/corba-rtcorba-rtcosscheduling"
#
# add_dir "examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0"
#
# add_dir "examples_bis/corba-rtcorba-server_declared"
#
# add_dir "examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_0"
#
# add_dir "examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_1"
#
# add_dir "examples_bis/corba-secure_echo"
#
# add_dir "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0"
#
# add_dir "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1"
#
# add_dir "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2"
#
# add_dir "examples_bis/corba-send"
#
# add_dir "examples_bis/corba-send/CORBA_MIOP_0"
#
# add_dir "examples_bis/moma"
#
# add_dir "examples_bis/moma/MOMA_0"
#
# add_dir "examples_bis/moma/MOMA_1"
#
# add_dir "examples_bis/polyorb"
#
# add_dir "examples_bis/polyorb/POLYORB_CORE_0"
#
# add_dir "examples_bis/polyorb/POLYORB_CORE_1"
#
# add_dir "examples_bis/polyorb/POLYORB_CORE_2"
#
# add_dir "examples_bis/polyorb/POLYORB_CORE_3"
#
# add_dir "testsuite/corba/performance/java"
#
# add_file "README.DSA"
# content [f5e0679fe90dff7879b0722355320d02e1de1e06]
#
# add_file "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_0/test.py"
# content [02b4bc3f8ff05ad994890748c600e1c894841eb7]
#
# add_file "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_1/test.py"
# content [3bceede77661af46ccccc1f3d84a9b62f4b7e6bd]
#
# add_file "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_2/test.py"
# content [065d4ded6344ad6e938171fcaea627c0629d8b9f]
#
# add_file "corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_3/test.py"
# content [1edc10f2a3e43cd24af64e3f1a1e04cff5e7b5a6]
#
# add_file "corba_bis/benchs/CORBA_BENCHS_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/benchs/CORBA_BENCHS_0/test.py"
# content [7208b2de5b0b61063f72adb210b762648e7e3b02]
#
# add_file "corba_bis/code_sets/CODE_SETS_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/code_sets/CODE_SETS_0/test.py"
# content [025bd2d387115a002d157efe46c2285c4f59622d]
#
# add_file "corba_bis/code_sets/CODE_SETS_1/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/code_sets/CODE_SETS_1/test.py"
# content [48ce89ba8afb85a55f9ec222b0c4243422d54f29]
#
# add_file "corba_bis/domainmanager/DOMAINMANAGER_0/test.py"
# content [33b6110d5102fa0a0c251600e0a1ceca16709ab4]
#
# add_file "corba_bis/harness/CORBA_HARNESS_0/test.py"
# content [ac082d9b2e3beadbb9ae7e6f93b2cdd87f6a3048]
#
# add_file "corba_bis/harness/CORBA_HARNESS_1/test.py"
# content [45e8fd2ef6da1fffb74feaac5b6a7b019d4d9384]
#
# add_file "corba_bis/harness/CORBA_HARNESS_2/test.py"
# content [d7fef518a6aa9dab4f94cc7bb63c03a945a644f9]
#
# add_file "corba_bis/harness/CORBA_HARNESS_3/test.py"
# content [162fb2e48de6005e7dc1692948f4464bb6601027]
#
# add_file "corba_bis/harness/CORBA_HARNESS_4/test.py"
# content [a0d1cc6638f3f15f3a1de9d8ee99d7352071545f]
#
# add_file "corba_bis/harness/CORBA_HARNESS_5/test.py"
# content [9b084452f13adfcab9160fdc11356bea3834cf53]
#
# add_file "corba_bis/harness/CORBA_HARNESS_6/test.py"
# content [6d311c82f6c37d8680beac386fee4746da4be8c3]
#
# add_file "corba_bis/harness/CORBA_HARNESS_7/test.py"
# content [0eb455a2b48d040941a3820fb8f66f3c2314d5ff]
#
# add_file "corba_bis/interop/CORBA_INTEROP_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_0/test.py"
# content [1ff2261b75a3124a5d0efadac0ff1cf607a1c396]
#
# add_file "corba_bis/interop/CORBA_INTEROP_1/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_1/test.py"
# content [93b1e3d4c0a81a060f93d4f9e19eb4600e5c5e34]
#
# add_file "corba_bis/interop/CORBA_INTEROP_2/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_2/test.py"
# content [647e6bc5a42f1654fba03d56f22d9a92b18a4051]
#
# add_file "corba_bis/interop/CORBA_INTEROP_3/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_3/test.py"
# content [ef0c7484ed912eb831a122002a23f0be06ab9cef]
#
# add_file "corba_bis/interop/CORBA_INTEROP_4/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_4/test.py"
# content [98c03befc07827a744b6d69296a9d05c7ab1741d]
#
# add_file "corba_bis/interop/CORBA_INTEROP_5/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/interop/CORBA_INTEROP_5/test.py"
# content [3f3ff74c817f400f9a8083a11d340b782dcec782]
#
# add_file "corba_bis/local/LOCAL_0/test.py"
# content [23fb2fcd10ed6daff01e5bc8280ab30b44b6ebbf]
#
# add_file "corba_bis/location_forwarding/LOCATION_FORWARDING_0/test.py"
# content [267a18f97db706e90b00f104de0770079cef4661]
#
# add_file "corba_bis/location_forwarding/LOCATION_FORWARDING_1/test.py"
# content [e4e84559e4f8c29b4f5db8682c7fefdffc0a7159]
#
# add_file "corba_bis/object/OBJECT_0/test.py"
# content [361d469e9e034efcc3c14a052f9ebe31b508ffd0]
#
# add_file "corba_bis/orb_init/ORB_INIT_0/test.py"
# content [f3d5ad870f5de47d812a79c85117767832a6d834]
#
# add_file "corba_bis/performance/CORBA_PERFORMANCE_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/performance/CORBA_PERFORMANCE_0/test.py"
# content [09e29d2242ba9e03077f05d4461f95249b4d8f6e]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_0/test.py"
# content [fbca7a5b66b64e64596baea36361661f0afc07c1]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.py"
# content [8686af4940669e87d4ad8aa15ef7cc7145c7b7f5]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_2/test.py"
# content [b2aaa0f42bcd44a218f56df92e9c721e7cfeec68]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_3/test.py"
# content [56bfdcfb8894c6729ef232a3a3fe8d2a75c70ec8]
#
# add_file "corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_4/test.py"
# content [b69c8f29369f3c1447e7a7ef590acd36224d8e09]
#
# add_file "corba_bis/portableserver/PORTABLESERVER_0/test.py"
# content [a19b32844451698820c18c5e22facb34b7fe1420]
#
# add_file "corba_bis/portableserver/PORTABLESERVER_1/test.py"
# content [fcf0ef0d3eebb594da0d66f397da5cfff83b5162]
#
# add_file "corba_bis/portableserver/PORTABLESERVER_2/test.py"
# content [1463baa82fdae53584f2b0542a8d6e1225311912]
#
# add_file "corba_bis/rtcorba-rtcurrent/RTCURRENT_0/test.py"
# content [e1b3988f7b688e5bd64bbd698378e7ff53d826a4]
#
# add_file "corba_bis/rtcorba-rtorb/RTORB_0/test.py"
# content [8eac96978d21730754fac0b81fd8e5d5201b1ed3]
#
# add_file "corba_bis/rtcorba-rtpoa/RTPOA_0/test.py"
# content [0b7f1a571559b94858f12fdf444958b979f72945]
#
# add_file "corba_bis/shutdown/SHUTDOWN_0/test.py"
# content [a5309db45b9efd84ff4a52b93959028a774ba13b]
#
# add_file "corba_bis/shutdown/SHUTDOWN_1/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "corba_bis/shutdown/SHUTDOWN_1/test.py"
# content [a1c6290dbeab094863bfac52bd61ffa1d54bd05f]
#
# add_file "core_bis/chained_lists/CHAINED_LIST_0/test.py"
# content [649c3dada77dcf40bf27c6663cc2c3e76c70b6db]
#
# add_file "core_bis/dynamic_dict/DYNAMIC_DICT_0/test.py"
# content [916779b2b27c85d980968dffab92d6f528bee857]
#
# add_file "core_bis/fixed_point/FIXED_0/test.py"
# content [b0785c9190ae16a049453015eaf5b901712ab91e]
#
# add_file "core_bis/initialization/INIT_0/test.py"
# content [923e889c69b26a531b8e9123503e58e0bf1d4a19]
#
# add_file "core_bis/initialization/INIT_1/test.py"
# content [dc8b188cd3945cb2a77c30cf500186cf60a1dc95]
#
# add_file "core_bis/initialization/INIT_2/test.py"
# content [7d92364e62d62c90e5aaddaa0ba2fb60f314c08f]
#
# add_file "core_bis/initialization/INIT_3/test.py"
# content [992d550f74b270fa8eb154bd99d2515caab22d9f]
#
# add_file "core_bis/initialization/INIT_4/test.py"
# content [3f07df197fe5ec9c55341a1ca4a43951161e17d7]
#
# add_file "core_bis/obj_adapters/OA_0/test.py"
# content [14752ff3e239330f2cfdff8da046bb0c6f2c6dc9]
#
# add_file "core_bis/obj_adapters/OA_1/test.py"
# content [b2f36cc5db8347a10aa11b793608d6db3ea9e72f]
#
# add_file "core_bis/poa/POA_0/test.py"
# content [d8cd328c2a2a9416181c6efbc5741f1cae72f112]
#
# add_file "core_bis/random/RANDOM_0/test.py"
# content [a34a169faeda7147f3c2e21bdbc905d16f9569ed]
#
# add_file "core_bis/sync_policies/CORE_SYNC_POLICIES_0/test.py"
# content [9a030c9a917bdb6cdc0966f7fae40136b190aa4e]
#
# add_file "core_bis/tasking/TASK_0/test.py"
# content [029f54bdc4221981b90ac68d2d3063a545e8b586]
#
# add_file "core_bis/tasking/TASK_1/test.py"
# content [9a2db0c9ab147bfd2e9d13b8e5adb2d42cc2d8d5]
#
# add_file "core_bis/tasking/TASK_2/test.py"
# content [3ebacceb7afe6b9d3d3c60d5f852fc2fc4ce90af]
#
# add_file "core_bis/tasking/TASK_3/test.py"
# content [a9f48a6e20189d77d144275b9345a41b565a1e72]
#
# add_file "core_bis/uri_encoding/URI_ENCODING_0/test.py"
# content [787062f6b16174e18f03bff998d88b0a8a6cbe69]
#
# add_file "cos_bis/ir/IR_0/test.py"
# content [e5aa5a44895f831859c578b7b26fd4ea79203c35]
#
# add_file "cos_bis/naming/NAMING_0/test.py"
# content [a20fc47ed0503e15f3d2ec7882caa78f6e7a19d8]
#
# add_file "cos_bis/time/TIME_0/test.py"
# content [b88c064c898d7d75c5bc32d750b48a4d12d4ed50]
#
# add_file "examples/dsa/README"
# content [796d115225797a4046b009c0126e899501a87b77]
#
# add_file "examples/dsa/connections/client.adb"
# content [4b96e51bb9ad1009cfd0a4ffdb56cc30082c2995]
#
# add_file "examples/dsa/connections/connect.cfg"
# content [fc56260163f31af745d8bcd20536032b1432918f]
#
# add_file "examples/dsa/connections/connections.ads"
# content [c20487a2926744f337c0cefd1c65414cf3762e38]
#
# add_file "examples/dsa/connections/hub.adb"
# content [6ad5a38307913dd1ae8dc4c127a5b7b3610f9a39]
#
# add_file "examples/dsa/connections/hub.ads"
# content [be22f840d00931d7a3a3bd35f24e13abdae80b28]
#
# add_file "examples/dsa/connections/hub_main.adb"
# content [382f5c5066a65129332c6ec3ea66f5de089c4bcd]
#
# add_file "examples/dsa/connections/listeners.adb"
# content [8bb26cd878ba108b504958dc69cb7114fa01974a]
#
# add_file "examples/dsa/connections/listeners.ads"
# content [2f84486209933ae691ff4834e4e83edff985678e]
#
# add_file "examples/dsa/connections/server.adb"
# content [dbac62b27214f39add871e39f6bf694b10a69e32]
#
# add_file "examples/dsa/demo/noproc.adb"
# content [6df02d6dee51a7e0510bc650f77d0b6c808108cb]
#
# add_file "examples/dsa/mailboxes/client.adb"
# content [d5fd1609be9fb3af5f6c4c44a80f6211010482da]
#
# add_file "examples/dsa/mailboxes/hub.adb"
# content [c6c0d705e16447985edf4705a939aa6aa5cafb93]
#
# add_file "examples/dsa/mailboxes/hub.ads"
# content [421b78155df83bf3bec01ca826c0c1baaded8943]
#
# add_file "examples/dsa/mailboxes/hub_main.adb"
# content [382f5c5066a65129332c6ec3ea66f5de089c4bcd]
#
# add_file "examples/dsa/mailboxes/mail.cfg"
# content [fc56260163f31af745d8bcd20536032b1432918f]
#
# add_file "examples/dsa/mailboxes/mailboxes-active.adb"
# content [d7a41972f9cfbaf2b61def6c83377d7a1cc7eacd]
#
# add_file "examples/dsa/mailboxes/mailboxes-active.ads"
# content [d5f7e6dbdf25244d1a3a1f352857dfb361d74037]
#
# add_file "examples/dsa/mailboxes/mailboxes.ads"
# content [09f88822dd99d55b119f3b4b55dc67c0922113d6]
#
# add_file "examples/dsa/mailboxes/server.adb"
# content [08b31cacfdb5b25377fec24c3393e6d735c57dea]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_0/test.py"
# content [68aa225c597ee1ea1e57bf8327d51a4c0e6d649c]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.py"
# content [a9e16bdeda47e08878aa5a5a8b21b1c30b3881fd]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.py"
# content [095ea4fd0e64c6d28d9a8f438d6adaf8f664d29c]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.py"
# content [6aaa8104fc496100e12d452b9c32cc48bb2c6589]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_4/test.py"
# content [81d7aa7dba5d85b38893ac9b57fc8d16d20dd365]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_5/test.py"
# content [87e0e7439a7d748e177102e2cf098f2f17ba6581]
#
# add_file "examples_bis/corba-all_functions/ALL_FUNCTIONS_6/test.py"
# content [17ecf31c0883d79dc14bc798df49da7e68970074]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_0/test.py"
# content [e4265b5ba5f5b7501c27a1f126e664bf41f82fc1]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_1/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_1/test.py"
# content [5787206f07f7dfe5e8ee1db67766458cce462035]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_2/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_2/test.py"
# content [deff83559a903317c7eefa2a473395cc876349ba]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_3/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_3/test.py"
# content [dc2d40418cf86d7478a2c1e46c91ed02bf6d6657]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_4/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_4/test.py"
# content [5f13fb1756c71da7191b9f0db57c313f60df2a23]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_5/test.py"
# content [bde530741e5188a744cf07e049874f77ad76054a]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_6/test.py"
# content [b6fe510f02e466e6ec6439b9b649cd6c056dba83]
#
# add_file "examples_bis/corba-all_types/ALL_TYPES_7/test.py"
# content [af7461b837c089c4d285991f0849de52a1c3bee6]
#
# add_file "examples_bis/corba-echo/ECHO_0/test.py"
# content [a137b15e04e8921d2454d76e615fcd342aebe29d]
#
# add_file "examples_bis/corba-echo/ECHO_1/test.py"
# content [a98c4323ca0913c26ca1c017cd7b21d7485c662b]
#
# add_file "examples_bis/corba-echo/ECHO_2/test.py"
# content [ac078c610334cc58bd98d1d380fceb0e1f5e0f3f]
#
# add_file "examples_bis/corba-echo/ECHO_3/test.py"
# content [573d5e8b192de06b6ef3fb0b314b3945fb515c43]
#
# add_file "examples_bis/corba-echo/ECHO_4/test.py"
# content [c9e52764bc62e3d5365584e9b4b54b4bca540b0b]
#
# add_file "examples_bis/corba-echo/ECHO_5/test.py"
# content [b002b1a4d6669b66adc84404f2880d4aef6167fc]
#
# add_file "examples_bis/corba-echo/ECHO_6/test.py"
# content [c19dad02feb280d47ec405e2d9c394465fd998ce]
#
# add_file "examples_bis/corba-echo/ECHO_7/test.py"
# content [af110eecdf05cecd91d7ab2580f5f16c17965686]
#
# add_file "examples_bis/corba-random/CORBA_RANDOM_0/test.py"
# content [6dce46ed02bed61b77ac825525b7a53a0be34b66]
#
# add_file "examples_bis/corba-random/CORBA_RANDOM_1/test.py"
# content [b61a010850494f7edbb30b8d3ea229be1bc0b305]
#
# add_file "examples_bis/corba-rtcorba-client_propagated/RTCORBA_CLIENT_PROPAGATED_0/test.py"
# content [f83ee0cf1f7c7b6dcea97bfe4558f4aa94983ac4]
#
# add_file "examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.py"
# content [2b28e439b56093378a809e48d1c96c0e828325b1]
#
# add_file "examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.py"
# content [35bc2e824be67e6584afee208d5ad2f245f3e181]
#
# add_file "examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_0/test.py"
# content [b05bf0f80cd66aa50a08953a81be621d8589ac22]
#
# add_file "examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_1/test.py"
# content [ec64e5c98ed3e89b2be01617d30dd7f81c6bdf8d]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.py"
# content [fbeefc45c9538c10f319a6990606ab395fdafe7b]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.py"
# content [4b03d1a1d9410f0714b5c536059d5757dc1c40af]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.py"
# content [f111fa79ac937964a0ddf3fe2f5121dde8612b1c]
#
# add_file "examples_bis/corba-send/CORBA_MIOP_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/corba-send/CORBA_MIOP_0/test.py"
# content [1fa34c814de58ac2b0702a4317bdc812a11f0b79]
#
# add_file "examples_bis/moma/MOMA_0/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/moma/MOMA_0/test.py"
# content [3339674efe649e7a96c1cb0958e833f56fea17ff]
#
# add_file "examples_bis/moma/MOMA_1/test.opt"
# content [256d3f81acf90fc4f2e607c420a7eb496f6b0758]
#
# add_file "examples_bis/moma/MOMA_1/test.py"
# content [9beac423042e6a59ce34544fbc4a6d12f58db5dd]
#
# add_file "examples_bis/polyorb/POLYORB_CORE_0/test.py"
# content [010053b9ca51afba7b1a56b706e8e4536eaf1ef7]
#
# add_file "examples_bis/polyorb/POLYORB_CORE_1/test.py"
# content [b05b3d2e46d13c4d8af74c6957997e82cfc1a0fd]
#
# add_file "examples_bis/polyorb/POLYORB_CORE_2/test.py"
# content [44ae14db934212dbaca6300b106ff391b3eaca0c]
#
# add_file "examples_bis/polyorb/POLYORB_CORE_3/test.py"
# content [ea3a2fc70be49b54254fe2d5e2cf4dfbd33ebe9b]
#
# add_file "src/polyorb-binding_objects-lists.ads"
# content [0bcd6b554b70f79f741ead2ade6a95fa30ded467]
#
# add_file "src/polyorb-smart_pointers-controlled_entities.adb"
# content [ce2d84752e999da9daedc2073cd10754146ecf53]
#
# add_file "src/polyorb-smart_pointers-controlled_entities.ads"
# content [bbb49214d7c7afb7af251dac8d5bdf6b37560498]
#
# add_file "src/polyorb-utils-ilists.adb"
# content [0dd5c696b3f3b3a49b706206c8a177b10bc14c5b]
#
# add_file "src/polyorb-utils-ilists.ads"
# content [d3074756615441d8370dbb6dee1e4130a1d1f759]
#
# add_file "testsuite/corba/performance/java/Makefile"
# content [dfb0bb2fd6c08a04744e1343f34bf7d0efabd79e]
#
# add_file "testsuite/corba/performance/java/benchs.idl"
# content [0383f70a59878d96dd5dea9191db7e11a0b1f191]
#
# add_file "testsuite/corba/performance/java/benchsServer.java"
# content [325253d97716cc69eadec2ab2c3e306fb04978be]
#
# patch "MANIFEST"
# from [beaa6ff2ced91a674fbd62d84038eecee7ce4c8d]
# to [3650d7c4d95f47132a24bd91ab8215d95931b59c]
#
# patch "compilers/gnatdist/xe_utils.adb"
# from [74d04cc35273e32850a84734cfe4f5cf2c2af286]
# to [1369f8f06066604a9f7f4b3036904315dc8045bd]
#
# patch "features-26"
# from [5e90266bc20d4c6bcdc0235f37465302fe1b007a]
# to [051e40959808a48a6b8b0207f78a773538c2ff82]
#
# patch "src/corba/corba-impl.ads"
# from [aa835283edc63b97e1deb24eef71aae532258efa]
# to [718a38a5b5443f36dc1e1d78d91d4d887d93f70d]
#
# patch "src/corba/corba-object-helper.adb"
# from [c57cd12d420117a4f3e18e7c9ce72b1f03978a36]
# to [9ac407e68d900308b7d42902f4f66a276c98edfc]
#
# patch "src/corba/corba-object.adb"
# from [67106837169e07ab8ab2cc086006b834080cf1a5]
# to [7e882b38a09a51f3a067eae19583de4e36d43d13]
#
# patch "src/corba/corba-object.ads"
# from [5ae29a3f4c2a911a546de7440540128ff679fbd7]
# to [ea5942a564aa71d3704415705019ed49022fde03]
#
# patch "src/corba/corba-orb.adb"
# from [a74270a24b312144fa0b01230403f4c6fe6ff328]
# to [e7ec35ffe299d70cb6c2fad615ddbee7bc569d2f]
#
# patch "src/corba/corba-orb.ads"
# from [aa906897ac4eb3ded98bbb78fda830d0e1891545]
# to [880b3419411d9d3682a7795c5f8d2777b1e3324d]
#
# patch "src/corba/polyorb-corba_p-interceptors_hooks.ads"
# from [98eaddd0e37a6905523f11a7e60b895564db8cfb]
# to [aed849baa66bd04eae5b88c9cbce4483adf3a260]
#
# patch "src/corba/polyorb-corba_p-local.ads"
# from [ebcf72aace438dfd761f113048b97257ab52b7fa]
# to [a2dda3cf96c7a578dbc26a8aefe9cba6f4be403c]
#
# patch "src/corba/polyorb-corba_p-policy.ads"
# from [ec6aa6561b854cc389e1fc3a118298abfd52d1a9]
# to [91a076df115ca593c8c518d25c4003d11ca73d56]
#
# patch "src/corba/portableinterceptor/polyorb-corba_p-interceptors.adb"
# from [33539a6fd20c74ca0a00d77d2abdedbe279fb449]
# to [fe5649fdf103fa33e133623f45760cdbadc7bacc]
#
# patch "src/corba/portableinterceptor/portableinterceptor-clientrequestinfo-impl.adb"
# from [cac49b4a2e4473fd221126bf44c67e0e8029cffa]
# to [c3de8260da334b5da747b383621e9ce5c2894198]
#
# patch "src/corba/portableinterceptor/portableinterceptor-requestinfo-impl.adb"
# from [48c4ae913c97a8cc8746d665bdbd325aa6449564]
# to [2e0f63207cc029df0ab83756522ef633e44d3b97]
#
# patch "src/corba/portableserver-current.adb"
# from [91160a73769d5b1532f8f49c5056cda45a986c3d]
# to [669e5f4863f051651cdcc9866deea0a02887883e]
#
# patch "src/corba/portableserver-poa.adb"
# from [1dbebd0259567e516a0ef0e7d9514c931abff12e]
# to [b8f54372ff8c7c845d1e7f0cf63b5f474f8b0916]
#
# patch "src/corba/portableserver.adb"
# from [d4a8dd7c9278a39b665b62ab5f09c9cd7de4616d]
# to [edb5a02c82b0284a6305260bf624385996b7eb5b]
#
# patch "src/corba/rtcorba/rtcorba-current.adb"
# from [f26a512485f78e29871b6201827eb8af747e46d6]
# to [9a09e19e2c73b09a77cc3e8c68865339b540b9bb]
#
# patch "src/corba/rtcorba/rtcorba-current.ads"
# from [181aca4bca3b31d0190a87cf168c874dd0705b24]
# to [22a004fd9f1ec7f428689d1bd91ba5525133aaf1]
#
# patch "src/corba/rtcorba/rtcorba-rtorb.ads"
# from [99025f81078249b4cd07bd9e969821cb3328c5d1]
# to [ce280560710036613627002175db16d57edf4abc]
#
# patch "src/corba/rtcorba/rtportableserver-poa.adb"
# from [22e7ab563596f6771c2726620f52c4f355bb0084]
# to [8be1768c780a4f1e73aff3a1688173190dff7cfb]
#
# patch "src/corba/security/polyorb-corba_p-security_policy.adb"
# from [d33e32f266bfa0569a8e078f059bb9add23d7c12]
# to [420c58225df4944e0fa5fafb06958df1d53dcc4f]
#
# patch "src/corba/security/polyorb-corba_p-tss_state_machine.adb"
# from [935417d2bbbedf813b37253f563ade29760ff8d1]
# to [7f18155aa966fc3bc024feb5ff3a5b06413c900b]
#
# patch "src/dsa/polyorb-dsa_p-storages-dfs.adb"
# from [c1cd2fe74b765dd90eedf741273c7a060df89c7c]
# to [db1d0fdd06faa2dcd91288720a5fa09de21a4b92]
#
# patch "src/dsa/s-parint.adb"
# from [d513233ce0727c06c687742df487e374fbb16886]
# to [bde9ffb0c92fe35313153611bc8224528e3e5790]
#
# patch "src/dsa/s-parint.ads"
# from [9890673a72e8d30ca1710f2ec86617802d5d28cb]
# to [32b90ab9889e734de17a35cfacefba4f3d0323c9]
#
# patch "src/dsa/s-shasto.adb"
# from [9be2e415d5966f20042c42ff58c23d584bd4a505]
# to [bc64f5f67e9c2175edfc915cf7590707a9adccf0]
#
# patch "src/giop/diop/polyorb-giop_p-transport_mechanisms-diop.adb"
# from [bd45f1f3e6d7b2981c07ff095757c19ad19cba35]
# to [f96de414dee35283810592f4356848b60c63f1b6]
#
# patch "src/giop/iiop/polyorb-giop_p-transport_mechanisms-iiop.adb"
# from [ec433bce6dea695b3db475fa9fcd60dfab546f36]
# to [ff93b81c382a7715fcec21d654939d40d9154251]
#
# patch "src/giop/iiop/security/tls/polyorb-giop_p-transport_mechanisms-tls.adb"
# from [bfa051ef5a5286df8295ef0c0d71677e44aeb6ee]
# to [3c3ce6909ec41c3bfb6ea24cbdc14b3fb346a977]
#
# patch "src/giop/iiop/ssliop/polyorb-giop_p-transport_mechanisms-ssliop.adb"
# from [9081f70b8ec9b5b941220b7ddb59d550052170b1]
# to [e2a54ca1995ec488a67bf4f524b6f9f10131710a]
#
# patch "src/giop/miop/polyorb-filters-miop.adb"
# from [00aee6619958456cbfda4955d1e789000272c0ff]
# to [116deeebf873e24dab845492072dad253c10b345]
#
# patch "src/giop/miop/polyorb-giop_p-transport_mechanisms-uipmc.adb"
# from [c6ee13976f5296b245fd63120184f6b1b57fbc04]
# to [8d550f738ee677f7f5b42621d74ec3a72be04528]
#
# patch "src/giop/polyorb-giop_p-code_sets-converters.adb"
# from [f3ed428a929080947334dc346075cd5dd2b183dd]
# to [8ba032e2005080d3e24161b7a5ee69b1bdac75d6]
#
# patch "src/giop/polyorb-giop_p-tagged_components.adb"
# from [6adb4a44a74679e013dc941a2114e477ee94bf22]
# to [3adb0caa60937355c1c41d18ba6e6f54fb85573e]
#
# patch "src/giop/polyorb-protocols-giop-common.adb"
# from [77d42bece36b2be62815f8c726e2e4428b9efa75]
# to [24043ebee726daf304caf00ffeb9e0c46defce47]
#
# patch "src/giop/polyorb-protocols-giop-giop_1_0.ads"
# from [8f843e2e3182654fa12dfdbd7f27701f98adf546]
# to [b3651c63e6b24157a115e008060fc740c7d25641]
#
# patch "src/giop/polyorb-protocols-giop-giop_1_1.ads"
# from [ab0d42bc43630139422b4adeedd4089729c10321]
# to [a0b0ede73ca7271379f434364a93559c9db1bffd]
#
# patch "src/giop/polyorb-protocols-giop-giop_1_2.ads"
# from [f9429c32ec4497de8f0b725297a1b3592ddc3189]
# to [00ca83ae03bc8450592e7aafc8badb336cd8c766]
#
# patch "src/giop/polyorb-protocols-giop.adb"
# from [63bea4f95a38fe9df1814373f570f74ae1601d32]
# to [a60144d9bf88353f990aff59a00f0a6d8297b8a3]
#
# patch "src/moma/polyorb-moma_p-provider-topic_datas.adb"
# from [f545a167daeca97c1757a3b04d82eae5a18b196e]
# to [731ac702d14bd8008d21fe9853fa864307d53608]
#
# patch "src/polyorb-asynch_ev-sockets.adb"
# from [6d7ef022c6bb6b2db6ade0e4074a56e3ecb1f11d]
# to [da9d36dcf79bbda85337c489434f6bf8043c946c]
#
# patch "src/polyorb-asynch_ev-sockets.ads"
# from [f145eec3986b99b2e542bbdb840132a1bed5c34e]
# to [db9d4b0130554e5ab153c935a17d7e9022b4b1b3]
#
# patch "src/polyorb-binding_objects.adb"
# from [eba30a65cef3d288734a8d87b88e6e711731e0a1]
# to [b307b51b67c5497619e2f0517b67687ca8d3b565]
#
# patch "src/polyorb-binding_objects.ads"
# from [09596e10cb8ec629ed43c88a3e9642d285effad4]
# to [0c45487ddb03011c54a10b69cc65ddc858cab5f8]
#
# patch "src/polyorb-buffers.adb"
# from [37848e6f2a31b7862eedd1731894a83b5a155e76]
# to [1d84ea6a542a20d87f551541a703be0b7703edc4]
#
# patch "src/polyorb-buffers.ads"
# from [11916cf4cd3bbf85ac3f1cec3e3258b3f55cc4e6]
# to [6bb4bfbd014031a17a72d6fa142448937293608c]
#
# patch "src/polyorb-exceptions.adb"
# from [f8d2de11d4615d84e490265229949ca430326d08]
# to [90bb51d2a7ccd0f01ef210908cb23ef82c4373f1]
#
# patch "src/polyorb-if_descriptors.ads"
# from [0cef5e8b1268b6c299d0ba1658baf3067ac8e5a2]
# to [661166cb263715f320bc96025a8eee327938f480]
#
# patch "src/polyorb-jobs.adb"
# from [f0697ad1b8affcbf53bef6b435a6955a84f3952a]
# to [1dce24e40213573ef364c6467a2c67839b3e324b]
#
# patch "src/polyorb-minimal_servant.ads"
# from [471788336df2a4fb10b2178852cb392718a154ef]
# to [70ea2db2756739d89e673e6ec54b6c3bec4ed874]
#
# patch "src/polyorb-opaque-chunk_pools.adb"
# from [e192a5d0143eaa35a83187111175b88350421734]
# to [70261eaec2aee40c52b3c7e7634dba38401d035a]
#
# patch "src/polyorb-opaque-chunk_pools.ads"
# from [19d09d4d795d8e83a12682a9aa30e32d62663d57]
# to [a4f3ca205b2d723e8fc53876da9e538ef2d81dbb]
#
# patch "src/polyorb-orb.adb"
# from [38549bf735dccbffb71e5c8d6a9a5da27f217dcc]
# to [31cea568c888e0588e64562740702d4a72381d1a]
#
# patch "src/polyorb-orb.ads"
# from [5a5f09d08b9fae81db8d56a85367fb1859f328db]
# to [90b4dfe13639558e244d2467e77c19faa20376cf]
#
# patch "src/polyorb-poa_manager-basic_manager.adb"
# from [940803f7bb53121ccbcb29fcdf823c3e6002dfed]
# to [e56aff07f963a6e027a5af5a60da3ac83c5f1c6e]
#
# patch "src/polyorb-poa_manager-basic_manager.ads"
# from [0b176448e4d191aba4e02ada3a87930c88ef20c5]
# to [495d1b41846642501703b3499bdf8923f15c7169]
#
# patch "src/polyorb-poa_manager.ads"
# from [ec3001c5983cae39e4a8a27947074ca89edc2487]
# to [0edcbce66c9b8473930fb97977ceb221d5389d69]
#
# patch "src/polyorb-references-ior.adb"
# from [b6f075b931047ade3517564aa0cc5e3a11dd5931]
# to [afcb63f6a912e58bd8b3cc6df55a66cb9e7d41ce]
#
# patch "src/polyorb-references-uri.adb"
# from [7dad7b907947ed7bc935ca68bb9f95df1f8d9a47]
# to [fe956470c0137830c5614681388d2f088cdafec9]
#
# patch "src/polyorb-references.ads"
# from [8a58554d26800bf6018f8b1344eda091ce400cb7]
# to [a94899add6bdf8fd2d9b5baece4c4d9363ca1520]
#
# patch "src/polyorb-representations-cdr-common.adb"
# from [48e55eecf86e8a6a03230e58bbcbeed493a550a0]
# to [b45c3ab99826439f45747d57c55aae41b4e131e9]
#
# patch "src/polyorb-representations-cdr.adb"
# from [7633553de55e337f04a5dcc0b32aa7ed80d4a61f]
# to [7c492bb499c601870f0e050aa1551acc15df28ab]
#
# patch "src/polyorb-representations-test.adb"
# from [28e5b72ba24ed33e43f94feff17c6833c26763e4]
# to [d4a331920c3897ca7e830454d2e0ef7cac07f1be]
#
# patch "src/polyorb-servants-group_servants.adb"
# from [5264d5f908feab5a73078a495447b562d0ee2991]
# to [d55fa9ec95d15c9f932a1a4155cf6c82ec690130]
#
# patch "src/polyorb-smart_pointers-initialization.adb"
# from [d558c5f480a1242d4e18b47efe56d30afa37d08f]
# to [4d77d7353e67ed63fcde10ef4daa36ce35c98721]
#
# patch "src/polyorb-smart_pointers.adb"
# from [3708a49832a6b36abcebe143d72dc127b80bfc15]
# to [5771db48ee89af79eda56325f590f17302e7ba72]
#
# patch "src/polyorb-smart_pointers.ads"
# from [d8438c6adc9f3ea8a6420257ccf0b9785f35dd27]
# to [ea54c240d3278d0be12d2936d3582b0fb3a3a200]
#
# patch "src/polyorb-task_info.adb"
# from [40d2a3dafe9bf04f8e9983b4d15dcda48a96f615]
# to [e6beed64fd8ee5c7a2e438ed52d4508e9f1d779f]
#
# patch "src/polyorb-task_info.ads"
# from [dee96975701f64f4d10311d2aa03202083463067]
# to [495f627cd43ac04822c4a2bf8164a6e53551aed7]
#
# patch "src/polyorb-tasking-idle_tasks_managers.adb"
# from [8bec7f54f4ba680c1029647f7a5bff52eb16a18a]
# to [5fe13723243c0c248132b75c15a8d62aaf09339e]
#
# patch "src/polyorb-tasking-idle_tasks_managers.ads"
# from [8b897e243e52b9626988dbc58c1b4d16a7b4da8f]
# to [db0cc938ccab4dda1c7526d113498ebd35179bb3]
#
# patch "src/polyorb-transport-connected.adb"
# from [3625a040566158bcb053b7d0844ab228a4d8e9ef]
# to [cf4467f233df06d8f65c885b5f5647fa41a49267]
#
# patch "src/polyorb-transport-datagram.adb"
# from [92e3e05f69961d0e557fd1dddaa2750f50e4ad2f]
# to [80f7c7a5307dfcf448ab9c92d3a21ad774739e09]
#
# patch "src/polyorb-utils-buffers.adb"
# from [8e4f6bde700d063df06afa6a6787084cee31e3bc]
# to [826754f2c8dbc423f07d699a11ac19f2ddb967c6]
#
# patch "src/polyorb-utils-buffers.ads"
# from [b6d97a5c47d26f4402779fca18486d336149d8e6]
# to [f063effab0ba0700f2654c1d5290e712535e20e3]
#
# patch "src/polyorb-utils-chained_lists.adb"
# from [4288c17d13e173020ecab1f5cf84d6806021f5bc]
# to [b65e335a75cb213285f7fb891b1f5384e2050c4a]
#
# patch "src/polyorb-utils-chained_lists.ads"
# from [efce85573b6d5a9c12869744965bc776fcc5da9a]
# to [93d0b2a36e20196781d22547eccd5b2642eeb3c7]
#
# patch "src/polyorb-utils-strings-lists.adb"
# from [bde08790b56512ed4d51264b0ac4a7ee768ea518]
# to [7c0f7bb784ea2b89ded586c2006e0583df0f9da6]
#
# patch "src/security/polyorb-qos-clients_security.adb"
# from [dc536343faa741e0586c0a549d6c8a5a36662d42]
# to [a5b8097c048f53ec67d293affa646056e616e59e]
#
# patch "src/security/polyorb-qos-targets_security.adb"
# from [dcd0bae565732fb5fcadc3f256ad7d20428a1505]
# to [f706fecc1da5a21ac786730448a77dc61a75fa9a]
#
# patch "src/security/tls/polyorb-asynch_ev-sockets-tls.adb"
# from [3272658453d24b5f2aaa70360da38fa939a164de]
# to [1ca9e598c949f9de49b5ed232182d202326de8b3]
#
# patch "src/security/tls/polyorb-security-transport_mechanisms-tls.adb"
# from [0d34f7286180c9cb1ede376858e9cf50d0f3fac9]
# to [c0a4bd7044a9f6db6ea07d418f806726e22b37ed]
#
# patch "src/soap/polyorb-binding_data-soap.adb"
# from [0f898e423a529f609f9be06a0435e8475498c831]
# to [fea803d3c7eec1b07d1ed3bfea3882394ae263dc]
#
# patch "src/soap/polyorb-utils-text_buffers.adb"
# from [da7062608c898021cd3b1cec585d364dd4431a70]
# to [231e9ec0057873a4c275763840e2b7f4b5565938]
#
# patch "src/srp/polyorb-binding_data-srp.adb"
# from [7dbbcf796fb1f1733c7a1591d5bfe88d84abffc6]
# to [35304b2805ad939440e0c942c8e6675598bc7035]
#
# patch "src/srp/polyorb-representations-srp.adb"
# from [ffb2ecc945201b06e0a1ff987baade4ddd3bd23c]
# to [4136f14bc72279e85b45e63b72aea51fb6fc46ef]
#
# patch "src/ssl/polyorb-asynch_ev-sockets-ssl.adb"
# from [2f34a5aea0b70844f3e9539d97b2bce1947f0c71]
# to [22de5a147f68869f9d531922a3a445058f136ae7]
#
# patch "testsuite/core/chained_lists/test000.adb"
# from [5ac857885260c83aaa4105b68c972cd4c7c5dfd7]
# to [877b4ec21f7109cff7a170f7fe0d9a5b543d3155]
#
============================================================
--- README.DSA f5e0679fe90dff7879b0722355320d02e1de1e06
+++ README.DSA f5e0679fe90dff7879b0722355320d02e1de1e06
@@ -0,0 +1,20 @@
+Using PolyORB as DSA PCS
+========================
+
+PolyORB provides an application personality that implements a Partition
+Communication Subsystem for the Distributed Systems Annex of the Ada
+language, in conjunction with the GNAT compiler. In order to use this
+personality, you need to use matching releases of the compiler and
+middleware.
+
+The following combinations of releases are known to be compatible:
+
+GNAT version | PolyORB version
+--------------+-----------------
+GNAT Pro 6.0 | PolyORB 2.2
+GNAT Pro 6.1 | PolyORB 2.3
+GNAT GPL 2008 | PolyORB 2.4
+GNAT Pro 6.2 | PolyORB 2.5
+GNAT GPL 2009 | PoylORB GPL 2009 (planned)
+GNAT Pro 6.3 | PolyORB 2.6 (planned)
+
============================================================
--- corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_0/test.py 02b4bc3f8ff05ad994890748c600e1c894841eb7
+++ corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_0/test.py 02b4bc3f8ff05ad994890748c600e1c894841eb7
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/all_exceptions/client', r'',
+ r'corba/all_exceptions/server', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_1/test.py 3bceede77661af46ccccc1f3d84a9b62f4b7e6bd
+++ corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_1/test.py 3bceede77661af46ccccc1f3d84a9b62f4b7e6bd
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/all_exceptions/client', r'scenarios/polyorb_conf/giop_1_0.conf',
+ r'corba/all_exceptions/server', r'scenarios/polyorb_conf/giop_1_0.conf'):
+ sys.exit(1)
+
============================================================
--- corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_2/test.py 065d4ded6344ad6e938171fcaea627c0629d8b9f
+++ corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_2/test.py 065d4ded6344ad6e938171fcaea627c0629d8b9f
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/all_exceptions/client', r'scenarios/polyorb_conf/giop_1_1.conf',
+ r'corba/all_exceptions/server', r'scenarios/polyorb_conf/giop_1_1.conf'):
+ sys.exit(1)
+
============================================================
--- corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_3/test.py 1edc10f2a3e43cd24af64e3f1a1e04cff5e7b5a6
+++ corba_bis/all_exceptions/CORBA_ALL_EXCEPTIONS_3/test.py 1edc10f2a3e43cd24af64e3f1a1e04cff5e7b5a6
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/all_exceptions/client', r'scenarios/polyorb_conf/giop_1_2.conf',
+ r'corba/all_exceptions/server', r'scenarios/polyorb_conf/giop_1_2.conf'):
+ sys.exit(1)
+
============================================================
--- corba_bis/benchs/CORBA_BENCHS_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/benchs/CORBA_BENCHS_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/benchs/CORBA_BENCHS_0/test.py 7208b2de5b0b61063f72adb210b762648e7e3b02
+++ corba_bis/benchs/CORBA_BENCHS_0/test.py 7208b2de5b0b61063f72adb210b762648e7e3b02
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/benchs/test000/client', r'',
+ r'corba/benchs/test000/server', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/code_sets/CODE_SETS_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/code_sets/CODE_SETS_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/code_sets/CODE_SETS_0/test.py 025bd2d387115a002d157efe46c2285c4f59622d
+++ corba_bis/code_sets/CODE_SETS_0/test.py 025bd2d387115a002d157efe46c2285c4f59622d
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/code_sets/test000/client', r'',
+ r'corba/code_sets/test000/server', r'scenarios/polyorb_conf/code_sets_000_server.conf'):
+ sys.exit(1)
+
============================================================
--- corba_bis/code_sets/CODE_SETS_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/code_sets/CODE_SETS_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/code_sets/CODE_SETS_1/test.py 48ce89ba8afb85a55f9ec222b0c4243422d54f29
+++ corba_bis/code_sets/CODE_SETS_1/test.py 48ce89ba8afb85a55f9ec222b0c4243422d54f29
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/code_sets/test000/client', r'scenarios/polyorb_conf/code_sets_000_client.conf',
+ r'corba/code_sets/test000/server', r'scenarios/polyorb_conf/code_sets_000_server.conf'):
+ sys.exit(1)
+
============================================================
--- corba_bis/domainmanager/DOMAINMANAGER_0/test.py 33b6110d5102fa0a0c251600e0a1ceca16709ab4
+++ corba_bis/domainmanager/DOMAINMANAGER_0/test.py 33b6110d5102fa0a0c251600e0a1ceca16709ab4
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/domainmanager/test000/client', r'',
+ r'corba/domainmanager/test000/server', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_0/test.py ac082d9b2e3beadbb9ae7e6f93b2cdd87f6a3048
+++ corba_bis/harness/CORBA_HARNESS_0/test.py ac082d9b2e3beadbb9ae7e6f93b2cdd87f6a3048
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+ r'corba/harness/server_no_tasking', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_1/test.py 45e8fd2ef6da1fffb74feaac5b6a7b019d4d9384
+++ corba_bis/harness/CORBA_HARNESS_1/test.py 45e8fd2ef6da1fffb74feaac5b6a7b019d4d9384
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+ r'corba/harness/server_thread_pool', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_2/test.py d7fef518a6aa9dab4f94cc7bb63c03a945a644f9
+++ corba_bis/harness/CORBA_HARNESS_2/test.py d7fef518a6aa9dab4f94cc7bb63c03a945a644f9
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+ r'corba/harness/server_thread_per_request', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_3/test.py 162fb2e48de6005e7dc1692948f4464bb6601027
+++ corba_bis/harness/CORBA_HARNESS_3/test.py 162fb2e48de6005e7dc1692948f4464bb6601027
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+ r'corba/harness/server_thread_per_session', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_4/test.py a0d1cc6638f3f15f3a1de9d8ee99d7352071545f
+++ corba_bis/harness/CORBA_HARNESS_4/test.py a0d1cc6638f3f15f3a1de9d8ee99d7352071545f
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+ r'corba/harness/server_no_tasking2', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_5/test.py 9b084452f13adfcab9160fdc11356bea3834cf53
+++ corba_bis/harness/CORBA_HARNESS_5/test.py 9b084452f13adfcab9160fdc11356bea3834cf53
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+ r'corba/harness/server_thread_pool_lf', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_6/test.py 6d311c82f6c37d8680beac386fee4746da4be8c3
+++ corba_bis/harness/CORBA_HARNESS_6/test.py 6d311c82f6c37d8680beac386fee4746da4be8c3
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/harness/client', r'',
+ r'corba/harness/server_thread_pool_hahs', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/harness/CORBA_HARNESS_7/test.py 0eb455a2b48d040941a3820fb8f66f3c2314d5ff
+++ corba_bis/harness/CORBA_HARNESS_7/test.py 0eb455a2b48d040941a3820fb8f66f3c2314d5ff
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/harness/local', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_0/test.py 1ff2261b75a3124a5d0efadac0ff1cf607a1c396
+++ corba_bis/interop/CORBA_INTEROP_0/test.py 1ff2261b75a3124a5d0efadac0ff1cf607a1c396
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/MICO/all_types_dynclient', r'',
+ r'corba/interop/cpp/MICO/all_types_dynserver', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_1/test.py 93b1e3d4c0a81a060f93d4f9e19eb4600e5c5e34
+++ corba_bis/interop/CORBA_INTEROP_1/test.py 93b1e3d4c0a81a060f93d4f9e19eb4600e5c5e34
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/omniORB/all_types_dynclient', r'',
+ r'corba/interop/cpp/omniORB/all_types_dynserver', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_2/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_2/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_2/test.py 647e6bc5a42f1654fba03d56f22d9a92b18a4051
+++ corba_bis/interop/CORBA_INTEROP_2/test.py 647e6bc5a42f1654fba03d56f22d9a92b18a4051
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/TAO/all_types_dynclient', r'',
+ r'corba/interop/cpp/TAO/all_types_dynserver', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_3/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_3/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_3/test.py ef0c7484ed912eb831a122002a23f0be06ab9cef
+++ corba_bis/interop/CORBA_INTEROP_3/test.py ef0c7484ed912eb831a122002a23f0be06ab9cef
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/omniORB/all_types_client', r'',
+ r'../examples/corba/all_types/server', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_4/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_4/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_4/test.py 98c03befc07827a744b6d69296a9d05c7ab1741d
+++ corba_bis/interop/CORBA_INTEROP_4/test.py 98c03befc07827a744b6d69296a9d05c7ab1741d
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/omniORB/all_functions_client', r'',
+ r'../examples/corba/all_functions/server', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/interop/CORBA_INTEROP_5/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/interop/CORBA_INTEROP_5/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/interop/CORBA_INTEROP_5/test.py 3f3ff74c817f400f9a8083a11d340b782dcec782
+++ corba_bis/interop/CORBA_INTEROP_5/test.py 3f3ff74c817f400f9a8083a11d340b782dcec782
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/interop/cpp/TAO/all_types_dynclient', r'',
+ r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/broken_codesets.conf'):
+ sys.exit(1)
+
============================================================
--- corba_bis/local/LOCAL_0/test.py 23fb2fcd10ed6daff01e5bc8280ab30b44b6ebbf
+++ corba_bis/local/LOCAL_0/test.py 23fb2fcd10ed6daff01e5bc8280ab30b44b6ebbf
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/local/test000', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/location_forwarding/LOCATION_FORWARDING_0/test.py 267a18f97db706e90b00f104de0770079cef4661
+++ corba_bis/location_forwarding/LOCATION_FORWARDING_0/test.py 267a18f97db706e90b00f104de0770079cef4661
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/location_forwarding/test000/test000', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/location_forwarding/LOCATION_FORWARDING_1/test.py e4e84559e4f8c29b4f5db8682c7fefdffc0a7159
+++ corba_bis/location_forwarding/LOCATION_FORWARDING_1/test.py e4e84559e4f8c29b4f5db8682c7fefdffc0a7159
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/location_forwarding/test001/test001_client', r'',
+ r'corba/location_forwarding/test001/test001_server', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/object/OBJECT_0/test.py 361d469e9e034efcc3c14a052f9ebe31b508ffd0
+++ corba_bis/object/OBJECT_0/test.py 361d469e9e034efcc3c14a052f9ebe31b508ffd0
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/object/test000/test000_client', r'',
+ r'corba/object/test000/test000_server', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/orb_init/ORB_INIT_0/test.py f3d5ad870f5de47d812a79c85117767832a6d834
+++ corba_bis/orb_init/ORB_INIT_0/test.py f3d5ad870f5de47d812a79c85117767832a6d834
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/orb_init/test000', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/performance/CORBA_PERFORMANCE_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/performance/CORBA_PERFORMANCE_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/performance/CORBA_PERFORMANCE_0/test.py 09e29d2242ba9e03077f05d4461f95249b4d8f6e
+++ corba_bis/performance/CORBA_PERFORMANCE_0/test.py 09e29d2242ba9e03077f05d4461f95249b4d8f6e
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/performance/client', r'scenarios/polyorb_conf/performance.conf',
+ r'corba/performance/server_no_tasking', r'scenarios/polyorb_conf/performance.conf'):
+ sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_0/test.py fbca7a5b66b64e64596baea36361661f0afc07c1
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_0/test.py fbca7a5b66b64e64596baea36361661f0afc07c1
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableinterceptor/test000/test000', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.py 8686af4940669e87d4ad8aa15ef7cc7145c7b7f5
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_1/test.py 8686af4940669e87d4ad8aa15ef7cc7145c7b7f5
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableinterceptor/test001/test001', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_2/test.py b2aaa0f42bcd44a218f56df92e9c721e7cfeec68
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_2/test.py b2aaa0f42bcd44a218f56df92e9c721e7cfeec68
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableinterceptor/test002/test002', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_3/test.py 56bfdcfb8894c6729ef232a3a3fe8d2a75c70ec8
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_3/test.py 56bfdcfb8894c6729ef232a3a3fe8d2a75c70ec8
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableinterceptor/test003/test003', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_4/test.py b69c8f29369f3c1447e7a7ef590acd36224d8e09
+++ corba_bis/portableinterceptor/CORBA_PORTABLEINTERCEPTOR_4/test.py b69c8f29369f3c1447e7a7ef590acd36224d8e09
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/portableinterceptor/test004/client', r'',
+ r'corba/portableinterceptor/test004/server', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/portableserver/PORTABLESERVER_0/test.py a19b32844451698820c18c5e22facb34b7fe1420
+++ corba_bis/portableserver/PORTABLESERVER_0/test.py a19b32844451698820c18c5e22facb34b7fe1420
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableserver/test000', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/portableserver/PORTABLESERVER_1/test.py fcf0ef0d3eebb594da0d66f397da5cfff83b5162
+++ corba_bis/portableserver/PORTABLESERVER_1/test.py fcf0ef0d3eebb594da0d66f397da5cfff83b5162
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableserver/test001', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/portableserver/PORTABLESERVER_2/test.py 1463baa82fdae53584f2b0542a8d6e1225311912
+++ corba_bis/portableserver/PORTABLESERVER_2/test.py 1463baa82fdae53584f2b0542a8d6e1225311912
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/portableserver/test002', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/rtcorba-rtcurrent/RTCURRENT_0/test.py e1b3988f7b688e5bd64bbd698378e7ff53d826a4
+++ corba_bis/rtcorba-rtcurrent/RTCURRENT_0/test.py e1b3988f7b688e5bd64bbd698378e7ff53d826a4
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/rtcorba/rtcurrent/rtcurrent', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/rtcorba-rtorb/RTORB_0/test.py 8eac96978d21730754fac0b81fd8e5d5201b1ed3
+++ corba_bis/rtcorba-rtorb/RTORB_0/test.py 8eac96978d21730754fac0b81fd8e5d5201b1ed3
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/rtcorba/rtorb/test000', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/rtcorba-rtpoa/RTPOA_0/test.py 0b7f1a571559b94858f12fdf444958b979f72945
+++ corba_bis/rtcorba-rtpoa/RTPOA_0/test.py 0b7f1a571559b94858f12fdf444958b979f72945
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/rtcorba/rtpoa/test000', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/shutdown/SHUTDOWN_0/test.py a5309db45b9efd84ff4a52b93959028a774ba13b
+++ corba_bis/shutdown/SHUTDOWN_0/test.py a5309db45b9efd84ff4a52b93959028a774ba13b
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/shutdown/test000_client', r''):
+ sys.exit(1)
+
============================================================
--- corba_bis/shutdown/SHUTDOWN_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ corba_bis/shutdown/SHUTDOWN_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- corba_bis/shutdown/SHUTDOWN_1/test.py a1c6290dbeab094863bfac52bd61ffa1d54bd05f
+++ corba_bis/shutdown/SHUTDOWN_1/test.py a1c6290dbeab094863bfac52bd61ffa1d54bd05f
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/shutdown/test001_client', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/chained_lists/CHAINED_LIST_0/test.py 649c3dada77dcf40bf27c6663cc2c3e76c70b6db
+++ core_bis/chained_lists/CHAINED_LIST_0/test.py 649c3dada77dcf40bf27c6663cc2c3e76c70b6db
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/chained_lists/test000', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/dynamic_dict/DYNAMIC_DICT_0/test.py 916779b2b27c85d980968dffab92d6f528bee857
+++ core_bis/dynamic_dict/DYNAMIC_DICT_0/test.py 916779b2b27c85d980968dffab92d6f528bee857
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/dynamic_dict/test000', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/fixed_point/FIXED_0/test.py b0785c9190ae16a049453015eaf5b901712ab91e
+++ core_bis/fixed_point/FIXED_0/test.py b0785c9190ae16a049453015eaf5b901712ab91e
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/fixed_point/test000', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_0/test.py 923e889c69b26a531b8e9123503e58e0bf1d4a19
+++ core_bis/initialization/INIT_0/test.py 923e889c69b26a531b8e9123503e58e0bf1d4a19
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test000', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_1/test.py dc8b188cd3945cb2a77c30cf500186cf60a1dc95
+++ core_bis/initialization/INIT_1/test.py dc8b188cd3945cb2a77c30cf500186cf60a1dc95
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test001', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_2/test.py 7d92364e62d62c90e5aaddaa0ba2fb60f314c08f
+++ core_bis/initialization/INIT_2/test.py 7d92364e62d62c90e5aaddaa0ba2fb60f314c08f
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test002', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_3/test.py 992d550f74b270fa8eb154bd99d2515caab22d9f
+++ core_bis/initialization/INIT_3/test.py 992d550f74b270fa8eb154bd99d2515caab22d9f
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test003', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/initialization/INIT_4/test.py 3f07df197fe5ec9c55341a1ca4a43951161e17d7
+++ core_bis/initialization/INIT_4/test.py 3f07df197fe5ec9c55341a1ca4a43951161e17d7
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/initialization/test004', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/obj_adapters/OA_0/test.py 14752ff3e239330f2cfdff8da046bb0c6f2c6dc9
+++ core_bis/obj_adapters/OA_0/test.py 14752ff3e239330f2cfdff8da046bb0c6f2c6dc9
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/obj_adapters/test000', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/obj_adapters/OA_1/test.py b2f36cc5db8347a10aa11b793608d6db3ea9e72f
+++ core_bis/obj_adapters/OA_1/test.py b2f36cc5db8347a10aa11b793608d6db3ea9e72f
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/obj_adapters/test001', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/poa/POA_0/test.py d8cd328c2a2a9416181c6efbc5741f1cae72f112
+++ core_bis/poa/POA_0/test.py d8cd328c2a2a9416181c6efbc5741f1cae72f112
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/poa/test000', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/random/RANDOM_0/test.py a34a169faeda7147f3c2e21bdbc905d16f9569ed
+++ core_bis/random/RANDOM_0/test.py a34a169faeda7147f3c2e21bdbc905d16f9569ed
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/random/test000', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/sync_policies/CORE_SYNC_POLICIES_0/test.py 9a030c9a917bdb6cdc0966f7fae40136b190aa4e
+++ core_bis/sync_policies/CORE_SYNC_POLICIES_0/test.py 9a030c9a917bdb6cdc0966f7fae40136b190aa4e
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'core/sync_policies/client', r'',
+ r'core/sync_policies/server_no_tasking', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/tasking/TASK_0/test.py 029f54bdc4221981b90ac68d2d3063a545e8b586
+++ core_bis/tasking/TASK_0/test.py 029f54bdc4221981b90ac68d2d3063a545e8b586
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/tasking/test000', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/tasking/TASK_1/test.py 9a2db0c9ab147bfd2e9d13b8e5adb2d42cc2d8d5
+++ core_bis/tasking/TASK_1/test.py 9a2db0c9ab147bfd2e9d13b8e5adb2d42cc2d8d5
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/tasking/test001', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/tasking/TASK_2/test.py 3ebacceb7afe6b9d3d3c60d5f852fc2fc4ce90af
+++ core_bis/tasking/TASK_2/test.py 3ebacceb7afe6b9d3d3c60d5f852fc2fc4ce90af
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/tasking/test002', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/tasking/TASK_3/test.py a9f48a6e20189d77d144275b9345a41b565a1e72
+++ core_bis/tasking/TASK_3/test.py a9f48a6e20189d77d144275b9345a41b565a1e72
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/tasking/test003', r''):
+ sys.exit(1)
+
============================================================
--- core_bis/uri_encoding/URI_ENCODING_0/test.py 787062f6b16174e18f03bff998d88b0a8a6cbe69
+++ core_bis/uri_encoding/URI_ENCODING_0/test.py 787062f6b16174e18f03bff998d88b0a8a6cbe69
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'core/uri_encoding/test000', r''):
+ sys.exit(1)
+
============================================================
--- cos_bis/ir/IR_0/test.py e5aa5a44895f831859c578b7b26fd4ea79203c35
+++ cos_bis/ir/IR_0/test.py e5aa5a44895f831859c578b7b26fd4ea79203c35
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/cos/ir/client', r'',
+ r'corba/cos/ir/server', r''):
+ sys.exit(1)
+
============================================================
--- cos_bis/naming/NAMING_0/test.py a20fc47ed0503e15f3d2ec7882caa78f6e7a19d8
+++ cos_bis/naming/NAMING_0/test.py a20fc47ed0503e15f3d2ec7882caa78f6e7a19d8
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'corba/cos/naming/test_naming_corba', r'',
+ r'../tools/po_cos_naming/po_cos_naming', r''):
+ sys.exit(1)
+
============================================================
--- cos_bis/time/TIME_0/test.py b88c064c898d7d75c5bc32d750b48a4d12d4ed50
+++ cos_bis/time/TIME_0/test.py b88c064c898d7d75c5bc32d750b48a4d12d4ed50
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'corba/cos/time/test_time', r''):
+ sys.exit(1)
+
============================================================
--- examples/dsa/README 796d115225797a4046b009c0126e899501a87b77
+++ examples/dsa/README 796d115225797a4046b009c0126e899501a87b77
@@ -0,0 +1,17 @@
+This directory contains the following examples for the Ada Distributed
+Systems Annex:
+
+- echo
+ Simple client/server ping
+
+- demo
+ Demo of passing complex data types between client and server
+
+- connections
+ Multiple servers and multiple clients, each server has a single
+ receiving task and blocks waiting for clients; clients use asynchronous
+ send operations
+
+- mailboxes
+ Same as "connections" but implemented in Ada 2005 using an RACW with
+ designating an interface implemented by the server task.
============================================================
--- examples/dsa/connections/client.adb 4b96e51bb9ad1009cfd0a4ffdb56cc30082c2995
+++ examples/dsa/connections/client.adb 4b96e51bb9ad1009cfd0a4ffdb56cc30082c2995
@@ -0,0 +1,42 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- C L I E N T --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line; use Ada.Command_Line;
+with Hub;
+with Connections;
+procedure Client is
+ Target : Connections.Connection;
+begin
+ Target := Hub.Get_Listener (Integer'Value (Argument (1)));
+ Connections.Send (Target.all, Argument (2));
+end Client;
============================================================
--- examples/dsa/connections/connect.cfg fc56260163f31af745d8bcd20536032b1432918f
+++ examples/dsa/connections/connect.cfg fc56260163f31af745d8bcd20536032b1432918f
@@ -0,0 +1,17 @@
+configuration Mail is
+ pragma Starter (None);
+
+ Hub_Partition : Partition := (Hub);
+ procedure Hub_Main is in Hub_Partition;
+ for Hub_Partition'Termination use Deferred_Termination;
+
+ Server_Partition : Partition;
+ procedure Server;
+ for Server_Partition'Main use Server;
+ for Server_Partition'Termination use Deferred_Termination;
+
+ Client_Partition : Partition;
+ procedure Client;
+ for Client_Partition'Main use Client;
+ for Client_Partition'Termination use Local_Termination;
+end Mail;
============================================================
--- examples/dsa/connections/connections.ads c20487a2926744f337c0cefd1c65414cf3762e38
+++ examples/dsa/connections/connections.ads c20487a2926744f337c0cefd1c65414cf3762e38
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- C O N N E C T I O N S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+package Connections is
+ pragma Remote_Types;
+
+ type Connection_Listener is abstract tagged limited private;
+ procedure Send (Target : Connection_Listener; Message : String) is abstract;
+
+ type Connection is access all Connection_Listener'Class;
+ pragma Asynchronous (Connection);
+
+private
+ type Connection_Listener is abstract tagged limited null record;
+end Connections;
============================================================
--- examples/dsa/connections/hub.adb 6ad5a38307913dd1ae8dc4c127a5b7b3610f9a39
+++ examples/dsa/connections/hub.adb 6ad5a38307913dd1ae8dc4c127a5b7b3610f9a39
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- H U B --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+package body Hub is
+ All_Listeners : array (0 .. 7) of Connections.Connection;
+
+ procedure Register_Listener (Id : Integer; Ptr : Connections.Connection) is
+ begin
+ All_Listeners (Id) := Ptr;
+ end Register_Listener;
+
+ function Get_Listener (Id : Integer) return Connections.Connection is
+ begin
+ return All_Listeners (Id);
+ end Get_Listener;
+
+end Hub;
============================================================
--- examples/dsa/connections/hub.ads be22f840d00931d7a3a3bd35f24e13abdae80b28
+++ examples/dsa/connections/hub.ads be22f840d00931d7a3a3bd35f24e13abdae80b28
@@ -0,0 +1,39 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- H U B --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Connections;
+package Hub is
+ pragma Remote_Call_Interface;
+ procedure Register_Listener (Id : Integer; Ptr : Connections.Connection);
+ function Get_Listener (Id : Integer) return Connections.Connection;
+end Hub;
============================================================
--- examples/dsa/connections/hub_main.adb 382f5c5066a65129332c6ec3ea66f5de089c4bcd
+++ examples/dsa/connections/hub_main.adb 382f5c5066a65129332c6ec3ea66f5de089c4bcd
@@ -0,0 +1,34 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- H U B _ M A I N --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+procedure Hub_Main is begin null; end Hub_Main;
============================================================
--- examples/dsa/connections/listeners.adb 8bb26cd878ba108b504958dc69cb7114fa01974a
+++ examples/dsa/connections/listeners.adb 8bb26cd878ba108b504958dc69cb7114fa01974a
@@ -0,0 +1,56 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- L I S T E N E R S --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Ada.Text_IO; use Ada.Text_IO;
+package body Listeners is
+
+ task body Listener_Task is
+ My_Id : Integer;
+ begin
+ accept Start (Id : Integer) do
+ My_Id := Id;
+ end Start;
+
+ loop
+ accept Process_Message (Message : String) do
+ Put_Line ("Got message: " & Message);
+ end Process_Message;
+ end loop;
+ end Listener_Task;
+
+ procedure Send (X : Active_Listener; Message : String) is
+ begin
+ X.T.Process_Message (Message);
+ end Send;
+
+end Listeners;
============================================================
--- examples/dsa/connections/listeners.ads 2f84486209933ae691ff4834e4e83edff985678e
+++ examples/dsa/connections/listeners.ads 2f84486209933ae691ff4834e4e83edff985678e
@@ -0,0 +1,49 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- L I S T E N E R S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Connections;
+package Listeners is
+
+ task type Listener_Task is
+ entry Start (Id : Integer);
+ entry Process_Message (Message : String);
+ end Listener_Task;
+
+ type Listener_Task_Acc is access Listener_Task;
+
+ type Active_Listener (T : access Listener_Task) is
+ new Connections.Connection_Listener with null record;
+ procedure Send (X : Active_Listener; Message : String);
+
+ type Active_Listener_Acc is access Active_Listener;
+end Listeners;
============================================================
--- examples/dsa/connections/server.adb dbac62b27214f39add871e39f6bf694b10a69e32
+++ examples/dsa/connections/server.adb dbac62b27214f39add871e39f6bf694b10a69e32
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- S E R V E R --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line; use Ada.Command_Line;
+with Connections;
+with Hub;
+with Listeners; use Listeners;
+
+procedure Server is
+ My_Id : constant Integer := Integer'Value (Argument (1));
+ Myself_T : constant Listener_Task_Acc := new Listener_Task;
+ Myself : constant Active_Listener_Acc := new Active_Listener (Myself_T);
+begin
+ Myself.T.Start (My_Id);
+ Hub.Register_Listener
+ (Id => My_Id, Ptr => Connections.Connection (Myself));
+end Server;
============================================================
--- examples/dsa/demo/noproc.adb 6df02d6dee51a7e0510bc650f77d0b6c808108cb
+++ examples/dsa/demo/noproc.adb 6df02d6dee51a7e0510bc650f77d0b6c808108cb
@@ -0,0 +1,34 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- N O P R O C --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+procedure Noproc is begin null; end Noproc;
============================================================
--- examples/dsa/mailboxes/client.adb d5fd1609be9fb3af5f6c4c44a80f6211010482da
+++ examples/dsa/mailboxes/client.adb d5fd1609be9fb3af5f6c4c44a80f6211010482da
@@ -0,0 +1,42 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- C L I E N T --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line; use Ada.Command_Line;
+with Hub;
+with Mailboxes;
+procedure Client is
+ Target : Mailboxes.Remote_Mailbox;
+begin
+ Target := Hub.Get_Mailbox (Integer'Value (Argument (1)));
+ Target.Send_Message (Argument (2));
+end Client;
============================================================
--- examples/dsa/mailboxes/hub.adb c6c0d705e16447985edf4705a939aa6aa5cafb93
+++ examples/dsa/mailboxes/hub.adb c6c0d705e16447985edf4705a939aa6aa5cafb93
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- H U B --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+package body Hub is
+ All_Mailboxes : array (0 .. 7) of Mailboxes.Remote_Mailbox;
+
+ procedure Register_Mailbox (Id : Integer; Ptr : Mailboxes.Remote_Mailbox) is
+ begin
+ All_Mailboxes (Id) := Ptr;
+ end Register_Mailbox;
+
+ function Get_Mailbox (Id : Integer) return Mailboxes.Remote_Mailbox is
+ begin
+ return All_Mailboxes (Id);
+ end Get_Mailbox;
+
+end Hub;
============================================================
--- examples/dsa/mailboxes/hub.ads 421b78155df83bf3bec01ca826c0c1baaded8943
+++ examples/dsa/mailboxes/hub.ads 421b78155df83bf3bec01ca826c0c1baaded8943
@@ -0,0 +1,39 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- H U B --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Mailboxes;
+package Hub is
+ pragma Remote_Call_Interface;
+ procedure Register_Mailbox (Id : Integer; Ptr : Mailboxes.Remote_Mailbox);
+ function Get_Mailbox (Id : Integer) return Mailboxes.Remote_Mailbox;
+end Hub;
============================================================
--- examples/dsa/mailboxes/hub_main.adb 382f5c5066a65129332c6ec3ea66f5de089c4bcd
+++ examples/dsa/mailboxes/hub_main.adb 382f5c5066a65129332c6ec3ea66f5de089c4bcd
@@ -0,0 +1,34 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- H U B _ M A I N --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+procedure Hub_Main is begin null; end Hub_Main;
============================================================
--- examples/dsa/mailboxes/mail.cfg fc56260163f31af745d8bcd20536032b1432918f
+++ examples/dsa/mailboxes/mail.cfg fc56260163f31af745d8bcd20536032b1432918f
@@ -0,0 +1,17 @@
+configuration Mail is
+ pragma Starter (None);
+
+ Hub_Partition : Partition := (Hub);
+ procedure Hub_Main is in Hub_Partition;
+ for Hub_Partition'Termination use Deferred_Termination;
+
+ Server_Partition : Partition;
+ procedure Server;
+ for Server_Partition'Main use Server;
+ for Server_Partition'Termination use Deferred_Termination;
+
+ Client_Partition : Partition;
+ procedure Client;
+ for Client_Partition'Main use Client;
+ for Client_Partition'Termination use Local_Termination;
+end Mail;
============================================================
--- examples/dsa/mailboxes/mailboxes-active.adb d7a41972f9cfbaf2b61def6c83377d7a1cc7eacd
+++ examples/dsa/mailboxes/mailboxes-active.adb d7a41972f9cfbaf2b61def6c83377d7a1cc7eacd
@@ -0,0 +1,51 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- M A I L B O X E S . A C T I V E --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Ada.Text_IO; use Ada.Text_IO;
+
+package body Mailboxes.Active is
+ task body Active_Mailbox is
+ My_Id : Integer;
+ begin
+ accept Start (Id : Integer) do
+ My_Id := Id;
+ end Start;
+ Put_Line ("Active_Mailbox #" & My_Id'Img & " starting");
+
+ loop
+ accept Send_Message (Message : Message_Type) do
+ Put_Line ("... got message: " & Message);
+ end Send_Message;
+ end loop;
+ end Active_Mailbox;
+end Mailboxes.Active;
============================================================
--- examples/dsa/mailboxes/mailboxes-active.ads d5f7e6dbdf25244d1a3a1f352857dfb361d74037
+++ examples/dsa/mailboxes/mailboxes-active.ads d5f7e6dbdf25244d1a3a1f352857dfb361d74037
@@ -0,0 +1,43 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- M A I L B O X E S . A C T I V E --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+package Mailboxes.Active is
+ task type Active_Mailbox is new Mailbox with
+ entry Start (Id : Integer);
+ entry Send_Message (Message : Message_Type);
+ end Active_Mailbox;
+
+ type Active_Mailbox_Acc is access all Active_Mailbox;
+ -- Local access type
+
+end Mailboxes.Active;
============================================================
--- examples/dsa/mailboxes/mailboxes.ads 09f88822dd99d55b119f3b4b55dc67c0922113d6
+++ examples/dsa/mailboxes/mailboxes.ads 09f88822dd99d55b119f3b4b55dc67c0922113d6
@@ -0,0 +1,47 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- M A I L B O X E S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+package Mailboxes is
+ pragma Remote_Types;
+
+ subtype Message_Type is String;
+
+ type Mailbox is limited interface;
+ procedure Send_Message (Recipient : access Mailbox; Message : Message_Type)
+ is abstract;
+
+ type Remote_Mailbox is access all Mailbox'Class;
+ pragma Asynchronous (Remote_Mailbox);
+ -- Remote access to mailbox
+
+end Mailboxes;
============================================================
--- examples/dsa/mailboxes/server.adb 08b31cacfdb5b25377fec24c3393e6d735c57dea
+++ examples/dsa/mailboxes/server.adb 08b31cacfdb5b25377fec24c3393e6d735c57dea
@@ -0,0 +1,45 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- S E R V E R --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+with Ada.Command_Line; use Ada.Command_Line;
+with Mailboxes.Active;
+with Hub;
+procedure Server is
+ My_Id : constant Integer := Integer'Value (Argument (1));
+ My_Mailbox : Mailboxes.Active.Active_Mailbox_Acc :=
+ new Mailboxes.Active.Active_Mailbox;
+begin
+ My_Mailbox.Start (My_Id);
+ Hub.Register_Mailbox
+ (Id => My_Id, Ptr => Mailboxes.Remote_Mailbox (My_Mailbox));
+end Server;
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_0/test.py 68aa225c597ee1ea1e57bf8327d51a4c0e6d649c
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_0/test.py 68aa225c597ee1ea1e57bf8327d51a4c0e6d649c
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'',
+ r'../examples/corba/all_functions/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.py a9e16bdeda47e08878aa5a5a8b21b1c30b3881fd
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_1/test.py a9e16bdeda47e08878aa5a5a8b21b1c30b3881fd
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'scenarios/polyorb_conf/soap.conf',
+ r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/soap.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.py 095ea4fd0e64c6d28d9a8f438d6adaf8f664d29c
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_2/test.py 095ea4fd0e64c6d28d9a8f438d6adaf8f664d29c
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/dynclient', r'',
+ r'../examples/corba/all_functions/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.py 6aaa8104fc496100e12d452b9c32cc48bb2c6589
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_3/test.py 6aaa8104fc496100e12d452b9c32cc48bb2c6589
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/dynclient', r'scenarios/polyorb_conf/soap.conf',
+ r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/soap.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_4/test.py 81d7aa7dba5d85b38893ac9b57fc8d16d20dd365
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_4/test.py 81d7aa7dba5d85b38893ac9b57fc8d16d20dd365
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'scenarios/polyorb_conf/giop_1_0.conf',
+ r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/giop_1_0.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_5/test.py 87e0e7439a7d748e177102e2cf098f2f17ba6581
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_5/test.py 87e0e7439a7d748e177102e2cf098f2f17ba6581
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'scenarios/polyorb_conf/giop_1_1.conf',
+ r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/giop_1_1.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_functions/ALL_FUNCTIONS_6/test.py 17ecf31c0883d79dc14bc798df49da7e68970074
+++ examples_bis/corba-all_functions/ALL_FUNCTIONS_6/test.py 17ecf31c0883d79dc14bc798df49da7e68970074
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_functions/client', r'scenarios/polyorb_conf/giop_1_2.conf',
+ r'../examples/corba/all_functions/server', r'scenarios/polyorb_conf/giop_1_2.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_0/test.py e4265b5ba5f5b7501c27a1f126e664bf41f82fc1
+++ examples_bis/corba-all_types/ALL_TYPES_0/test.py e4265b5ba5f5b7501c27a1f126e664bf41f82fc1
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'',
+ r'../examples/corba/all_types/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_types/ALL_TYPES_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_1/test.py 5787206f07f7dfe5e8ee1db67766458cce462035
+++ examples_bis/corba-all_types/ALL_TYPES_1/test.py 5787206f07f7dfe5e8ee1db67766458cce462035
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/soap.conf',
+ r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/soap.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_2/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_types/ALL_TYPES_2/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_2/test.py deff83559a903317c7eefa2a473395cc876349ba
+++ examples_bis/corba-all_types/ALL_TYPES_2/test.py deff83559a903317c7eefa2a473395cc876349ba
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/dynclient', r'',
+ r'../examples/corba/all_types/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_3/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_types/ALL_TYPES_3/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_3/test.py dc2d40418cf86d7478a2c1e46c91ed02bf6d6657
+++ examples_bis/corba-all_types/ALL_TYPES_3/test.py dc2d40418cf86d7478a2c1e46c91ed02bf6d6657
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/dynclient', r'scenarios/polyorb_conf/soap.conf',
+ r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/soap.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_4/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-all_types/ALL_TYPES_4/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_4/test.py 5f13fb1756c71da7191b9f0db57c313f60df2a23
+++ examples_bis/corba-all_types/ALL_TYPES_4/test.py 5f13fb1756c71da7191b9f0db57c313f60df2a23
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/ssliop.conf',
+ r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/ssliop.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_5/test.py bde530741e5188a744cf07e049874f77ad76054a
+++ examples_bis/corba-all_types/ALL_TYPES_5/test.py bde530741e5188a744cf07e049874f77ad76054a
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/giop_1_0.conf',
+ r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/giop_1_0.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_6/test.py b6fe510f02e466e6ec6439b9b649cd6c056dba83
+++ examples_bis/corba-all_types/ALL_TYPES_6/test.py b6fe510f02e466e6ec6439b9b649cd6c056dba83
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/giop_1_1.conf',
+ r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/giop_1_1.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-all_types/ALL_TYPES_7/test.py af7461b837c089c4d285991f0849de52a1c3bee6
+++ examples_bis/corba-all_types/ALL_TYPES_7/test.py af7461b837c089c4d285991f0849de52a1c3bee6
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/all_types/client', r'scenarios/polyorb_conf/giop_1_2.conf',
+ r'../examples/corba/all_types/server', r'scenarios/polyorb_conf/giop_1_2.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_0/test.py a137b15e04e8921d2454d76e615fcd342aebe29d
+++ examples_bis/corba-echo/ECHO_0/test.py a137b15e04e8921d2454d76e615fcd342aebe29d
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'',
+ r'../examples/corba/echo/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_1/test.py a98c4323ca0913c26ca1c017cd7b21d7485c662b
+++ examples_bis/corba-echo/ECHO_1/test.py a98c4323ca0913c26ca1c017cd7b21d7485c662b
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'scenarios/polyorb_conf/soap.conf',
+ r'../examples/corba/echo/server', r'scenarios/polyorb_conf/soap.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_2/test.py ac078c610334cc58bd98d1d380fceb0e1f5e0f3f
+++ examples_bis/corba-echo/ECHO_2/test.py ac078c610334cc58bd98d1d380fceb0e1f5e0f3f
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/dynclient', r'',
+ r'../examples/corba/echo/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_3/test.py 573d5e8b192de06b6ef3fb0b314b3945fb515c43
+++ examples_bis/corba-echo/ECHO_3/test.py 573d5e8b192de06b6ef3fb0b314b3945fb515c43
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/dynclient', r'scenarios/polyorb_conf/soap.conf',
+ r'../examples/corba/echo/server', r'scenarios/polyorb_conf/soap.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_4/test.py c9e52764bc62e3d5365584e9b4b54b4bca540b0b
+++ examples_bis/corba-echo/ECHO_4/test.py c9e52764bc62e3d5365584e9b4b54b4bca540b0b
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/dynclient', r'',
+ r'../examples/corba/echo/dynserver', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_5/test.py b002b1a4d6669b66adc84404f2880d4aef6167fc
+++ examples_bis/corba-echo/ECHO_5/test.py b002b1a4d6669b66adc84404f2880d4aef6167fc
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'scenarios/polyorb_conf/giop_1_0.conf',
+ r'../examples/corba/echo/server', r'scenarios/polyorb_conf/giop_1_0.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_6/test.py c19dad02feb280d47ec405e2d9c394465fd998ce
+++ examples_bis/corba-echo/ECHO_6/test.py c19dad02feb280d47ec405e2d9c394465fd998ce
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'scenarios/polyorb_conf/giop_1_1.conf',
+ r'../examples/corba/echo/server', r'scenarios/polyorb_conf/giop_1_1.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-echo/ECHO_7/test.py af110eecdf05cecd91d7ab2580f5f16c17965686
+++ examples_bis/corba-echo/ECHO_7/test.py af110eecdf05cecd91d7ab2580f5f16c17965686
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'scenarios/polyorb_conf/giop_1_2.conf',
+ r'../examples/corba/echo/server', r'scenarios/polyorb_conf/giop_1_2.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-random/CORBA_RANDOM_0/test.py 6dce46ed02bed61b77ac825525b7a53a0be34b66
+++ examples_bis/corba-random/CORBA_RANDOM_0/test.py 6dce46ed02bed61b77ac825525b7a53a0be34b66
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/random/client', r'',
+ r'../examples/corba/random/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-random/CORBA_RANDOM_1/test.py b61a010850494f7edbb30b8d3ea229be1bc0b305
+++ examples_bis/corba-random/CORBA_RANDOM_1/test.py b61a010850494f7edbb30b8d3ea229be1bc0b305
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/random/client', r'scenarios/polyorb_conf/soap.conf',
+ r'../examples/corba/random/server', r'scenarios/polyorb_conf/soap.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-client_propagated/RTCORBA_CLIENT_PROPAGATED_0/test.py f83ee0cf1f7c7b6dcea97bfe4558f4aa94983ac4
+++ examples_bis/corba-rtcorba-client_propagated/RTCORBA_CLIENT_PROPAGATED_0/test.py f83ee0cf1f7c7b6dcea97bfe4558f4aa94983ac4
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/rtcorba/client_propagated/client', r'',
+ r'../examples/corba/rtcorba/client_propagated/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.py 2b28e439b56093378a809e48d1c96c0e828325b1
+++ examples_bis/corba-rtcorba-dhb/RTCORBA_DHB_0/test.py 2b28e439b56093378a809e48d1c96c0e828325b1
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/rtcorba/dhb/rtcorba_iiop_client', r'',
+ r'../examples/corba/rtcorba/dhb/rtcorba_iiop_server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.py 35bc2e824be67e6584afee208d5ad2f245f3e181
+++ examples_bis/corba-rtcorba-rtcosscheduling/RTCORBA_RTCOSSCHEDULING_0/test.py 35bc2e824be67e6584afee208d5ad2f245f3e181
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/rtcorba/rtcosscheduling/client', r'',
+ r'../examples/corba/rtcorba/rtcosscheduling/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_0/test.py b05bf0f80cd66aa50a08953a81be621d8589ac22
+++ examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_0/test.py b05bf0f80cd66aa50a08953a81be621d8589ac22
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/echo/client', r'',
+ r'../examples/corba/rtcorba/server_declared/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_1/test.py ec64e5c98ed3e89b2be01617d30dd7f81c6bdf8d
+++ examples_bis/corba-rtcorba-server_declared/RTCORBA_SERVER_DECLARED_1/test.py ec64e5c98ed3e89b2be01617d30dd7f81c6bdf8d
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/rtcorba/server_declared/client', r'',
+ r'../examples/corba/rtcorba/server_declared/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.py fbeefc45c9538c10f319a6990606ab395fdafe7b
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_0/test.py fbeefc45c9538c10f319a6990606ab395fdafe7b
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/corba/secure_echo/gssup_example', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.py 4b03d1a1d9410f0714b5c536059d5757dc1c40af
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_1/test.py 4b03d1a1d9410f0714b5c536059d5757dc1c40af
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/corba/secure_echo/tls_example', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.py f111fa79ac937964a0ddf3fe2f5121dde8612b1c
+++ examples_bis/corba-secure_echo/CORBA_SECURE_ECHO_2/test.py f111fa79ac937964a0ddf3fe2f5121dde8612b1c
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/corba/secure_echo/tls_gssup_example', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/corba-send/CORBA_MIOP_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/corba-send/CORBA_MIOP_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/corba-send/CORBA_MIOP_0/test.py 1fa34c814de58ac2b0702a4317bdc812a11f0b79
+++ examples_bis/corba-send/CORBA_MIOP_0/test.py 1fa34c814de58ac2b0702a4317bdc812a11f0b79
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/corba/send/send', r'scenarios/polyorb_conf/miop.conf',
+ r'../examples/corba/send/listener', r'scenarios/polyorb_conf/miop.conf'):
+ sys.exit(1)
+
============================================================
--- examples_bis/moma/MOMA_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/moma/MOMA_0/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/moma/MOMA_0/test.py 3339674efe649e7a96c1cb0958e833f56fea17ff
+++ examples_bis/moma/MOMA_0/test.py 3339674efe649e7a96c1cb0958e833f56fea17ff
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/moma/client', r'',
+ r'../examples/moma/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/moma/MOMA_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
+++ examples_bis/moma/MOMA_1/test.opt 256d3f81acf90fc4f2e607c420a7eb496f6b0758
@@ -0,0 +1 @@
+ALL XFAIL
============================================================
--- examples_bis/moma/MOMA_1/test.py 9beac423042e6a59ce34544fbc4a6d12f58db5dd
+++ examples_bis/moma/MOMA_1/test.py 9beac423042e6a59ce34544fbc4a6d12f58db5dd
@@ -0,0 +1,8 @@
+
+from test_utils import *
+import sys
+
+if not client_server(r'../examples/moma/client_call_back', r'',
+ r'../examples/moma/server', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/polyorb/POLYORB_CORE_0/test.py 010053b9ca51afba7b1a56b706e8e4536eaf1ef7
+++ examples_bis/polyorb/POLYORB_CORE_0/test.py 010053b9ca51afba7b1a56b706e8e4536eaf1ef7
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/polyorb/polyorb-test-no_tasking', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/polyorb/POLYORB_CORE_1/test.py b05b3d2e46d13c4d8af74c6957997e82cfc1a0fd
+++ examples_bis/polyorb/POLYORB_CORE_1/test.py b05b3d2e46d13c4d8af74c6957997e82cfc1a0fd
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/polyorb/polyorb-test-no_tasking_poa', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/polyorb/POLYORB_CORE_2/test.py 44ae14db934212dbaca6300b106ff391b3eaca0c
+++ examples_bis/polyorb/POLYORB_CORE_2/test.py 44ae14db934212dbaca6300b106ff391b3eaca0c
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/polyorb/polyorb-test-thread_pool', r''):
+ sys.exit(1)
+
============================================================
--- examples_bis/polyorb/POLYORB_CORE_3/test.py ea3a2fc70be49b54254fe2d5e2cf4dfbd33ebe9b
+++ examples_bis/polyorb/POLYORB_CORE_3/test.py ea3a2fc70be49b54254fe2d5e2cf4dfbd33ebe9b
@@ -0,0 +1,7 @@
+
+from test_utils import *
+import sys
+
+if not local(r'../examples/polyorb/polyorb-test-thread_pool_poa', r''):
+ sys.exit(1)
+
============================================================
--- src/polyorb-binding_objects-lists.ads 0bcd6b554b70f79f741ead2ade6a95fa30ded467
+++ src/polyorb-binding_objects-lists.ads 0bcd6b554b70f79f741ead2ade6a95fa30ded467
@@ -0,0 +1,38 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- P O L Y O R B . B I N D I N G _ O B J E C T S . L I S T S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+package PolyORB.Binding_Objects.Lists is
+ new PolyORB.Utils.Ilists.Lists
+ (T => Binding_Object'Class,
+ T_Acc => Binding_Object_Access,
+ Doubly_Linked => True);
============================================================
--- src/polyorb-smart_pointers-controlled_entities.adb ce2d84752e999da9daedc2073cd10754146ecf53
+++ src/polyorb-smart_pointers-controlled_entities.adb ce2d84752e999da9daedc2073cd10754146ecf53
@@ -0,0 +1,64 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- POLYORB.SMART_POINTERS.CONTROLLED_ENTITIES --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+package body PolyORB.Smart_Pointers.Controlled_Entities is
+
+ --------------
+ -- Finalize --
+ --------------
+
+ procedure Finalize (X : in out Entity_Controller) is
+ begin
+ Finalize (X.E.all);
+ end Finalize;
+
+ ----------------
+ -- Initialize --
+ ----------------
+
+ procedure Initialize (X : in out Entity_Controller) is
+ begin
+ Initialize (X.E.all);
+ end Initialize;
+
+ -------------------
+ -- Is_Controlled --
+ -------------------
+
+ function Is_Controlled (X : Entity) return Boolean is
+ pragma Unreferenced (X);
+ begin
+ return True;
+ end Is_Controlled;
+
+end PolyORB.Smart_Pointers.Controlled_Entities;
============================================================
--- src/polyorb-smart_pointers-controlled_entities.ads bbb49214d7c7afb7af251dac8d5bdf6b37560498
+++ src/polyorb-smart_pointers-controlled_entities.ads bbb49214d7c7afb7af251dac8d5bdf6b37560498
@@ -0,0 +1,67 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- POLYORB.SMART_POINTERS.CONTROLLED_ENTITIES --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+pragma Ada_2005;
+
+package PolyORB.Smart_Pointers.Controlled_Entities is
+
+ pragma Preelaborate;
+
+ ---------------------------------
+ -- Controlled task-safe entity --
+ ---------------------------------
+
+ type Entity is abstract new Non_Controlled_Entity with private;
+ procedure Initialize (X : in out Entity) is null;
+ function Is_Controlled (X : Entity) return Boolean;
+
+private
+
+ ---------------------------------
+ -- Task-safe controlled entity --
+ ---------------------------------
+
+ type Entity_Controller (E : access Entity'Class)
+ is new Ada.Finalization.Limited_Controlled with null record;
+
+ procedure Initialize (X : in out Entity_Controller);
+ procedure Finalize (X : in out Entity_Controller);
+
+ type Entity is abstract new Non_Controlled_Entity with record
+ Controller : Entity_Controller (Entity'Access);
+ -- Controller component used to trigger a call to the Entity's
+ -- Finalize primitive operation when it is Finalized (note that
+ -- Entity itself is not a controlled type).
+ end record;
+
+end PolyORB.Smart_Pointers.Controlled_Entities;
============================================================
--- src/polyorb-utils-ilists.adb 0dd5c696b3f3b3a49b706206c8a177b10bc14c5b
+++ src/polyorb-utils-ilists.adb 0dd5c696b3f3b3a49b706206c8a177b10bc14c5b
@@ -0,0 +1,237 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- P O L Y O R B . U T I L S . I L I S T S --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+package body PolyORB.Utils.Ilists is
+
+ package body Lists is
+
+ function "+" (X : access T) return T_Acc;
+ pragma Inline ("+");
+ -- Convert X to a general access type, bypassing accessibility checks
+
+ function Link (X : access T; Which : Link_Type) return T_Acc;
+ procedure Set_Link (X : access T; Which : Link_Type; To : T_Acc);
+ pragma Inline (Link);
+ pragma Inline (Set_Link);
+ -- Short-hand notation for read and write usage of the Link accessor
+
+ ----------
+ -- Link --
+ ----------
+
+ function Link (X : access T; Which : Link_Type) return T_Acc is
+ begin
+ return Link (X, Which).all;
+ end Link;
+
+ --------------
+ -- Set_Link --
+ --------------
+
+ procedure Set_Link (X : access T; Which : Link_Type; To : T_Acc) is
+ begin
+ Link (X, Which).all := To;
+ end Set_Link;
+
+ ---------
+ -- "+" --
+ ---------
+
+ function "+" (X : access T) return T_Acc is
+ pragma Suppress (Access_Check);
+ begin
+ return X.all'Unchecked_Access;
+ end "+";
+
+ ------------
+ -- Append --
+ ------------
+
+ procedure Append (L : in out List; X : access T) is
+ begin
+ if L.Last /= null then
+ if Doubly_Linked then
+ Set_Link (X, Prev, L.Last);
+ end if;
+ Set_Link (L.Last, Next, +X);
+ end if;
+ L.Last := +X;
+ if L.First = null then
+ L.First := +X;
+ end if;
+ L.Length := L.Length + 1;
+ end Append;
+
+ -----------
+ -- First --
+ -----------
+
+ function First (L : List) return Iterator is
+ begin
+ return Iterator (L.First);
+ end First;
+
+ --------------
+ -- Is_Empty --
+ --------------
+
+ function Is_Empty (L : List) return Boolean is
+ begin
+ return L.Length = 0;
+ end Is_Empty;
+
+ ----------
+ -- Last --
+ ----------
+
+ function Last (L : List) return Iterator is
+ pragma Unreferenced (L);
+ begin
+ return null;
+ end Last;
+
+ ----------
+ -- Last --
+ ----------
+
+ function Last (It : Iterator) return Boolean is
+ begin
+ return It = null;
+ end Last;
+
+ ------------
+ -- Length --
+ ------------
+
+ function Length (L : List) return Natural is
+ begin
+ return L.Length;
+ end Length;
+
+ ----------
+ -- Next --
+ ----------
+
+ procedure Next (It : in out Iterator) is
+ begin
+ It := Iterator (T_Acc'(Link (It, Next)));
+ end Next;
+
+ -------------
+ -- Prepend --
+ -------------
+
+ procedure Prepend (L : in out List; X : access T) is
+ begin
+ Set_Link (X, Next, L.First);
+ if Doubly_Linked and then L.First /= null then
+ Set_Link (L.First, Prev, +X);
+ end if;
+
+ L.First := +X;
+ if L.Last = null then
+ L.Last := +X;
+ end if;
+ L.Length := L.Length + 1;
+ end Prepend;
+
+ ------------
+ -- Remove --
+ ------------
+
+ procedure Remove (L : in out List; It : in out Iterator) is
+ Element : constant access T := It;
+ begin
+ Next (It);
+ Remove_Element (L, Element);
+ end Remove;
+
+ --------------------
+ -- Remove_Element --
+ --------------------
+
+ procedure Remove_Element (L : in out List; X : access T) is
+ Previous : T_Acc;
+ begin
+ if Doubly_Linked then
+ Previous := Link (X, Prev);
+ else
+ pragma Assert (X = L.First);
+ Previous := null;
+ end if;
+ Remove_Element (L, X => X, PX => Previous);
+ end Remove_Element;
+
+ --------------------
+ -- Remove_Element --
+ --------------------
+
+ procedure Remove_Element
+ (L : in out List;
+ X : access T;
+ PX : access T)
+ is
+ begin
+ if PX = null then
+ L.First := Link (X, Next);
+ else
+ Set_Link (PX, Next, Link (X, Next));
+ end if;
+
+ if L.Last = X then
+ L.Last := +PX;
+ end if;
+
+ if Doubly_Linked then
+ if Link (X, Next) /= T_Acc'(null) then
+ Set_Link (Link (X, Next), Prev, +PX);
+ end if;
+ Set_Link (X, Prev, null);
+ end if;
+
+ Set_Link (X, Next, null);
+ L.Length := L.Length - 1;
+ end Remove_Element;
+
+ -----------
+ -- Value --
+ -----------
+
+ function Value (It : Iterator) return T_Acc is
+ begin
+ return T_Acc (It);
+ end Value;
+
+ end Lists;
+
+end PolyORB.Utils.Ilists;
============================================================
--- src/polyorb-utils-ilists.ads d3074756615441d8370dbb6dee1e4130a1d1f759
+++ src/polyorb-utils-ilists.ads d3074756615441d8370dbb6dee1e4130a1d1f759
@@ -0,0 +1,124 @@
+------------------------------------------------------------------------------
+-- --
+-- POLYORB COMPONENTS --
+-- --
+-- P O L Y O R B . U T I L S . I L I S T S --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2009, Free Software Foundation, Inc. --
+-- --
+-- PolyORB is free software; you can redistribute it and/or modify it --
+-- under terms of the GNU General Public License as published by the Free --
+-- Software Foundation; either version 2, or (at your option) any later --
+-- version. PolyORB is distributed in the hope that it will be useful, --
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- --
+-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
+-- License for more details. You should have received a copy of the GNU --
+-- General Public License distributed with PolyORB; see file COPYING. If --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
+-- --
+-- As a special exception, if other files instantiate generics from this --
+-- unit, or you link this unit with other files to produce an executable, --
+-- this unit does not by itself cause the resulting executable to be --
+-- covered by the GNU General Public License. This exception does not --
+-- however invalidate any other reasons why the executable file might be --
+-- covered by the GNU Public License. --
+-- --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
+-- --
+------------------------------------------------------------------------------
+
+-- In-place chained lists
+
+-- This unit provides a chained list data type operating on any limited type
+-- that exposes Next and (for the doubly linked case) Previous pointers.
+-- None of the provided list operations use any dynamic memory allocation.
+
+pragma Ada_2005;
+
+package PolyORB.Utils.Ilists is
+
+ pragma Preelaborate;
+
+ type Link_Type is (Prev, Next);
+
+ generic
+ type T (<>) is limited private;
+ type T_Acc is access all T;
+ with function Link
+ (X : access T; Which : Link_Type) return access T_Acc is <>;
+ -- Accessor for the list pointers. For a doubly linked list, Prev and
+ -- Next must be supported. For a simply linked list, only Next needs to
+ -- be supported.
+
+ Doubly_Linked : Boolean;
+ -- If True, the list is doubly linked
+
+ package Lists is
+ type List is private;
+ -- A list of objects of type T
+
+ type Iterator is private;
+ -- Iterator over List
+
+ procedure Append (L : in out List; X : access T);
+ -- Append X to L. Note that any given object cannot be appended to more
+ -- than one list (from the same instance of this unit) at a given time.
+
+ procedure Prepend (L : in out List; X : access T);
+ -- Prepend X to L. Note that any given object cannot be appended to more
+ -- than one list (from the same instance of this unit) at a given time.
+
+ procedure Remove (L : in out List; It : in out Iterator);
+ -- Remove the element denoted by L and advance It to the next element
+ -- in L.
+
+ procedure Remove_Element (L : in out List; X : access T);
+ -- Remove X from L (L needs to be doubly linked)
+
+ procedure Remove_Element (L : in out List; X : access T; PX : access T);
+ -- Remove X from L (L may be simply linked). PX is the previous element
+ -- in L.
+
+ function First (L : List) return Iterator;
+ -- Return an iterator denoting the first element of L
+
+ function Last (L : List) return Iterator;
+ -- Return an iterator denoting a position past the last element of L
+
+ procedure Next (It : in out Iterator);
+ -- Advance It to the next element in its list
+
+ function Last (It : Iterator) return Boolean;
+ -- True when It is past the last element in its list
+
+ function Value (It : Iterator) return T_Acc;
+ -- Return the element at It
+
+ function Length (L : List) return Natural;
+ -- Return the length of L
+
+ function Is_Empty (L : List) return Boolean;
+ -- True when L has no elements
+
+ private
+ pragma Inline (First);
+ pragma Inline (Next);
+ pragma Inline (Last);
+ pragma Inline (Value);
+ pragma Inline (Length);
+ pragma Inline (Is_Empty);
+
+ type Iterator is new T_Acc;
+
+ type List is record
+ First, Last : T_Acc;
+ Length : Natural := 0;
+ end record;
+
+ end Lists;
+
+end PolyORB.Utils.Ilists;
============================================================
--- testsuite/corba/performance/java/Makefile dfb0bb2fd6c08a04744e1343f34bf7d0efabd79e
+++ testsuite/corba/performance/java/Makefile dfb0bb2fd6c08a04744e1343f34bf7d0efabd79e
@@ -0,0 +1,16 @@
+
+all:
+ idlj -fall benchs.idl
+ javac benchsServer.java benchsPackage/*.java
+# orbd -ORBInitialPort 1050 -ORBInitialHost localhost
+ java benchsServer -ORBInitialPort 1050 -ORBInitialHost localhost
+
+clean:
+ rm -rf *.class \
+ benchsHelper.java \
+ benchs.java \
+ benchsPOA.java \
+ benchsHolder.java \
+ benchsOperations.java \
+ _benchsStub.java \
+ benchsPackage
============================================================
--- testsuite/corba/performance/java/benchs.idl 0383f70a59878d96dd5dea9191db7e11a0b1f191
+++ testsuite/corba/performance/java/benchs.idl 0383f70a59878d96dd5dea9191db7e11a0b1f191
@@ -0,0 +1,122 @@
+//--------------------------------------------------------------------------//
+// //
+// POLYORB COMPONENTS //
+// //
+// B E N C H S //
+// //
+// I D L //
+// //
+// Copyright (C) 2009, Free Software Foundation, Inc. //
+// //
+// PolyORB is free software; you can redistribute it and/or modify it //
+// under terms of the GNU General Public License as published by the Free //
+// Software Foundation; either version 2, or (at your option) any later //
+// version. PolyORB is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- //
+// TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public //
+// License for more details. You should have received a copy of the GNU //
+// General Public License distributed with PolyORB; see file COPYING. If //
+// not, write to the Free Software Foundation, 51 Franklin Street, Fifth //
+// Floor, Boston, MA 02111-1301, USA. //
+// //
+// As a special exception, if other files instantiate generics from this //
+// unit, or you link this unit with other files to produce an executable, //
+// this unit does not by itself cause the resulting executable to be //
+// covered by the GNU General Public License. This exception does not //
+// however invalidate any other reasons why the executable file might be //
+// covered by the GNU Public License. //
+// //
+// PolyORB is maintained by AdaCore //
+// (email: sales@adacore.com) //
+// //
+//--------------------------------------------------------------------------//
+// This IDL file is used to benchmarks CORBA application. Each
+// function is expected to return a value equal to its parameter. It
+// allows one to evaluate the impact of parameter
+// marshalling/unmarshalling on ORB performance.
+
+interface benchs {
+
+ // fonction without parameter
+ short noParameter ();
+
+ // procedure with variable name length
+ void azerty ();
+
+ // fonction with one parameter
+ // Simple types
+ boolean echoBoolean(in boolean arg) ;
+ short echoShort(in short arg) ;
+ long echoLong(in long arg) ;
+
+ float echoFloat(in float arg) ;
+ double echoDouble(in double arg) ;
+ char echoChar(in char arg) ;
+ wchar echoWChar(in wchar arg) ;
+ string echoString (in string arg) ;
+ wstring echoWstring (in wstring arg) ;
+
+ // Enum
+ enum Color { Red, Green, Blue };
+ Color echoColor (in Color arg);
+
+ // Array of enum
+ typedef Color Rainbow[7];
+ Rainbow echoRainbow (in Rainbow arg);
+
+
+ // Unions
+ union myUnion switch (long) {
+ case 1: long Counter;
+ case 2: boolean Flag;
+ case 3: Color Hue;
+ default: long Unknown;
+ };
+
+ myUnion echoUnion (in myUnion arg);
+
+ union myUnionEnumSwitch switch (Color) {
+ case Red: long foo;
+ case Green: short bar;
+ case Blue: string baz;
+ };
+ myUnionEnumSwitch echoUnionEnumSwitch (in myUnionEnumSwitch arg);
+
+ // Structs
+ struct simple_struct {
+ long a;
+ string s;
+ };
+ simple_struct echoStruct (in simple_struct arg);
+
+ struct array_struct {
+ long a[10];
+ unsigned short b;
+ };
+ array_struct echoArrayStruct (in array_struct arg);
+
+ // Big arrays
+ // ----------
+
+ typedef long sixteenKb[64][64];
+ sixteenKb echoSixteenKb (in sixteenKb arg);
+
+// struct composite_struct {
+// fixed<12,3> fixedMember;
+// sequence<sequence<octet> > seqseqMember;
+// long double matrixMember[3][4];
+// };
+
+ struct nested_struct {
+ simple_struct ns;
+ };
+ nested_struct echoNestedStruct (in nested_struct arg);
+
+
+ // Sequences
+ typedef sequence<short> U_sequence;
+ U_sequence echoUsequence (in U_sequence arg);
+
+ // stop the server
+ void StopServer ();
+};
============================================================
--- testsuite/corba/performance/java/benchsServer.java 325253d97716cc69eadec2ab2c3e306fb04978be
+++ testsuite/corba/performance/java/benchsServer.java 325253d97716cc69eadec2ab2c3e306fb04978be
@@ -0,0 +1,153 @@
+//--------------------------------------------------------------------------//
+// //
+// POLYORB COMPONENTS //
+// //
+// b e n c h s S e r v e r //
+// //
+// J A V A //
+// //
+// Copyright (C) 2009, Free Software Foundation, Inc. //
+// //
+// PolyORB is free software; you can redistribute it and/or modify it //
+// under terms of the GNU General Public License as published by the Free //
+// Software Foundation; either version 2, or (at your option) any later //
+// version. PolyORB is distributed in the hope that it will be useful, //
+// but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- //
+// TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public //
+// License for more details. You should have received a copy of the GNU //
+// General Public License distributed with PolyORB; see file COPYING. If //
+// not, write to the Free Software Foundation, 51 Franklin Street, Fifth //
+// Floor, Boston, MA 02111-1301, USA. //
+// //
+// As a special exception, if other files instantiate generics from this //
+// unit, or you link this unit with other files to produce an executable, //
+// this unit does not by itself cause the resulting executable to be //
+// covered by the GNU General Public License. This exception does not //
+// however invalidate any other reasons why the executable file might be //
+// covered by the GNU Public License. //
+// //
+// PolyORB is maintained by AdaCore //
+// (email: sales@adacore.com) //
+// //
+//--------------------------------------------------------------------------//
+import org.omg.CORBA.*;
+import org.omg.PortableServer.*;
+
+class benchsImpl extends benchsPOA {
+ private ORB orb;
+ private short data = 123;
+
+ public void setORB (ORB orb_val) {
+ orb = orb_val;
+ }
+
+ public short noParameter () {
+ return data;
+ }
+
+ public void azerty () {
+ }
+
+ public boolean echoBoolean (boolean arg) {
+ return arg;
+ }
+
+ public short echoShort (short arg) {
+ return arg;
+ }
+
+ public int echoLong (int arg) {
+ return arg;
+ }
+
+ public float echoFloat (float arg) {
+ return arg;
+ }
+
+ public double echoDouble (double arg) {
+ return arg;
+ }
+
+ public char echoChar (char arg) {
+ return arg;
+ }
+
+ public char echoWChar (char arg) {
+ return arg;
+ }
+
+ public String echoString (String arg) {
+ return arg;
+ }
+
+ public String echoWstring (String arg) {
+ return arg;
+ }
+
+ public benchsPackage.Color echoColor (benchsPackage.Color arg) {
+ return arg;
+ }
+
+ public benchsPackage.Color[] echoRainbow (benchsPackage.Color[] arg) {
+ return arg;
+ }
+
+ public benchsPackage.myUnion echoUnion (benchsPackage.myUnion arg) {
+ return arg;
+ }
+
+ public benchsPackage.myUnionEnumSwitch echoUnionEnumSwitch (benchsPackage.myUnionEnumSwitch arg) {
+ return arg;
+ }
+
+ public benchsPackage.simple_struct echoStruct (benchsPackage.simple_struct arg) {
+ return arg;
+ }
+
+ public benchsPackage.array_struct echoArrayStruct (benchsPackage.array_struct arg) {
+ return arg;
+ }
+
+ public int[][] echoSixteenKb (int[][] arg) {
+ return arg;
+ }
+
+ public benchsPackage.nested_struct echoNestedStruct (benchsPackage.nested_struct arg) {
+ return arg;
+ }
+
+ public short[] echoUsequence (short[] arg) {
+ return arg;
+ }
+
+ public void StopServer () {
+ orb.shutdown(false);
+ }
+}
+
+public class benchsServer {
+
+ public static void main (String args[]) {
+ try {
+ ORB orb = ORB.init (args, null);
+ POA poa = POAHelper.narrow (orb.resolve_initial_references ("RootPOA"));
+ poa.the_POAManager ().activate ();
+
+ benchsImpl impl = new benchsImpl ();
+ impl.setORB (orb);
+ benchs ref = benchsHelper.narrow (poa.servant_to_reference (impl));
+
+ System.out.println (orb.object_to_string (ref));
+ System.out.println ("benchServer ready and waiting...");
+
+ orb.run ();
+
+ } catch (Exception e) {
+ System.err.println ("ERROR: " + e);
+ e.printStackTrace (System.out);
+ }
+
+ System.out.println ("benchServer Exiting...");
+ }
+
+}
============================================================
--- MANIFEST beaa6ff2ced91a674fbd62d84038eecee7ce4c8d
+++ MANIFEST 3650d7c4d95f47132a24bd91ab8215d95931b59c
@@ -6,6 +6,7 @@ README
Makefile.in
NEWS
README
+README.DSA
VERSION
acinclude.m4
aclocal.m4
@@ -589,13 +590,38 @@ examples/corba/send/test-printer-impl.ad
examples/corba/send/test-controller-impl.ads
examples/corba/send/test-printer-impl.adb
examples/corba/send/test-printer-impl.ads
-examples/dsa/Makefile.local
-examples/dsa/echo/README
+examples/dsa/README
+examples/dsa/connections/client.adb
+examples/dsa/connections/connect.cfg
+examples/dsa/connections/connections.ads
+examples/dsa/connections/hub.adb
+examples/dsa/connections/hub.ads
+examples/dsa/connections/hub_main.adb
+examples/dsa/connections/listeners.adb
+examples/dsa/connections/listeners.ads
+examples/dsa/connections/server.adb
+examples/dsa/demo/client_main.adb
+examples/dsa/demo/matrices.adb
+examples/dsa/demo/matrices.ads
+examples/dsa/demo/noproc.adb
+examples/dsa/demo/rci.adb
+examples/dsa/demo/rci.ads
+examples/dsa/demo/rt.ads
+examples/dsa/demo/sp.ads
+examples/dsa/demo/testbed.cfg
examples/dsa/echo/client.adb
examples/dsa/echo/echo.cfg
examples/dsa/echo/server.adb
examples/dsa/echo/server.ads
-examples/dsa/local.gpr
+examples/dsa/mailboxes/client.adb
+examples/dsa/mailboxes/hub.adb
+examples/dsa/mailboxes/hub.ads
+examples/dsa/mailboxes/hub_main.adb
+examples/dsa/mailboxes/mail.cfg
+examples/dsa/mailboxes/mailboxes-active.adb
+examples/dsa/mailboxes/mailboxes-active.ads
+examples/dsa/mailboxes/mailboxes.ads
+examples/dsa/mailboxes/server.adb
examples/moma/Makefile.local
examples/moma/README
examples/moma/client.adb
@@ -1324,6 +1350,7 @@ src/polyorb-binding_object_qos.ads
src/polyorb-binding_data_qos.ads
src/polyorb-binding_object_qos.adb
src/polyorb-binding_object_qos.ads
+src/polyorb-binding_objects-lists.ads
src/polyorb-binding_objects.adb
src/polyorb-binding_objects.ads
src/polyorb-buffers.adb
@@ -1589,6 +1616,8 @@ src/polyorb-setup.ads
src/polyorb-setup-tasking-ravenscar.ads
src/polyorb-setup-tasking.ads
src/polyorb-setup.ads
+src/polyorb-smart_pointers-controlled_entities.adb
+src/polyorb-smart_pointers-controlled_entities.ads
src/polyorb-smart_pointers-initialization.adb
src/polyorb-smart_pointers-initialization.ads
src/polyorb-smart_pointers.adb
@@ -1686,6 +1715,8 @@ src/polyorb-utils-htables.ads
src/polyorb-utils-htables-perfect.adb
src/polyorb-utils-htables-perfect.ads
src/polyorb-utils-htables.ads
+src/polyorb-utils-ilists.adb
+src/polyorb-utils-ilists.ads
src/polyorb-utils-random.adb
src/polyorb-utils-random.ads
src/polyorb-utils-report.adb
============================================================
--- compilers/gnatdist/xe_utils.adb 74d04cc35273e32850a84734cfe4f5cf2c2af286
+++ compilers/gnatdist/xe_utils.adb 1369f8f06066604a9f7f4b3036904315dc8045bd
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1995-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -866,10 +866,13 @@ package body XE_Utils is
return;
end if;
- if Program_Args = Binder or else Program_Args = Linker then
- Add_Make_Switch (Argv);
- return;
- end if;
+ case Program_Args is
+ when Compiler | Binder | Linker =>
+ Add_Make_Switch (Argv);
+ return;
+ when others =>
+ null;
+ end case;
if Project_File_Name_Expected then
Project_File_Name := new String'(Normalize_Pathname (Argv));
============================================================
--- features-26 5e90266bc20d4c6bcdc0235f37465302fe1b007a
+++ features-26 051e40959808a48a6b8b0207f78a773538c2ff82
@@ -1,8 +1,8 @@
-========================================================
-PolyORB 2.6 NEW FEATURES LIST Current as of Feb 12, 2009
-========================================================
+=============================
+PolyORB 2.6 NEW FEATURES LIST
+=============================
-Copyright (c) 2008, AdaCore
+Copyright (C) 2009, AdaCore
This file contains a complete list of new features in version 2.5 of PolyORB.
See also file NEWS for various information about this release.
@@ -12,6 +12,14 @@ subsequent releases.
subsequent to this date will contain the indicated feature, as will any
subsequent releases.
+N6-26-I320-027 Performance of neutral and protocol layers (2009-04-14)
+
+ The performance of the neutral and protocol layers has been improved
+ significantly by guarding some costly and seldom useful debugging traces
+ with appropriate configuration knobs, and by rewriting the management
+ routines for some internal data structures to avoid repeated memory
+ allocations and deallocations.
+
NF-26-H731-006 Improved handling of unbounded string arguments (2009-02-12)
When using the Ada DSA applicative personality, remote calls involving
============================================================
--- src/corba/corba-impl.ads aa835283edc63b97e1deb24eef71aae532258efa
+++ src/corba/corba-impl.ads 718a38a5b5443f36dc1e1d78d91d4d887d93f70d
@@ -6,12 +6,12 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the CORBA Specification, and adapted --
-- for use with PolyORB. The copyright notice above, and the license --
--- provisions that follow apply solely to the contents neither explicitly --
--- nor implicitly specified by the CORBA Specification defined by the OMG. --
+-- provisions that follow apply solely to the contents neither explicitely --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -33,19 +33,20 @@ with PolyORB.Smart_Pointers;
with PolyORB.Components;
with PolyORB.Servants;
with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
package CORBA.Impl is
pragma Elaborate_Body;
- type Object is abstract new PolyORB.Smart_Pointers.Entity
- with private;
+ package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+
+ type Object is abstract new PSPCE.Entity with private;
+
subtype Object_Ptr is PolyORB.Smart_Pointers.Entity_Ptr;
-- Object_Ptr is the return type of CORBA.AbstractBase.Object_Of.
- -- It may either designate an actual local object
- -- (a CORBA.Impl.Object'Class), or a surrogate thereof
- -- (a PolyORB.Smart_Pointers.Entity'Class not derived from
- -- CORBA.Impl.Object).
+ -- It may either designate an actual local object (CORBA.Impl.Object'Class)
+ -- or a surrogate thereof.
function Execute_Servant
(Self : not null access Object;
@@ -78,7 +79,7 @@ private
Msg : PolyORB.Components.Message'Class)
return PolyORB.Components.Message'Class;
- type Object is abstract new PolyORB.Smart_Pointers.Entity with record
+ type Object is abstract new PSPCE.Entity with record
Neutral_View : aliased Implementation (Object'Access);
-- The PolyORB (personality-neutral) view of this servant.
-- See also PolyORB.Minimal_Servant.
============================================================
--- src/corba/corba-object-helper.adb c57cd12d420117a4f3e18e7c9ce72b1f03978a36
+++ src/corba/corba-object-helper.adb 9ac407e68d900308b7d42902f4f66a276c98edfc
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -37,11 +37,9 @@ package body CORBA.Object.Helper is
--------------
function From_Any (Item : Any) return CORBA.Object.Ref is
- Result : CORBA.Object.Ref;
begin
- CORBA.Object.Internals.Convert_To_CORBA_Ref
- (PolyORB.Any.ObjRef.From_Any (PolyORB.Any.Any (Item)), Result);
- return Result;
+ return CORBA.Object.Internals.To_CORBA_Ref
+ (PolyORB.Any.ObjRef.From_Any (PolyORB.Any.Any (Item)));
end From_Any;
------------
============================================================
--- src/corba/corba-object.adb 67106837169e07ab8ab2cc086006b834080cf1a5
+++ src/corba/corba-object.adb 7e882b38a09a51f3a067eae19583de4e36d43d13
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -44,16 +44,11 @@ package body CORBA.Object is
use PolyORB.Smart_Pointers;
- type Internal_Object is new PolyORB.Smart_Pointers.Entity with record
- The_Object : PolyORB.Objects.Object_Id_Access;
- end record;
- type Internal_Object_Access is access all Internal_Object;
-
-- Client stub for remote calls implementing predefined CORBA::Object
- -- operations
+ -- operations.
- RPC_Result_Name : constant PolyORB.Types.Identifier
- := To_PolyORB_String ("Result");
+ RPC_Result_Name : constant PolyORB.Types.Identifier :=
+ To_PolyORB_String ("Result");
RPC_Is_A_Op_Name : constant Standard.String := "_is_a";
RPC_Is_A_Arg_Name : constant PolyORB.Types.Identifier :=
@@ -81,8 +76,7 @@ package body CORBA.Object is
function Hash
(Self : Ref;
- Maximum : CORBA.Unsigned_Long)
- return CORBA.Unsigned_Long
+ Maximum : CORBA.Unsigned_Long) return CORBA.Unsigned_Long
is
use PolyORB.Utils.HFunctions.Mul;
@@ -97,10 +91,7 @@ package body CORBA.Object is
-- Get_Interface --
-------------------
- function Get_Interface
- (Self : Ref)
- return CORBA.Object.Ref'Class
- is
+ function Get_Interface (Self : Ref) return CORBA.Object.Ref'Class is
Request : PolyORB.Requests.Request_Access;
Arg_List : PolyORB.Any.NVList.Ref;
Result : PolyORB.Any.NamedValue;
@@ -453,18 +444,6 @@ package body CORBA.Object is
package body Internals is
- -----------------------
- -- To_PolyORB_Object --
- -----------------------
-
- function To_PolyORB_Object
- (R : Ref)
- return PolyORB.Objects.Object_Id
- is
- begin
- return Internal_Object_Access (Entity_Of (R)).The_Object.all;
- end To_PolyORB_Object;
-
--------------------
-- To_PolyORB_Ref --
--------------------
@@ -481,24 +460,10 @@ package body CORBA.Object is
function To_CORBA_Ref (R : PolyORB.References.Ref) return Ref is
Result : Ref;
begin
- Convert_To_CORBA_Ref (R, Result);
+ Set (Result, PolyORB.References.Entity_Of (R));
return Result;
end To_CORBA_Ref;
- --------------------------
- -- Convert_To_CORBA_Ref --
- --------------------------
-
- procedure Convert_To_CORBA_Ref
- (Neutral_Ref : PolyORB.References.Ref;
- CORBA_Ref : in out CORBA.Object.Ref'Class)
- is
- E : constant PolyORB.Smart_Pointers.Entity_Ptr
- := PolyORB.References.Entity_Of (Neutral_Ref);
- begin
- Set (CORBA_Ref, E);
- end Convert_To_CORBA_Ref;
-
end Internals;
---------------
============================================================
--- src/corba/corba-object.ads 5ae29a3f4c2a911a546de7440540128ff679fbd7
+++ src/corba/corba-object.ads ea5942a564aa71d3704415705019ed49022fde03
@@ -6,12 +6,12 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the CORBA Specification, and adapted --
-- for use with PolyORB. The copyright notice above, and the license --
--- provisions that follow apply solely to the contents neither explicitly --
--- nor implicitly specified by the CORBA Specification defined by the OMG. --
+-- provisions that follow apply solely to the contents neither explicitely --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -30,7 +30,6 @@
-- --
------------------------------------------------------------------------------
-with PolyORB.Objects;
with PolyORB.References;
with CORBA.AbstractBase;
@@ -44,13 +43,10 @@ package CORBA.Object is
type Ref is new CORBA.AbstractBase.Ref with private;
- function Get_Interface
- (Self : Ref)
- return CORBA.Object.Ref'Class;
+ function Get_Interface (Self : Ref) return CORBA.Object.Ref'Class;
function Is_Nil (Self : Ref) return CORBA.Boolean;
- function Is_Null (Self : Ref) return CORBA.Boolean
- renames Is_Nil;
+ function Is_Null (Self : Ref) return CORBA.Boolean renames Is_Nil;
procedure Duplicate (Self : in out Ref);
@@ -58,8 +54,7 @@ package CORBA.Object is
function Is_A
(Self : Ref;
- Logical_Type_Id : Standard.String)
- return CORBA.Boolean;
+ Logical_Type_Id : Standard.String) return CORBA.Boolean;
function Non_Existent (Self : Ref) return CORBA.Boolean;
@@ -100,8 +95,7 @@ package CORBA.Object is
function Hash
(Self : Ref;
- Maximum : CORBA.Unsigned_Long)
- return CORBA.Unsigned_Long;
+ Maximum : CORBA.Unsigned_Long) return CORBA.Unsigned_Long;
-- Implementation Note: The following policy management related
-- Object operations were moved into child package
@@ -139,27 +133,15 @@ package CORBA.Object is
function TC_Object return CORBA.TypeCode.Object;
function Object_To_String
- (Obj : CORBA.Object.Ref'Class)
- return CORBA.String;
+ (Obj : CORBA.Object.Ref'Class) return CORBA.String;
package Internals is
-- Implementation Note: This package defines internal subprograms
-- specific to PolyORB. You must not use them.
- function To_PolyORB_Object
- (R : Ref)
- return PolyORB.Objects.Object_Id;
- -- XXX What is this supposed to do?
- -- It is not possible in general to associate a PolyORB Object_Id
- -- with a CORBA.Object.Ref. This can be done only when R designates
- -- an object located on this middleware instance.
-
function To_PolyORB_Ref (R : Ref) return PolyORB.References.Ref;
function To_CORBA_Ref (R : PolyORB.References.Ref) return Ref;
- procedure Convert_To_CORBA_Ref
- (Neutral_Ref : PolyORB.References.Ref;
- CORBA_Ref : in out CORBA.Object.Ref'Class);
-- Conversion functions between CORBA and neutral references.
end Internals;
============================================================
--- src/corba/corba-orb.adb a74270a24b312144fa0b01230403f4c6fe6ff328
+++ src/corba/corba-orb.adb e7ec35ffe299d70cb6c2fad615ddbee7bc569d2f
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -44,7 +44,6 @@ with PolyORB.ORB;
with PolyORB.Log;
with PolyORB.ORB;
-with PolyORB.Objects;
with PolyORB.Parameters;
with PolyORB.References.IOR;
with PolyORB.Setup;
@@ -622,32 +621,6 @@ package body CORBA.ORB is
end if;
end Initialize;
- ----------------------
- -- Create_Reference --
- ----------------------
-
- function Create_Reference
- (Object : CORBA.Object.Ref;
- Typ : Standard.String)
- return PolyORB.References.Ref is
- begin
- if The_ORB = null then
- Raise_Internal (CORBA.Default_Sys_Member);
- end if;
-
- declare
- Result : PolyORB.References.Ref;
-
- Oid : constant PolyORB.Objects.Object_Id_Access :=
- new PolyORB.Objects.Object_Id'
- (CORBA.Object.Internals.To_PolyORB_Object (Object));
- begin
- PolyORB.ORB.Create_Reference (The_ORB, Oid, Typ, Result);
-
- return Result;
- end;
- end Create_Reference;
-
-------------------
-- Create_Policy --
-------------------
============================================================
--- src/corba/corba-orb.ads aa906897ac4eb3ded98bbb78fda830d0e1891545
+++ src/corba/corba-orb.ads 880b3419411d9d3682a7795c5f8d2777b1e3324d
@@ -6,12 +6,12 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the CORBA Specification, and adapted --
-- for use with PolyORB. The copyright notice above, and the license --
--- provisions that follow apply solely to the contents neither explicitly --
--- nor implicitly specified by the CORBA Specification defined by the OMG. --
+-- provisions that follow apply solely to the contents neither explicitely --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -39,8 +39,6 @@ with CORBA.Sequences.Unbounded;
with CORBA.Policy;
with CORBA.Sequences.Unbounded;
-with PolyORB.References;
-
package CORBA.ORB is
pragma Elaborate_Body;
@@ -225,13 +223,6 @@ package CORBA.ORB is
-- Implementation Note: this procedure is deprecated, use
-- CORBA.ORB.Init instead
- function Create_Reference
- (Object : CORBA.Object.Ref;
- Typ : Standard.String)
- return PolyORB.References.Ref;
- -- Create an object reference that designates object Oid
- -- of type Typ within this ORB.
-
-------------------------------------
-- CORBA.ORB Exceptions Management --
-------------------------------------
============================================================
--- src/corba/polyorb-corba_p-interceptors_hooks.ads 98eaddd0e37a6905523f11a7e60b895564db8cfb
+++ src/corba/polyorb-corba_p-interceptors_hooks.ads aed849baa66bd04eae5b88c9cbce4483adf3a260
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -31,16 +31,18 @@ with PolyORB.Requests;
with PolyORB.Errors;
with PolyORB.POA;
with PolyORB.Requests;
-with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
package PolyORB.CORBA_P.Interceptors_Hooks is
+ package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+
type Client_Invoke_Handler is access procedure
(Self : PolyORB.Requests.Request_Access;
Flags : PolyORB.Requests.Flags);
type Server_Invoke_Handler is access procedure
- (Self : access PolyORB.Smart_Pointers.Entity'Class;
+ (Self : access PSPCE.Entity'Class;
-- Actually must be PortableServer.DynamicImplementation'Class.
Request : PolyORB.Requests.Request_Access;
Profile : PolyORB.Binding_Data.Profile_Access);
============================================================
--- src/corba/polyorb-corba_p-local.ads ebcf72aace438dfd761f113048b97257ab52b7fa
+++ src/corba/polyorb-corba_p-local.ads a2dda3cf96c7a578dbc26a8aefe9cba6f4be403c
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -28,11 +28,13 @@ with PolyORB.Smart_Pointers;
with CORBA.Object;
with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
package PolyORB.CORBA_P.Local is
type Local_Object_Base is
- abstract new PolyORB.Smart_Pointers.Entity with null record;
+ abstract new PolyORB.Smart_Pointers.Controlled_Entities.Entity
+ with null record;
type Local_Object_Base_Ref is access all Local_Object_Base'Class;
============================================================
--- src/corba/polyorb-corba_p-policy.ads ec6aa6561b854cc389e1fc3a118298abfd52d1a9
+++ src/corba/polyorb-corba_p-policy.ads 91a076df115ca593c8c518d25c4003d11ca73d56
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003 Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -16,23 +16,25 @@
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License for more details. You should have received a copy of the GNU --
-- General Public License distributed with PolyORB; see file COPYING. If --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA. --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
-- --
-- --
--- PolyORB is maintained by ACT Europe. --
--- (email: sales@act-europe.fr) --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
-- --
------------------------------------------------------------------------------
with CORBA;
-with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
package PolyORB.CORBA_P.Policy is
- type Policy_Object_Type is new PolyORB.Smart_Pointers.Entity with private;
+ package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+ type Policy_Object_Type is new PSPCE.Entity with private;
+
type Policy_Object_Ptr is access all Policy_Object_Type'Class;
function Get_Policy_Type
@@ -53,7 +55,7 @@ private
private
- type Policy_Object_Type is new PolyORB.Smart_Pointers.Entity with record
+ type Policy_Object_Type is new PSPCE.Entity with record
Policy : CORBA.PolicyType;
Value : CORBA.Any;
end record;
============================================================
--- src/corba/portableinterceptor/polyorb-corba_p-interceptors.adb 33539a6fd20c74ca0a00d77d2abdedbe279fb449
+++ src/corba/portableinterceptor/polyorb-corba_p-interceptors.adb fe5649fdf103fa33e133623f45760cdbadc7bacc
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -42,7 +42,7 @@ with PolyORB.Request_QoS;
with PolyORB.References;
with PolyORB.Requests;
with PolyORB.Request_QoS;
-with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
with PolyORB.Tasking.Mutexes;
with PolyORB.Tasking.Threads.Annotations;
with PolyORB.Utils.Chained_Lists;
@@ -68,6 +68,8 @@ package body PolyORB.CORBA_P.Interceptor
use PolyORB.Tasking.Threads.Annotations;
use type PolyORB.Any.TypeCode.Local_Ref;
+ package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+
-- Client Interceptors
function "="
@@ -123,7 +125,7 @@ package body PolyORB.CORBA_P.Interceptor
All_Server_Interceptors : ServerRequestInterceptor_Lists.List;
procedure Server_Invoke
- (Servant : access PolyORB.Smart_Pointers.Entity'Class;
+ (Servant : access PSPCE.Entity'Class;
Request : PolyORB.Requests.Request_Access;
Profile : PolyORB.Binding_Data.Profile_Access);
@@ -516,13 +518,12 @@ package body PolyORB.CORBA_P.Interceptor
Req_Id : constant CORBA.Unsigned_Long := Allocate_Request_Id;
- Target : CORBA.Object.Ref;
+ Target : constant CORBA.Object.Ref :=
+ CORBA.Object.Internals.To_CORBA_Ref (Request.Target);
TSC : Slots_Note;
Index : Natural;
begin
- CORBA.Object.Internals.Convert_To_CORBA_Ref (Request.Target, Target);
-
-- Getting thread scope slots information (allocating thread scope
-- slots if it is not allocated), and make "logical copy" and place it
-- in the request.
@@ -964,7 +965,7 @@ package body PolyORB.CORBA_P.Interceptor
-------------------
procedure Server_Invoke
- (Servant : access PolyORB.Smart_Pointers.Entity'Class;
+ (Servant : access PSPCE.Entity'Class;
Request : PolyORB.Requests.Request_Access;
Profile : PolyORB.Binding_Data.Profile_Access)
is
============================================================
--- src/corba/portableinterceptor/portableinterceptor-clientrequestinfo-impl.adb cac49b4a2e4473fd221126bf44c67e0e8029cffa
+++ src/corba/portableinterceptor/portableinterceptor-clientrequestinfo-impl.adb c3de8260da334b5da747b383621e9ce5c2894198
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -339,16 +339,10 @@ package body PortableInterceptor.ClientR
--------------------------
function Get_Effective_Target
- (Self : access Object)
- return CORBA.Object.Ref
+ (Self : access Object) return CORBA.Object.Ref
is
- Result : CORBA.Object.Ref;
-
begin
- CORBA.Object.Internals.Convert_To_CORBA_Ref
- (Self.Request.Target, Result);
-
- return Result;
+ return CORBA.Object.Internals.To_CORBA_Ref (Self.Request.Target);
end Get_Effective_Target;
--------------------
============================================================
--- src/corba/portableinterceptor/portableinterceptor-requestinfo-impl.adb 48c4ae913c97a8cc8746d665bdbd325aa6449564
+++ src/corba/portableinterceptor/portableinterceptor-requestinfo-impl.adb 2e0f63207cc029df0ab83756522ef633e44d3b97
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -128,15 +128,10 @@ package body PortableInterceptor.Request
PolyORB.Errors.Helper.From_Any
(Self.Request.Exception_Info);
Ref : PolyORB.References.Ref;
- Result : CORBA.Object.Ref;
begin
PolyORB.References.Set
- (Ref,
- PolyORB.Smart_Pointers.Entity_Of (Members.Forward_Reference));
-
- CORBA.Object.Internals.Convert_To_CORBA_Ref (Ref, Result);
-
- return Result;
+ (Ref, PolyORB.Smart_Pointers.Entity_Of (Members.Forward_Reference));
+ return CORBA.Object.Internals.To_CORBA_Ref (Ref);
end;
end Get_Forward_Reference;
============================================================
--- src/corba/portableserver-current.adb 91160a73769d5b1532f8f49c5056cda45a986c3d
+++ src/corba/portableserver-current.adb 669e5f4863f051651cdcc9866deea0a02887883e
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -211,12 +211,8 @@ package body PortableServer.Current is
function Get_Reference (Self : Local_Ref) return CORBA.Object.Ref is
pragma Unreferenced (Self);
-
use type PolyORB.Requests.Request_Access;
-
Note : PortableServer_Current_Note;
- Result : CORBA.Object.Ref;
-
begin
Get_Note (Get_Current_Thread_Notepad.all, Note,
Null_PortableServer_Current_Note);
@@ -225,10 +221,7 @@ package body PortableServer.Current is
Raise_NoContext ((CORBA.IDL_Exception_Members with null record));
end if;
- CORBA.Object.Internals.Convert_To_CORBA_Ref
- (Note.Request.Target, Result);
-
- return Result;
+ return CORBA.Object.Internals.To_CORBA_Ref (Note.Request.Target);
end Get_Reference;
-----------------
============================================================
--- src/corba/portableserver-poa.adb 1dbebd0259567e516a0ef0e7d9514c931abff12e
+++ src/corba/portableserver-poa.adb b8f54372ff8c7c845d1e7f0cf63b5f474f8b0916
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -371,19 +371,16 @@ package body PortableServer.POA is
Oid : aliased PolyORB.POA_Types.Object_Id :=
PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
- P_Result : PolyORB.References.Ref;
- C_Result : CORBA.Object.Ref;
+ Result : PolyORB.References.Ref;
begin
PolyORB.ORB.Create_Reference
(PolyORB.Setup.The_ORB,
Oid'Access,
CORBA.To_Standard_String (Intf),
- P_Result);
+ Result);
-- Obtain object reference.
- CORBA.Object.Internals.Convert_To_CORBA_Ref
- (P_Result, C_Result);
- return C_Result;
+ return CORBA.Object.Internals.To_CORBA_Ref (Result);
end;
end Create_Reference;
@@ -418,20 +415,16 @@ package body PortableServer.POA is
A_Oid : aliased PolyORB.POA_Types.Object_Id :=
PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
- P_Result : PolyORB.References.Ref;
- C_Result : CORBA.Object.Ref;
+ Result : PolyORB.References.Ref;
begin
PolyORB.ORB.Create_Reference
(PolyORB.Setup.The_ORB,
A_Oid'Access,
CORBA.To_Standard_String (Intf),
- P_Result);
+ Result);
-- Obtain object reference.
- CORBA.Object.Internals.Convert_To_CORBA_Ref
- (P_Result, C_Result);
-
- return C_Result;
+ return CORBA.Object.Internals.To_CORBA_Ref (Result);
end;
end Create_Reference_With_Id;
@@ -1475,8 +1468,7 @@ package body PortableServer.POA is
TID : constant Standard.String :=
PortableServer.Internals.Get_Type_Id (P_Servant);
- P_Result : PolyORB.References.Ref;
- C_Result : CORBA.Object.Ref;
+ Result : PolyORB.References.Ref;
Error : PolyORB.Errors.Error_Container;
begin
@@ -1492,7 +1484,7 @@ package body PortableServer.POA is
end if;
PolyORB.ORB.Create_Reference
- (PolyORB.Setup.The_ORB, Oid, TID, P_Result);
+ (PolyORB.Setup.The_ORB, Oid, TID, Result);
-- Obtain object reference.
PolyORB.POA_Types.Free (Oid);
@@ -1502,10 +1494,7 @@ package body PortableServer.POA is
Associate_To_Domain_Managers (P_Servant);
- CORBA.Object.Internals.Convert_To_CORBA_Ref
- (P_Result, C_Result);
-
- return C_Result;
+ return CORBA.Object.Internals.To_CORBA_Ref (Result);
end Servant_To_Reference;
-----------------
============================================================
--- src/corba/portableserver.adb d4a8dd7c9278a39b665b62ab5f09c9cd7de4616d
+++ src/corba/portableserver.adb edb5a02c82b0284a6305260bf624385996b7eb5b
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -37,7 +37,6 @@ with PolyORB.Servants.Iface;
with PolyORB.Initialization;
with PolyORB.Log;
with PolyORB.Servants.Iface;
-with PolyORB.Smart_Pointers;
with PolyORB.Tasking.Threads.Annotations;
with PolyORB.Utils.Chained_Lists;
with PolyORB.Utils.Strings;
@@ -52,6 +51,7 @@ package body PortableServer is
function C (Level : Log_Level := Debug) return Boolean
renames L.Enabled;
+ use PolyORB.CORBA_P.Interceptors_Hooks;
use PolyORB.Utils.Strings;
---------------------------------------
@@ -77,29 +77,29 @@ package body PortableServer is
Skeleton : Internals.Request_Dispatcher;
end record;
- Null_Dispatcher_Note : constant Dispatcher_Note
- := (PolyORB.Annotations.Note with Skeleton => null);
+ Null_Dispatcher_Note : constant Dispatcher_Note :=
+ (PolyORB.Annotations.Note with Skeleton => null);
procedure Default_Invoke
- (Servant : access PolyORB.Smart_Pointers.Entity'Class;
+ (Servant : access PSPCE.Entity'Class;
Request : PolyORB.Requests.Request_Access;
Profile : PolyORB.Binding_Data.Profile_Access);
- -- This is the default server side invocation handler.
+ -- This is the default server side invocation handler
--------------------
-- Default_Invoke --
--------------------
procedure Default_Invoke
- (Servant : access PolyORB.Smart_Pointers.Entity'Class;
+ (Servant : access PSPCE.Entity'Class;
Request : PolyORB.Requests.Request_Access;
Profile : PolyORB.Binding_Data.Profile_Access)
is
pragma Unreferenced (Profile);
begin
- Invoke (DynamicImplementation'Class (Servant.all)'Access,
- Request);
-- Redispatch
+
+ Invoke (DynamicImplementation'Class (Servant.all)'Access, Request);
end Default_Invoke;
---------------------
============================================================
--- src/corba/rtcorba/rtcorba-current.adb f26a512485f78e29871b6201827eb8af747e46d6
+++ src/corba/rtcorba/rtcorba-current.adb 9a09e19e2c73b09a77cc3e8c68865339b540b9bb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -54,13 +54,10 @@ package body RTCORBA.Current is
function Create return CORBA.Object.Ref is
Result : Local_Ref;
-
- Current : constant PolyORB.Smart_Pointers.Entity_Ptr
- := new Current_Object;
-
+ Current : constant PolyORB.Smart_Pointers.Entity_Ptr :=
+ new Current_Object;
begin
Set (Result, Current);
-
return CORBA.Object.Ref (Result);
end Create;
============================================================
--- src/corba/rtcorba/rtcorba-current.ads 181aca4bca3b31d0190a87cf168c874dd0705b24
+++ src/corba/rtcorba/rtcorba-current.ads 22a004fd9f1ec7f428689d1bd91ba5525133aaf1
@@ -6,12 +6,12 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the CORBA Specification, and adapted --
-- for use with PolyORB. The copyright notice above, and the license --
--- provisions that follow apply solely to the contents neither explicitly --
--- nor implicitly specified by the CORBA Specification defined by the OMG. --
+-- provisions that follow apply solely to the contents neither explicitely --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -38,11 +38,12 @@ package RTCORBA.Current is
type Local_Ref is new CORBA.Current.Local_Ref with private;
function Get_The_Priority (Self : Local_Ref) return RTCORBA.Priority;
- procedure Set_The_Priority (Self : Local_Ref; To : RTCORBA.Priority);
+ procedure Set_The_Priority (Self : Local_Ref; To : RTCORBA.Priority);
private
type Local_Ref is new CORBA.Current.Local_Ref with null record;
- type Current_Object is new PolyORB.Smart_Pointers.Entity with null record;
+ type Current_Object is new PolyORB.Smart_Pointers.Non_Controlled_Entity
+ with null record;
end RTCORBA.Current;
============================================================
--- src/corba/rtcorba/rtcorba-rtorb.ads 99025f81078249b4cd07bd9e969821cb3328c5d1
+++ src/corba/rtcorba/rtcorba-rtorb.ads ce280560710036613627002175db16d57edf4abc
@@ -6,12 +6,12 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2003-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the CORBA Specification, and adapted --
-- for use with PolyORB. The copyright notice above, and the license --
--- provisions that follow apply solely to the contents neither explicitly --
--- nor implicitly specified by the CORBA Specification defined by the OMG. --
+-- provisions that follow apply solely to the contents neither explicitely --
+-- nor implicitely specified by the CORBA Specification defined by the OMG. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -40,10 +40,12 @@ with PolyORB.Std;
with PolyORB.Std;
-with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
package RTCORBA.RTORB is
+ package PSPCE renames PolyORB.Smart_Pointers.Controlled_Entities;
+
type Local_Ref is new CORBA.Object.Ref with private;
function Create_Mutex
@@ -149,7 +151,6 @@ private
private
type Local_Ref is new CORBA.Object.Ref with null record;
+ type RTORB_Object is new PSPCE.Entity with null record;
- type RTORB_Object is new PolyORB.Smart_Pointers.Entity with null record;
-
end RTCORBA.RTORB;
============================================================
--- src/corba/rtcorba/rtportableserver-poa.adb 22e7ab563596f6771c2726620f52c4f355bb0084
+++ src/corba/rtcorba/rtportableserver-poa.adb 8be1768c780a4f1e73aff3a1688173190dff7cfb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -115,21 +115,19 @@ package body RTPortableServer.POA is
end if;
declare
- Oid : aliased PolyORB.POA_Types.Object_Id
- := PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
-
- P_Result : PolyORB.References.Ref;
- C_Result : CORBA.Object.Ref;
+ Oid : aliased PolyORB.POA_Types.Object_Id :=
+ PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
+ Result : PolyORB.References.Ref;
begin
+ -- Obtain object reference
+
PolyORB.ORB.Create_Reference
(PolyORB.Setup.The_ORB,
Oid'Access,
CORBA.To_Standard_String (Intf),
- P_Result);
- -- Obtain object reference
+ Result);
- CORBA.Object.Internals.Convert_To_CORBA_Ref (P_Result, C_Result);
- return C_Result;
+ return CORBA.Object.Internals.To_CORBA_Ref (Result);
end;
end Create_Reference_With_Priority;
@@ -149,8 +147,8 @@ package body RTPortableServer.POA is
Error : PolyORB.Errors.Error_Container;
- RT_POA : constant PolyORB.RT_POA.RT_Obj_Adapter_Access
- := To_RT_POA (Self);
+ RT_POA : constant PolyORB.RT_POA.RT_Obj_Adapter_Access :=
+ To_RT_POA (Self);
U_Oid : PolyORB.POA_Types.Unmarshalled_Oid;
@@ -174,22 +172,19 @@ package body RTPortableServer.POA is
end if;
declare
- A_Oid : aliased PolyORB.POA_Types.Object_Id
- := PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
-
- P_Result : PolyORB.References.Ref;
- C_Result : CORBA.Object.Ref;
+ A_Oid : aliased PolyORB.POA_Types.Object_Id :=
+ PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
+ Result : PolyORB.References.Ref;
begin
+ -- Obtain object reference
+
PolyORB.ORB.Create_Reference
(PolyORB.Setup.The_ORB,
A_Oid'Access,
CORBA.To_Standard_String (Intf),
- P_Result);
- -- Obtain object reference
+ Result);
- CORBA.Object.Internals.Convert_To_CORBA_Ref (P_Result, C_Result);
-
- return C_Result;
+ return CORBA.Object.Internals.To_CORBA_Ref (Result);
end;
end Create_Reference_With_Id_And_Priority;
@@ -228,9 +223,8 @@ package body RTPortableServer.POA is
end if;
declare
- Oid : constant PolyORB.POA_Types.Object_Id
- := PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
-
+ Oid : constant PolyORB.POA_Types.Object_Id :=
+ PolyORB.POA_Types.U_Oid_To_Oid (U_Oid);
begin
return PortableServer.Internals.To_PortableServer_ObjectId (Oid);
end;
@@ -256,8 +250,8 @@ package body RTPortableServer.POA is
U_Oid : PolyORB.POA_Types.Unmarshalled_Oid;
- A_Oid : aliased PolyORB.POA_Types.Object_Id
- := PortableServer.Internals.To_PolyORB_Object_Id (Oid);
+ A_Oid : aliased PolyORB.POA_Types.Object_Id :=
+ PortableServer.Internals.To_PolyORB_Object_Id (Oid);
begin
PolyORB.RT_POA.Activate_Object_With_Id_And_Priority
============================================================
--- src/corba/security/polyorb-corba_p-security_policy.adb d33e32f266bfa0569a8e078f059bb9add23d7c12
+++ src/corba/security/polyorb-corba_p-security_policy.adb 420c58225df4944e0fa5fafb06958df1d53dcc4f
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -60,18 +60,14 @@ package body PolyORB.CORBA_P.Security_Po
is
use PolyORB.Security.Types;
- Target : CORBA.Object.Ref;
- Creds : Credentials_List_Access := null;
+ Target : constant CORBA.Object.Ref :=
+ CORBA.Object.Internals.To_CORBA_Ref (Object);
+ Creds : Credentials_List_Access := null;
Requires : PolyORB.Security.Types.Association_Options := 0;
begin
- -- Convert PolyORB's reference into CORBA reference for retrieve
- -- effective policies
+ -- Analize overridden policy
- CORBA.Object.Internals.Convert_To_CORBA_Ref (Object, Target);
-
- -- Analize overrided policy
-
for J in Registry'Range loop
if Registry (J).Registered then
declare
============================================================
--- src/corba/security/polyorb-corba_p-tss_state_machine.adb 935417d2bbbedf813b37253f563ade29760ff8d1
+++ src/corba/security/polyorb-corba_p-tss_state_machine.adb 7f18155aa966fc3bc024feb5ff3a5b06413c900b
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -53,7 +53,6 @@ with PolyORB.Security.Types;
with PolyORB.Security.Security_Manager;
with PolyORB.Security.Transport_Mechanisms;
with PolyORB.Security.Types;
-with PolyORB.Smart_Pointers;
with PolyORB.Tasking.Threads.Annotations;
with PolyORB.Types;
with PolyORB.Utils.Strings;
@@ -77,7 +76,7 @@ package body PolyORB.CORBA_P.TSS_State_M
Error : in out PolyORB.Errors.Error_Container);
procedure Server_Invoke
- (Self : access PolyORB.Smart_Pointers.Entity'Class;
+ (Self : access PSPCE.Entity'Class;
Request : PolyORB.Requests.Request_Access;
Profile : PolyORB.Binding_Data.Profile_Access);
@@ -295,7 +294,7 @@ package body PolyORB.CORBA_P.TSS_State_M
-------------------
procedure Server_Invoke
- (Self : access PolyORB.Smart_Pointers.Entity'Class;
+ (Self : access PSPCE.Entity'Class;
Request : PolyORB.Requests.Request_Access;
Profile : PolyORB.Binding_Data.Profile_Access)
is
============================================================
--- src/dsa/polyorb-dsa_p-storages-dfs.adb c1cd2fe74b765dd90eedf741273c7a060df89c7c
+++ src/dsa/polyorb-dsa_p-storages-dfs.adb db1d0fdd06faa2dcd91288720a5fa09de21a4b92
@@ -2,11 +2,11 @@
-- --
-- POLYORB COMPONENTS --
-- --
--- P O L Y O R B . D S A _ P . S T O R A G E S . D F S --
+-- P O L Y O R B . D S A _ P . S T O R A G E S . D F S --
-- --
-- B o d y --
-- --
--- Copyright (C) 2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -393,7 +393,7 @@ package body PolyORB.DSA_P.Storages.DFS
declare
Stream : constant Stream_Element_Array :=
- To_Stream_Element_Array (Buffer);
+ To_Stream_Element_Array (Buffer.all);
begin
SIO.Write (Self.File, Stream);
end;
============================================================
--- src/dsa/s-parint.adb d513233ce0727c06c687742df487e374fbb16886
+++ src/dsa/s-parint.adb bde9ffb0c92fe35313153611bc8224528e3e5790
@@ -122,6 +122,16 @@ package body System.Partition_Interface
procedure Initialize;
-- Procedure called during global PolyORB initialization
+ function Nameserver_Lookup (Name, Kind : String) return Ref;
+ -- Look up the specified (Name, Kind) pair from the DSA naming context
+
+ procedure Nameserver_Register
+ (Name : String;
+ Kind : String;
+ Obj : PolyORB.References.Ref);
+ -- Register object with the specified (Name, Kind) pair into the
+ -- DSA naming context.
+
function Is_Reference_Valid (R : PolyORB.References.Ref) return Boolean;
-- Binds a reference to determine whether it is valid
@@ -1357,6 +1367,120 @@ package body System.Partition_Interface
return Result;
end Make_Ref;
+ -----------------------
+ -- Nameserver_Lookup --
+ -----------------------
+
+ function Nameserver_Lookup (Name, Kind : String) return Ref is
+ use PolyORB.Parameters;
+ use PolyORB.Errors;
+ use PolyORB.References.Binding;
+
+ LName : constant String := To_Lower (Name);
+
+ Result : Ref;
+
+ Time_Between_Requests : constant Duration :=
+ Get_Conf
+ (Section => "dsa",
+ Key => "delay_between_failed_requests",
+ Default => 1.0);
+
+ Max_Requests : constant Natural :=
+ Get_Conf
+ (Section => "dsa",
+ Key => "max_failed_requests",
+ Default => 10);
+
+ Retry_Count : Natural := 0;
+ begin
+ -- Unit not known yet: we therefore know that it is remote, and we
+ -- need to look it up with the naming service.
+
+ loop
+ begin
+ Result := PSNNC.Client.Resolve
+ (Naming_Context, To_Name (LName, Kind));
+
+ exit when Is_Reference_Valid (Result);
+ -- Resolve succeeded: exit loop
+
+ exception
+ -- Catch all exceptions: we will retry resolution, and bail
+ -- out after Max_Requests iterations.
+
+ when others =>
+ null;
+ end;
+
+ if Retry_Count = Max_Requests then
+ raise System.RPC.Communication_Error with
+ "lookup of " & Kind & " " & Name & " failed";
+ end if;
+ Retry_Count := Retry_Count + 1;
+ PolyORB.Tasking.Threads.Relative_Delay (Time_Between_Requests);
+ end loop;
+ return Result;
+ end Nameserver_Lookup;
+
+ -------------------------
+ -- Nameserver_Register --
+ -------------------------
+
+ procedure Nameserver_Register
+ (Name : String;
+ Kind : String;
+ Obj : PolyORB.References.Ref)
+ is
+ use Ada.Exceptions;
+ Id : constant PolyORB.Services.Naming.Name := To_Name (Name, Kind);
+ Context : PSNNC.Ref;
+ Reg_Obj : PolyORB.References.Ref;
+ begin
+ pragma Debug (C, O ("About to register " & Name & " on nameserver"));
+
+ -- May raise an exception which we do not want to handle in the
+ -- following block (failure to establish the naming context is a fatal
+ -- error and must be propagated to the caller).
+
+ Context := Naming_Context;
+
+ begin
+ Reg_Obj := PSNNC.Client.Resolve (Context, Id);
+ exception
+ when others =>
+
+ -- Resolution attempt returned an authoritative "name not found"
+ -- error: register unit now.
+
+ PSNNC.Client.Bind
+ (Self => Naming_Context,
+ N => Id,
+ Obj => Obj);
+ return;
+ end;
+
+ -- Name is present in name server, check validity of the reference it
+ -- resolves to.
+
+ if Is_Reference_Valid (Reg_Obj) then
+ -- Reference is valid: RCI unit is already declared by another
+ -- partition.
+
+ PolyORB.Initialization.Shutdown_World (Wait_For_Completion => False);
+ raise Program_Error with Name & " (" & Kind & ") is already declared";
+
+ else
+ -- The reference is not valid anymore: we assume the original server
+ -- has died, and rebind the name.
+
+ PSNNC.Client.Rebind
+ (Self => Naming_Context,
+ N => To_Name (Name, Kind),
+ Obj => Obj);
+ end if;
+ end Nameserver_Register;
+
--------------------
-- Naming_Context --
--------------------
@@ -1365,12 +1489,22 @@ package body System.Partition_Interface
R : PolyORB.References.Ref;
begin
if PSNNC.Is_Nil (Naming_Context_Cache) then
- PolyORB.References.String_To_Object
- (PolyORB.Parameters.Get_Conf ("dsa", "name_service"),
- R);
- PSNNC.Set (Naming_Context_Cache, Entity_Of (R));
+ declare
+ Nameserver_Location : constant String :=
+ PolyORB.Parameters.Get_Conf
+ ("dsa", "name_service");
+ begin
+ PolyORB.References.String_To_Object (Nameserver_Location, R);
+ if Is_Nil (R) then
+ raise Constraint_Error;
+ end if;
+ PSNNC.Set (Naming_Context_Cache, Entity_Of (R));
+ exception
+ when others =>
+ raise System.RPC.Communication_Error
+ with "unable to locate name server " & Nameserver_Location;
+ end;
end if;
-
return Naming_Context_Cache;
end Naming_Context;
@@ -1430,7 +1564,8 @@ package body System.Partition_Interface
end if;
if PolyORB.References.Is_Nil (Info.Base_Ref) then
- raise System.RPC.Communication_Error;
+ raise System.RPC.Communication_Error
+ with "unable to locate RCI " & RCI_Name;
-- XXX add an informative exception message.
-- NOTE: Here, we are in calling stubs, so it is OK to raise an
@@ -1605,7 +1740,7 @@ package body System.Partition_Interface
Known_Partition_ID => False,
RCI_Partition_ID => RPC.Partition_ID'First));
- Register_Unit_On_Name_Server
+ Nameserver_Register
(Name => To_Lower (Stub.Name.all),
Kind => "RCI",
Obj => Ref);
@@ -1643,64 +1778,6 @@ package body System.Partition_Interface
pragma Debug (C, O ("Registered the termination manager"));
end Register_Termination_Manager;
- ----------------------------------
- -- Register_Unit_On_Name_Server --
- ----------------------------------
-
- procedure Register_Unit_On_Name_Server
- (Name : String;
- Kind : String;
- Obj : PolyORB.References.Ref)
- is
- use Ada.Exceptions;
- Id : constant PolyORB.Services.Naming.Name := To_Name (Name, Kind);
- Context : PSNNC.Ref;
- Reg_Obj : PolyORB.References.Ref;
- begin
- pragma Debug (C, O ("About to register " & Name & " on nameserver"));
-
- -- May raise an exception which we do not want to handle in the
- -- following block (failure to establish the naming context is a fatal
- -- error and must be propagated to the caller).
-
- Context := Naming_Context;
-
- begin
- Reg_Obj := PSNNC.Client.Resolve (Context, Id);
- exception
- when others =>
-
- -- Resolution attempt return an authoritative "name not found"
- -- error: register unit now.
-
- PSNNC.Client.Bind
- (Self => Naming_Context,
- N => Id,
- Obj => Obj);
- return;
- end;
-
- -- Name is present in name server, check validity of the reference it
- -- resolves to.
-
- if Is_Reference_Valid (Reg_Obj) then
- -- Reference is valid: RCI unit is already declared by another
- -- partition.
-
- PolyORB.Initialization.Shutdown_World (Wait_For_Completion => False);
- raise Program_Error with Name & " (" & Kind & ") is already declared";
-
- else
- -- The reference is not valid anymore: we assume the original server
- -- has died, and rebind the name.
-
- PSNNC.Client.Rebind
- (Self => Naming_Context,
- N => To_Name (Name, Kind),
- Obj => Obj);
- end if;
- end Register_Unit_On_Name_Server;
-
--------------------
-- Release_Buffer --
--------------------
@@ -1797,7 +1874,7 @@ package body System.Partition_Interface
PolyORB.Objects.Free (Oid);
- Register_Unit_On_Name_Server
+ Nameserver_Register
(Name => To_Lower (Name),
Kind => Kind,
Obj => Ref);
@@ -1882,35 +1959,7 @@ package body System.Partition_Interface
-- retry the query up to Max_Requests times.
if Is_Nil (Info.Base_Ref) then
-
- -- Unit not known yet: we therefore know that it is remote, and we
- -- need to look it up with the naming service.
-
- loop
- begin
- Base_Ref := PSNNC.Client.Resolve
- (Naming_Context, To_Name (LName, "RCI"));
-
- exit when Is_Reference_Valid (Base_Ref);
- -- Resolve succeeded: exit loop
-
- exception
- -- Catch all exceptions: we will retry resolution, and bail
- -- out after Max_Requests iterations.
-
- when others =>
- null;
- end;
-
- if Retry_Count = Max_Requests then
- O ("Cannot retrieve information for RCI "
- & Name & " from name server.", Error);
- raise System.RPC.Communication_Error;
- end if;
- Retry_Count := Retry_Count + 1;
- PolyORB.Tasking.Threads.Relative_Delay (Time_Between_Requests);
- end loop;
-
+ Base_Ref := Nameserver_Lookup (LName, "RCI");
Info := RCI_Info'
(Base_Ref => Base_Ref,
Is_Local => False,
@@ -1955,40 +2004,13 @@ package body System.Partition_Interface
begin
pragma Debug (C, O ("Retrieve RACW From Name Server: enter"));
-
- loop
- begin
- Reg_Obj := PSNNC.Client.Resolve
- (Naming_Context, To_Name (Name, Kind));
-
- exit when Is_Reference_Valid (Reg_Obj);
- -- Resolve succeeded: exit loop
-
- exception
- -- Catch all exceptions: we will retry resolution, and bail
- -- out after Max_Requests iterations.
-
- when others =>
- null;
- end;
-
- if Retry_Count = Max_Requests then
- O ("Cannot retrieve information for"
- & "RACW " & Name & ":" & Kind & " from name server.", Error);
- raise System.RPC.Communication_Error;
- end if;
- Retry_Count := Retry_Count + 1;
- PolyORB.Tasking.Threads.Relative_Delay (Time_Between_Requests);
- end loop;
-
+ Reg_Obj := Nameserver_Lookup (Name, Kind);
Addr := Get_RACW
(Ref => Reg_Obj,
Stub_Tag => Stub_Tag,
Is_RAS => False,
Asynchronous => True);
-
pragma Debug (C, O ("Retrieve RACW From Name Server: leave"));
-
end Retrieve_RACW_From_Name_Server;
--------------------
============================================================
--- src/dsa/s-parint.ads 9890673a72e8d30ca1710f2ec86617802d5d28cb
+++ src/dsa/s-parint.ads 32b90ab9889e734de17a35cfacefba4f3d0323c9
@@ -212,14 +212,9 @@ package System.Partition_Interface is
-- Subp_Info is the address of an array of a statically subtype
-- of RCI_Subp_Info_Array with a range of 0 .. Subp_Info_Len - 1.
- procedure Register_Unit_On_Name_Server (Name : String;
- Kind : String;
- Obj : PolyORB.References.Ref);
- -- Register one receiving stub on the name server
-
- function Retrieve_Receiving_Stub (Name : String;
- Kind : Receiving_Stub_Kind)
- return Servant_Access;
+ function Retrieve_Receiving_Stub
+ (Name : String;
+ Kind : Receiving_Stub_Kind) return Servant_Access;
-- Return the servant for distributed objects with given Name and Kind, or
-- null if non-existant.
============================================================
--- src/dsa/s-shasto.adb 9be2e415d5966f20042c42ff58c23d584bd4a505
+++ src/dsa/s-shasto.adb bc64f5f67e9c2175edfc915cf7590707a9adccf0
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2006-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2006-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -90,7 +90,7 @@ package body System.Shared_Storage is
SDM : Shared_Data_Manager_RACW;
Data : constant Any := Typ'To_Any (V);
Data_Ptr : constant SDT.Any_Container_Ptr :=
- AC_To_DAC (Get_Container (Data));
+ AC_To_DAC (Get_Container (Data));
begin
Lookup_Variable (Full_Name, SDM);
============================================================
--- src/giop/diop/polyorb-giop_p-transport_mechanisms-diop.adb bd45f1f3e6d7b2981c07ff095757c19ad19cba35
+++ src/giop/diop/polyorb-giop_p-transport_mechanisms-diop.adb f96de414dee35283810592f4356848b60c63f1b6
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -78,9 +78,7 @@ package body PolyORB.GIOP_P.Transport_Me
use PolyORB.Binding_Objects;
Sock : Socket_Type;
-
TE : Transport.Transport_Endpoint_Access;
-
begin
if Profile.all
not in PolyORB.Binding_Data.GIOP.DIOP.DIOP_Profile_Type then
@@ -99,7 +97,8 @@ package body PolyORB.GIOP_P.Transport_Me
Create (Socket_Out_Endpoint (TE.all), Sock, Mechanism.Address.all);
Binding_Objects.Setup_Binding_Object
- (TE,
+ (The_ORB,
+ TE,
DIOP_Factories,
BO_Ref,
Profile_Access (Profile));
============================================================
--- src/giop/iiop/polyorb-giop_p-transport_mechanisms-iiop.adb ec433bce6dea695b3db475fa9fcd60dfab546f36
+++ src/giop/iiop/polyorb-giop_p-transport_mechanisms-iiop.adb ff93b81c382a7715fcec21d654939d40d9154251
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -103,7 +103,8 @@ package body PolyORB.GIOP_P.Transport_Me
Create (Socket_Endpoint (TE.all), Sock);
Binding_Objects.Setup_Binding_Object
- (TE,
+ (The_ORB,
+ TE,
IIOP_Factories,
BO_Ref,
Profile_Access (Profile));
============================================================
--- src/giop/iiop/security/tls/polyorb-giop_p-transport_mechanisms-tls.adb bfa051ef5a5286df8295ef0c0d71677e44aeb6ee
+++ src/giop/iiop/security/tls/polyorb-giop_p-transport_mechanisms-tls.adb 3c3ce6909ec41c3bfb6ea24cbdc14b3fb346a977
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -135,7 +135,8 @@ package body PolyORB.GIOP_P.Transport_Me
Create (TLS_Endpoint (TE.all), TLS_Sock);
Binding_Objects.Setup_Binding_Object
- (TE,
+ (The_ORB,
+ TE,
IIOP_Factories,
BO_Ref,
Binding_Data.Profile_Access (Profile));
============================================================
--- src/giop/iiop/ssliop/polyorb-giop_p-transport_mechanisms-ssliop.adb 9081f70b8ec9b5b941220b7ddb59d550052170b1
+++ src/giop/iiop/ssliop/polyorb-giop_p-transport_mechanisms-ssliop.adb e2a54ca1995ec488a67bf4f524b6f9f10131710a
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -106,7 +106,8 @@ package body PolyORB.GIOP_P.Transport_Me
Create (SSL_Endpoint (TE.all), SSL_Sock);
Binding_Objects.Setup_Binding_Object
- (TE,
+ (The_ORB,
+ TE,
IIOP_Factories,
BO_Ref,
Profile_Access (Profile));
============================================================
--- src/giop/miop/polyorb-filters-miop.adb 00aee6619958456cbfda4955d1e789000272c0ff
+++ src/giop/miop/polyorb-filters-miop.adb 116deeebf873e24dab845492072dad253c10b345
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -88,7 +88,7 @@ package body PolyORB.Filters.MIOP is
Marshall (Buffer, Types.Identifier (Header.Unique_Id));
-- Final padding
- Pad_Align (Buffer, 8);
+ Pad_Align (Buffer, Align_8);
end Marshall_MIOP_Header;
----------------------------
============================================================
--- src/giop/miop/polyorb-giop_p-transport_mechanisms-uipmc.adb c6ee13976f5296b245fd63120184f6b1b57fbc04
+++ src/giop/miop/polyorb-giop_p-transport_mechanisms-uipmc.adb 8d550f738ee677f7f5b42621d74ec3a72be04528
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -114,7 +114,8 @@ package body PolyORB.GIOP_P.Transport_Me
Create (Socket_Out_Endpoint (TE.all), Sock, Mechanism.Address.all);
Binding_Objects.Setup_Binding_Object
- (TE,
+ (The_ORB,
+ TE,
MIOP_Factories,
BO_Ref,
Profile_Access (Profile));
============================================================
--- src/giop/polyorb-giop_p-code_sets-converters.adb f3ed428a929080947334dc346075cd5dd2b183dd
+++ src/giop/polyorb-giop_p-code_sets-converters.adb 8ba032e2005080d3e24161b7a5ee69b1bdac75d6
@@ -317,7 +317,7 @@ package body PolyORB.GIOP_P.Code_Sets.Co
pragma Unreferenced (Error);
begin
- Pad_Align (Buffer, 4);
+ Pad_Align (Buffer, Align_4);
declare
Reserv : constant Reservation := Reserve (Buffer, 4);
============================================================
--- src/giop/polyorb-giop_p-tagged_components.adb 6adb4a44a74679e013dc941a2114e477ee94bf22
+++ src/giop/polyorb-giop_p-tagged_components.adb 3adb0caa60937355c1c41d18ba6e6f54fb85573e
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -446,10 +446,10 @@ package body PolyORB.GIOP_P.Tagged_Compo
procedure Remove
(List : in out Tagged_Component_List;
- Comp : Tagged_Component_Access)
+ Comp : Tagged_Component_Access)
is
begin
- Remove (List, Comp, False);
+ Remove_Occurrences (List, Comp, All_Occurrences => False);
end Remove;
---------------
============================================================
--- src/giop/polyorb-protocols-giop-common.adb 77d42bece36b2be62815f8c726e2e4428b9efa75
+++ src/giop/polyorb-protocols-giop-common.adb 24043ebee726daf304caf00ffeb9e0c46defce47
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -161,8 +161,7 @@ package body PolyORB.Protocols.GIOP.Comm
N : Request_Note;
Request_Id : Types.Unsigned_Long renames N.Id;
CORBA_Occurence : PolyORB.Any.Any;
- Data_Alignment : Stream_Element_Offset :=
- Sess.Implem.Data_Alignment;
+ Data_Alignment : Alignment_Type := Sess.Implem.Data_Alignment;
Static_Buffer : constant QoS_GIOP_Static_Buffer_Parameter_Access :=
QoS_GIOP_Static_Buffer_Parameter_Access
@@ -262,10 +261,11 @@ package body PolyORB.Protocols.GIOP.Comm
if Static_Buffer = null then
pragma Debug (C, O ("Using Any to send reply data"));
- if TypeCode.Kind (Get_Type (Request.Result.Argument)) /=
- Tk_Void then
+ if TypeCode.Kind (Get_Type (Request.Result.Argument))
+ /= Tk_Void
+ then
Pad_Align (Buffer_Out, Data_Alignment);
- Data_Alignment := 1;
+ Data_Alignment := Align_1;
end if;
Marshall_From_Any
@@ -701,8 +701,8 @@ package body PolyORB.Protocols.GIOP.Comm
Success : Boolean;
ORB : constant ORB_Access := ORB_Access (Sess.Server);
- Arguments_Alignment : Buffers.Alignment_Type
- := Sess.Implem.Data_Alignment;
+ Arguments_Alignment : Buffers.Alignment_Type :=
+ Sess.Implem.Data_Alignment;
Error : Errors.Error_Container;
Static_Buffer : QoS_GIOP_Static_Buffer_Parameter_Access;
@@ -741,7 +741,7 @@ package body PolyORB.Protocols.GIOP.Comm
/= Tk_Void
then
Align_Position (Sess.Buffer_In, Arguments_Alignment);
- Arguments_Alignment := 1;
+ Arguments_Alignment := Align_1;
end if;
Unmarshall_To_Any
============================================================
--- src/giop/polyorb-protocols-giop-giop_1_0.ads 8f843e2e3182654fa12dfdbd7f27701f98adf546
+++ src/giop/polyorb-protocols-giop-giop_1_0.ads b3651c63e6b24157a115e008060fc740c7d25641
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -93,7 +93,7 @@ private
-- Data alignment
- Data_Alignment_1_0 : constant Buffers.Alignment_Type := 1;
+ Data_Alignment_1_0 : constant Buffers.Alignment_Type := Buffers.Align_1;
-- Principal
============================================================
--- src/giop/polyorb-protocols-giop-giop_1_1.ads ab0d42bc43630139422b4adeedd4089729c10321
+++ src/giop/polyorb-protocols-giop-giop_1_1.ads a0b0ede73ca7271379f434364a93559c9db1bffd
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -113,7 +113,7 @@ private
-- Data alignment
- Data_Alignment_1_1 : constant Buffers.Alignment_Type := 1;
+ Data_Alignment_1_1 : constant Buffers.Alignment_Type := Buffers.Align_1;
-- Principal
============================================================
--- src/giop/polyorb-protocols-giop-giop_1_2.ads f9429c32ec4497de8f0b725297a1b3592ddc3189
+++ src/giop/polyorb-protocols-giop-giop_1_2.ads 00ca83ae03bc8450592e7aafc8badb336cd8c766
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -205,7 +205,7 @@ private
-- Data alignment
- Data_Alignment_1_2 : constant Buffers.Alignment_Type := 8;
+ Data_Alignment_1_2 : constant Buffers.Alignment_Type := Buffers.Align_8;
-- Fragment header size
============================================================
--- src/giop/polyorb-protocols-giop.adb 63bea4f95a38fe9df1814373f570f74ae1601d32
+++ src/giop/polyorb-protocols-giop.adb a60144d9bf88353f990aff59a00f0a6d8297b8a3
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -225,7 +225,7 @@ package body PolyORB.Protocols.GIOP is
when Expect_Body =>
pragma Debug (C, O ("Received GIOP message body"));
- pragma Debug (Show (Sess.Buffer_In));
+ pragma Debug (C, Show (Sess.Buffer_In));
Process_Message (Sess.Implem, Sess);
when others =>
============================================================
--- src/moma/polyorb-moma_p-provider-topic_datas.adb f545a167daeca97c1757a3b04d82eae5a18b196e
+++ src/moma/polyorb-moma_p-provider-topic_datas.adb 731ac702d14bd8008d21fe9853fa864307d53608
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -150,7 +150,7 @@ package body PolyORB.MOMA_P.Provider.Top
-- XXX do we really need to raise an exception ?
end if;
- Destination_List.Remove (V.Subscribers, Pool);
+ Destination_List.Remove_Occurrences (V.Subscribers, Pool);
if V.Subscribers = Destination_List.Empty then
Delete (Data.T, T);
end if;
============================================================
--- src/polyorb-asynch_ev-sockets.adb 6d7ef022c6bb6b2db6ade0e4074a56e3ecb1f11d
+++ src/polyorb-asynch_ev-sockets.adb da9d36dcf79bbda85337c489434f6bf8043c946c
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -75,6 +75,18 @@ package body PolyORB.Asynch_Ev.Sockets i
return not Source_Lists.Is_Empty (AEM.Sources);
end Has_Sources;
+ ----------
+ -- Link --
+ ----------
+
+ function Link
+ (S : access Socket_Event_Source'Class;
+ Which : Ilists.Link_Type) return access SES_Access
+ is
+ begin
+ return S.Links (Which)'Unchecked_Access;
+ end Link;
+
---------------------
-- Register_Source --
---------------------
@@ -92,8 +104,13 @@ package body PolyORB.Asynch_Ev.Sockets i
return;
end if;
- Set (AEM.Monitored_Set, Socket_Event_Source (AES.all).Socket);
- Source_Lists.Append (AEM.Sources, AES);
+ declare
+ S_AES : Socket_Event_Source'Class
+ renames Socket_Event_Source'Class (AES.all);
+ begin
+ Set (AEM.Monitored_Set, S_AES.Socket);
+ Source_Lists.Append (AEM.Sources, S_AES'Access);
+ end;
pragma Debug (C, O ("Register_Source: Sources'Length ="
& Integer'Image (Source_Lists.Length (AEM.Sources))));
AES.Monitor := Asynch_Ev_Monitor_Access (AEM);
@@ -109,7 +126,10 @@ package body PolyORB.Asynch_Ev.Sockets i
procedure Unregister_Source
(AEM : in out Socket_Event_Monitor;
AES : Asynch_Ev_Source_Access;
- Success : out Boolean) is
+ Success : out Boolean)
+ is
+ S_AES : Socket_Event_Source'Class
+ renames Socket_Event_Source'Class (AES.all);
begin
pragma Debug (C, O ("Unregister_Source: enter"));
if not Is_Set (AEM.Monitored_Set,
@@ -117,8 +137,8 @@ package body PolyORB.Asynch_Ev.Sockets i
then
Success := False;
else
- Clear (AEM.Monitored_Set, Socket_Event_Source (AES.all).Socket);
- Source_Lists.Remove (AEM.Sources, AES);
+ Clear (AEM.Monitored_Set, S_AES.Socket);
+ Source_Lists.Remove_Element (AEM.Sources, S_AES'Access);
pragma Debug (C, O ("Unregister_Source: Sources'Length:="
& Source_Lists.Length (AEM.Sources)'Img));
Success := True;
@@ -203,16 +223,15 @@ package body PolyORB.Asynch_Ev.Sockets i
while not Source_Lists.Last (It) loop
declare
- S : Asynch_Ev_Source_Access renames Value (It).all;
- Sock : Socket_Type
- renames Socket_Event_Source (S.all).Socket;
+ S_AES : Socket_Event_Source'Class renames Value (It).all;
+ Sock : Socket_Type renames S_AES.Socket;
begin
if Is_Set (R_Set, Sock) then
pragma Debug
(C, O ("Got event on socket" & Image (Sock)));
Last := Last + 1;
- Result (Last) := S;
+ Result (Last) := S_AES'Access;
Clear (AEM.Monitored_Set, Sock);
Remove (AEM.Sources, It);
@@ -255,8 +274,7 @@ package body PolyORB.Asynch_Ev.Sockets i
(Socket : PolyORB.Sockets.Socket_Type)
return Asynch_Ev_Source_Access
is
- Result : constant Asynch_Ev_Source_Access
- := new Socket_Event_Source;
+ Result : constant Asynch_Ev_Source_Access := new Socket_Event_Source;
begin
Socket_Event_Source (Result.all).Socket := Socket;
return Result;
============================================================
--- src/polyorb-asynch_ev-sockets.ads f145eec3986b99b2e542bbdb840132a1bed5c34e
+++ src/polyorb-asynch_ev-sockets.ads db9d4b0130554e5ab153c935a17d7e9022b4b1b3
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2003 Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -16,19 +16,19 @@
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License for more details. You should have received a copy of the GNU --
-- General Public License distributed with PolyORB; see file COPYING. If --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA. --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
-- --
-- --
--- PolyORB is maintained by ACT Europe. --
--- (email: sales@act-europe.fr) --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
-- --
------------------------------------------------------------------------------
-- An asynchrous event source that is a set of socket descriptors.
with PolyORB.Sockets;
-with PolyORB.Utils.Chained_Lists;
+with PolyORB.Utils.Ilists;
package PolyORB.Asynch_Ev.Sockets is
@@ -66,18 +66,31 @@ package PolyORB.Asynch_Ev.Sockets is
(Socket : PolyORB.Sockets.Socket_Type)
return Asynch_Ev_Source_Access;
- function AEM_Factory_Of (AES : Socket_Event_Source)
- return AEM_Factory;
+ function AEM_Factory_Of (AES : Socket_Event_Source) return AEM_Factory;
private
+ package Ilists renames Utils.Ilists;
+
+ type SES_Access is access all Socket_Event_Source'Class;
+ type Links_Type is array (Ilists.Link_Type) of aliased SES_Access;
+
type Socket_Event_Source is new Asynch_Ev_Source with record
+ Links : Links_Type;
Socket : PolyORB.Sockets.Socket_Type;
end record;
+ function Link
+ (S : access Socket_Event_Source'Class;
+ Which : Ilists.Link_Type) return access SES_Access;
+ pragma Inline (Link);
+ -- Accessor for Links
+
package Source_Lists is
- new PolyORB.Utils.Chained_Lists
- (Asynch_Ev_Source_Access, Doubly_Chained => True);
+ new Ilists.Lists
+ (T => Socket_Event_Source'Class,
+ T_Acc => SES_Access,
+ Doubly_Linked => True);
type Socket_Event_Monitor is new Asynch_Ev_Monitor with record
Selector : PolyORB.Sockets.Selector_Type;
============================================================
--- src/polyorb-binding_objects.adb eba30a65cef3d288734a8d87b88e6e711731e0a1
+++ src/polyorb-binding_objects.adb b307b51b67c5497619e2f0517b67687ca8d3b565
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -55,18 +55,15 @@ package body PolyORB.Binding_Objects is
use PolyORB.Components;
use PolyORB.Errors;
- use BO_Lists;
-
Error : Error_Container;
-
begin
pragma Debug (C, O ("Finalizing binding object."));
-- First remove the reference to this BO from its ORB so that is does
-- not get reused while being finalized.
- PolyORB.ORB.Unregister_Binding_Object
- (X.Referenced_In, X'Unchecked_Access);
+ ORB.Unregister_Binding_Object
+ (ORB.ORB_Access (X.ORB), X'Unchecked_Access);
-- Notify protocol stack that it is about to be dismantled
@@ -128,41 +125,49 @@ package body PolyORB.Binding_Objects is
return BO.Profile;
end Get_Profile;
- -----------------------
- -- Get_Referenced_At --
- -----------------------
+ ----------
+ -- Link --
+ ----------
- function Get_Referenced_At
- (BO : Binding_Object_Access) return BO_Lists.Iterator
+ function Link
+ (X : access Binding_Object'Class;
+ Which : Utils.Ilists.Link_Type) return access Binding_Object_Access
is
begin
- return BO.Referenced_At;
- end Get_Referenced_At;
+ return X.Links (Which)'Unchecked_Access;
+ end Link;
- ------------------------------------
- -- Register_Reference_Information --
- ------------------------------------
+ ----------------
+ -- Referenced --
+ ----------------
- procedure Register_Reference_Information
- (BO : Binding_Object_Access;
- Referenced_In : Components.Component_Access;
- Referenced_At : BO_Lists.Iterator)
+ function Referenced (BO : Binding_Object_Access) return Boolean is
+ begin
+ return BO.Referenced;
+ end Referenced;
+
+ --------------------
+ -- Set_Referenced --
+ --------------------
+
+ procedure Set_Referenced
+ (BO : Binding_Object_Access;
+ Referenced : Boolean)
is
begin
- pragma Debug (C, O ("BO : Registering reference Information."));
- BO.Referenced_In := Referenced_In;
- BO.Referenced_At := Referenced_At;
- end Register_Reference_Information;
+ BO.Referenced := Referenced;
+ end Set_Referenced;
--------------------------
-- Setup_Binding_Object --
--------------------------
procedure Setup_Binding_Object
- (TE : Transport.Transport_Endpoint_Access;
- FFC : Filters.Factory_Array;
- BO_Ref : out Smart_Pointers.Ref;
- Pro : Binding_Data.Profile_Access)
+ (ORB : Components.Component_Access;
+ TE : Transport.Transport_Endpoint_Access;
+ FFC : Filters.Factory_Array;
+ BO_Ref : out Smart_Pointers.Ref;
+ Pro : Binding_Data.Profile_Access)
is
BO : Binding_Object_Access;
Bottom : Filters.Filter_Access;
@@ -173,6 +178,7 @@ package body PolyORB.Binding_Objects is
Set_Profile (BO, Pro);
+ BO.ORB := ORB;
BO.Transport_Endpoint := TE;
Filters.Create_Filter_Chain
(FFC,
============================================================
--- src/polyorb-binding_objects.ads 09596e10cb8ec629ed43c88a3e9642d285effad4
+++ src/polyorb-binding_objects.ads 0c45487ddb03011c54a10b69cc65ddc858cab5f8
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -28,13 +28,15 @@
-- Binding objects: protocol stacks seen globally as a reference-counted
-- entity.
+pragma Ada_2005;
+
with PolyORB.Annotations;
with PolyORB.Binding_Data;
with PolyORB.Components;
with PolyORB.Filters;
with PolyORB.Smart_Pointers;
with PolyORB.Transport;
-with PolyORB.Utils.Chained_Lists;
+with PolyORB.Utils.Ilists;
package PolyORB.Binding_Objects is
@@ -44,85 +46,88 @@ package PolyORB.Binding_Objects is
-- A protocol session and associated transport and filter stack,
-- seen globally as a reference-counted entity.
- package BO_Lists is new PolyORB.Utils.Chained_Lists
- (Binding_Object_Access, "=", Doubly_Chained => True);
- subtype BO_List is BO_Lists.List;
- -- A list of access to Binding Objects
+ function Link
+ (X : access Binding_Object'Class;
+ Which : Utils.Ilists.Link_Type) return access Binding_Object_Access;
+ pragma Inline (Link);
+ -- Accessor for chaining pointers in binding objects allowing them to be
+ -- attached to the ORB's binding objects list.
- function Get_Component (X : Smart_Pointers.Ref)
- return PolyORB.Components.Component_Access;
+ function Get_Component
+ (X : Smart_Pointers.Ref) return Components.Component_Access;
-- Return the top component of the Binding_Object
-- designated by reference X.
- function Get_Endpoint (X : Smart_Pointers.Ref)
- return PolyORB.Transport.Transport_Endpoint_Access;
+ function Get_Endpoint
+ (X : Smart_Pointers.Ref) return Transport.Transport_Endpoint_Access;
-- Return the transport endpoint of the Binding_Object
-- designated by reference X.
- function Get_Profile (BO : Binding_Object_Access)
- return Binding_Data.Profile_Access;
+ function Get_Profile
+ (BO : Binding_Object_Access) return Binding_Data.Profile_Access;
-- Return profile associated with Binding Object BO
procedure Set_Profile
(BO : Binding_Object_Access; P : Binding_Data.Profile_Access);
-- Set the profile associated with Binding Object BO
- procedure Register_Reference_Information
- (BO : Binding_Object_Access;
- Referenced_In : Components.Component_Access;
- Referenced_At : BO_Lists.Iterator);
- -- Register reference information into the Binding Object BO so that it can
- -- remove itself from the ORB binding object list at finalisation.
+ procedure Set_Referenced
+ (BO : Binding_Object_Access;
+ Referenced : Boolean);
+ -- Record that BO is attached to the ORB's BO list
+ function Referenced (BO : Binding_Object_Access) return Boolean;
+ -- Test whether BO is attached to the ORB's BO list
+
procedure Setup_Binding_Object
- (TE : Transport.Transport_Endpoint_Access;
- FFC : Filters.Factory_Array;
+ (ORB : Components.Component_Access;
+ TE : Transport.Transport_Endpoint_Access;
+ FFC : Filters.Factory_Array;
BO_Ref : out Smart_Pointers.Ref;
- Pro : Binding_Data.Profile_Access);
+ Pro : Binding_Data.Profile_Access);
-- Create a binding object associating TE with a protocol stack
-- instantiated using FFC.
function Notepad_Of
- (BO : Binding_Object_Access)
- return Annotations.Notepad_Access;
+ (BO : Binding_Object_Access) return Annotations.Notepad_Access;
-- Returns the notepad of given Binding Object
- function Get_Referenced_At
- (BO : Binding_Object_Access) return BO_Lists.Iterator;
- -- Return an iterator denoting the position of BO in the ORB's list of
- -- active binding objects (as set by Register_Reference_Information).
-
function Valid (BO : Binding_Object_Access) return Boolean;
-- True if BO can be used to forward requests to an object
private
- type Binding_Object is
- new Smart_Pointers.Non_Controlled_Entity with record
- Transport_Endpoint : Transport.Transport_Endpoint_Access;
- -- Bottom of the binding object: a transport endpoint
+ type Links_Type is
+ array (Utils.Ilists.Link_Type) of aliased Binding_Object_Access;
- Top : Filters.Filter_Access;
- -- Top of the binding object: a protocol session
+ type Binding_Object is new Smart_Pointers.Non_Controlled_Entity with record
+ ORB : Components.Component_Access;
+ -- The ORB owning this BO
- Profile : Binding_Data.Profile_Access;
- -- The Profile associated with this Binding Object. This profile is
- -- used to determine if the Binding Object can be reused for another
- -- profile.
+ Transport_Endpoint : Transport.Transport_Endpoint_Access;
+ -- Bottom of the binding object: a transport endpoint
- Referenced_In : Components.Component_Access;
- -- The ORB where this Binding Object is referenced
+ Top : Filters.Filter_Access;
+ -- Top of the binding object: a protocol session
- Referenced_At : BO_Lists.Iterator;
- -- The position of this Binding Object in the Binding_Objects list of
- -- the ORB referencing this Binding Object.
- -- Note: this component must be accessed under the protection of the
- -- critical section of the Referenced_In ORB.
+ Profile : Binding_Data.Profile_Access;
+ -- The Profile associated with this Binding Object. This profile is
+ -- used to determine if the Binding Object can be reused for another
+ -- profile.
- Notepad : aliased Annotations.Notepad;
- -- Binding_Object's notepad. The user is responsible for ensuring
- -- proper protection against incorrect concurrent accesses.
- end record;
+ Links : aliased Links_Type;
+ -- Pointers for chaining of this Binding Object in the
+ -- Binding_Objects list of the ORB.
+ -- Note: this component must be accessed under the protection of the
+ -- critical section of the Referenced_In ORB.
+ Referenced : Boolean := False;
+ -- True when attached to the ORB's BO list
+
+ Notepad : aliased Annotations.Notepad;
+ -- Binding_Object's notepad. The user is responsible for ensuring
+ -- proper protection against incorrect concurrent accesses.
+ end record;
+
procedure Finalize (X : in out Binding_Object);
end PolyORB.Binding_Objects;
============================================================
--- src/polyorb-buffers.adb 37848e6f2a31b7862eedd1731894a83b5a155e76
+++ src/polyorb-buffers.adb 1d84ea6a542a20d87f551541a703be0b7703edc4
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -26,14 +26,19 @@ with Ada.Unchecked_Deallocation;
------------------------------------------------------------------------------
with Ada.Unchecked_Deallocation;
--- For Iovec_Pools.Free
+pragma Warnings (Off);
+-- Depends on System.Unsigned_Types, an internal GNAT unit
+with System.Unsigned_Types;
+pragma Warnings (On);
+
with PolyORB.Log;
package body PolyORB.Buffers is
use Ada.Streams;
use System.Storage_Elements;
+ use System.Unsigned_Types;
use PolyORB.Opaque;
use PolyORB.Log;
use Buffer_Chunk_Pools;
@@ -61,133 +66,102 @@ package body PolyORB.Buffers is
-- pointer to it. The caller must take care of deallocating the pointer
-- after use.
- ------------------------
- -- General operations --
- ------------------------
+ function Padding_Size
+ (Pos : Stream_Element_Offset;
+ Alignment : Alignment_Type) return Stream_Element_Count;
+ pragma Inline (Padding_Size);
+ -- Return size of padding required to bring buffer position Pos to the
+ -- desired alignment.
- ------------
- -- Length --
- ------------
+ procedure Show (Octets : Zone_Access);
+ -- Display the contents of Octets for debugging purposes.
- function Length
- (Buffer : access Buffer_Type)
- return Stream_Element_Count is
- begin
- return Buffer.Length;
- end Length;
-
--------------------
- -- Set_Endianness --
+ -- Align_Position --
--------------------
- procedure Set_Endianness
- (Buffer : access Buffer_Type;
- E : Endianness_Type) is
+ procedure Align_Position
+ (Buffer : access Buffer_Type;
+ Alignment : Alignment_Type)
+ is
+ Padding : constant Stream_Element_Count :=
+ Padding_Size (Buffer.CDR_Position, Alignment);
begin
- pragma Assert (Buffer.CDR_Position = Buffer.Initial_CDR_Position);
- Buffer.Endianness := E;
- end Set_Endianness;
+ pragma Debug
+ (C, O ("Align_Position: pos = "
+ & Stream_Element_Offset'Image (Buffer.CDR_Position)
+ & ", padding by" & Stream_Element_Count'Image (Padding)
+ & " for " & Alignment_Type'Image (Alignment)));
- ----------------
- -- Endianness --
- ----------------
+ pragma Assert
+ (Buffer.CDR_Position + Padding <=
+ Buffer.Initial_CDR_Position + Buffer.Length);
- function Endianness (Buffer : access Buffer_Type) return Endianness_Type is
- begin
- return Buffer.Endianness;
- end Endianness;
+ -- Advance the CDR position to the new aligned position
- ----------------------
- -- Release_Contents --
- ----------------------
+ Buffer.CDR_Position := Buffer.CDR_Position + Padding;
- procedure Release_Contents
- (Buffer : in out Buffer_Type) is
- begin
- Release (Buffer.Contents);
- Buffer_Chunk_Pools.Release (Buffer.Storage'Access);
- Buffer.CDR_Position := 0;
- Buffer.Initial_CDR_Position := 0;
- Buffer.Endianness := Host_Order;
- Buffer.Length := 0;
- end Release_Contents;
+ pragma Debug
+ (C, O ("Align_Position: now at"
+ & Stream_Element_Offset'Image (Buffer.CDR_Position)));
+ end Align_Position;
- -----------------------
- -- Initialize_Buffer --
- -----------------------
+ -------------------------------------
+ -- Allocate_And_Insert_Cooked_Data --
+ -------------------------------------
- procedure Initialize_Buffer
- (Buffer : access Buffer_Type;
- Size : Stream_Element_Count;
- Data : Opaque_Pointer;
- Endianness : Endianness_Type;
- Initial_CDR_Position : Stream_Element_Offset)
+ procedure Allocate_And_Insert_Cooked_Data
+ (Buffer : access Buffer_Type;
+ Size : Stream_Element_Count;
+ Data : out Opaque_Pointer)
is
- Data_Iovec : constant Iovec := (Iov_Base => Data,
- Iov_Len => Storage_Offset (Size));
+ A_Data : Opaque_Pointer;
begin
- pragma Assert (True
- and then Buffer.CDR_Position = 0
- and then Buffer.Initial_CDR_Position = 0);
+ Grow_Shrink (Buffer.Contents'Access, Size, A_Data);
+ -- First try to grow an existing Iovec.
- Buffer.Endianness := Endianness;
- Buffer.CDR_Position := Initial_CDR_Position;
- Buffer.Initial_CDR_Position := Initial_CDR_Position;
+ if Is_Null (A_Data) then
+ declare
+ A_Chunk : Chunk_Access;
+ Data_Iovec : Iovec;
+ begin
+ Allocate (Buffer.Storage'Access, A_Chunk, Size);
+ pragma Assert (A_Chunk /= null and then A_Chunk.Size >= Size);
+ Data_Iovec := (Iov_Base => Chunk_Storage (A_Chunk),
+ Iov_Len => Storage_Offset (Size));
- Append
- (Iovec_Pool => Buffer.Contents,
- An_Iovec => Data_Iovec);
+ A_Data := Chunk_Storage (A_Chunk);
+ Metadata (A_Chunk).all := (Last_Used => Size);
+ Append
+ (Iovec_Pool => Buffer.Contents,
+ An_Iovec => Data_Iovec,
+ A_Chunk => A_Chunk);
+ pragma Assert (not Is_Null (A_Data));
+ end;
+ end if;
- Buffer.Length := Size;
- end Initialize_Buffer;
+ Data := A_Data;
+ Buffer.CDR_Position := Buffer.CDR_Position + Size;
+ Buffer.Length := Buffer.Length + Size;
+ end Allocate_And_Insert_Cooked_Data;
- -------------
- -- Reserve --
- -------------
+ ------------------
+ -- CDR_Position --
+ ------------------
- function Reserve
- (Buffer : access Buffer_Type;
- Amount : Stream_Element_Count) return Reservation
- is
- Copy_Address : Opaque_Pointer;
- Initial_Position : constant Stream_Element_Offset :=
- Buffer.CDR_Position;
+ function CDR_Position
+ (Buffer : access Buffer_Type)
+ return Stream_Element_Offset is
begin
- Allocate_And_Insert_Cooked_Data
- (Buffer, Amount, Copy_Address);
+ return Buffer.CDR_Position;
+ end CDR_Position;
- return Reservation'
- (Location => Copy_Address,
- Endianness => Buffer.Endianness,
- CDR_Position => Initial_Position,
- Length => Amount);
- end Reserve;
-
- ---------------
- -- Copy_Data --
- ---------------
-
- procedure Copy_Data
- (From : Buffer_Type;
- Into : Reservation) is
- begin
- pragma Assert (True
- and then From.Endianness = Into.Endianness
- and then From.Initial_CDR_Position = Into.CDR_Position
- and then From.Length = Into.Length);
-
- Iovec_Pools.Dump (From.Contents, Into.Location);
- end Copy_Data;
-
----------
-- Copy --
----------
- function Copy
- (Buffer : access Buffer_Type)
- return Buffer_Access
- is
+ function Copy (Buffer : access Buffer_Type) return Buffer_Access is
Into : constant Buffer_Access := new Buffer_Type;
Copy_Address : Opaque_Pointer;
@@ -206,115 +180,139 @@ package body PolyORB.Buffers is
return Into;
end Copy;
- -------------
- -- Release --
- -------------
+ ---------------
+ -- Copy_Data --
+ ---------------
- procedure Release
- (A_Buffer : in out Buffer_Access)
- is
- procedure Free is new Ada.Unchecked_Deallocation
- (Buffer_Type, Buffer_Access);
-
+ procedure Copy_Data
+ (From : Buffer_Type;
+ Into : Reservation) is
begin
- if A_Buffer /= null then
- Release_Contents (A_Buffer.all);
- Free (A_Buffer);
- end if;
- end Release;
+ pragma Assert (True
+ and then From.Endianness = Into.Endianness
+ and then From.Initial_CDR_Position = Into.CDR_Position
+ and then From.Length = Into.Length);
- -----------------------------
- -- To_Stream_Element_Array --
- -----------------------------
+ Iovec_Pools.Dump (From.Contents, Into.Location);
+ end Copy_Data;
- function To_Stream_Element_Array
- (Buffer : access Buffer_Type)
- return Opaque.Zone_Access
- is
- Result : Opaque.Zone_Access;
+ ----------------
+ -- Endianness --
+ ----------------
+
+ function Endianness (Buffer : access Buffer_Type) return Endianness_Type is
begin
- pragma Assert (Buffer.Initial_CDR_Position = 0);
- Result := new Stream_Element_Array (1 .. Length (Buffer));
- Iovec_Pools.Dump (Buffer.Contents, Result (Result'First)'Address);
- return Result;
- end To_Stream_Element_Array;
+ return Buffer.Endianness;
+ end Endianness;
- function To_Stream_Element_Array
- (Buffer : access Buffer_Type)
- return Stream_Element_Array
+ ------------------
+ -- Extract_Data --
+ ------------------
+
+ procedure Extract_Data
+ (Buffer : access Buffer_Type;
+ Data : out Opaque_Pointer;
+ Size : Stream_Element_Count;
+ Use_Current : Boolean := True;
+ At_Position : Stream_Element_Offset := 0)
is
- Contents : Zone_Access := To_Stream_Element_Array (Buffer);
- Result : constant Stream_Element_Array := Contents.all;
+ Extracted_Size : Stream_Element_Count := Size;
begin
- Free (Contents);
- return Result;
- end To_Stream_Element_Array;
+ Partial_Extract_Data (Buffer, Data, Extracted_Size,
+ Use_Current, At_Position, Partial => False);
+ pragma Assert (Extracted_Size = Size);
+ end Extract_Data;
- ----------
- -- Peek --
- ----------
+ ------------
+ -- Length --
+ ------------
- function Peek
- (Buffer : access Buffer_Type;
- Position : Ada.Streams.Stream_Element_Offset)
- return Ada.Streams.Stream_Element is
+ function Length (Buffer : access Buffer_Type) return Stream_Element_Count is
begin
- return Iovec_Pools.Peek
- (Iovec_Pool => Buffer.Contents,
- Offset => Position - Buffer.Initial_CDR_Position);
- end Peek;
+ return Buffer.Length;
+ end Length;
- ------------------------------
- -- The CDR view of a buffer --
- ------------------------------
+ -----------------------
+ -- Initialize_Buffer --
+ -----------------------
- --------------------------
- -- Set_Initial_Position --
- --------------------------
+ procedure Initialize_Buffer
+ (Buffer : access Buffer_Type;
+ Size : Stream_Element_Count;
+ Data : Opaque_Pointer;
+ Endianness : Endianness_Type;
+ Initial_CDR_Position : Stream_Element_Offset)
+ is
+ Data_Iovec : constant Iovec := (Iov_Base => Data,
+ Iov_Len => Storage_Offset (Size));
- procedure Set_Initial_Position
- (Buffer : access Buffer_Type;
- Position : Stream_Element_Offset) is
begin
- pragma Assert
- (Buffer.Initial_CDR_Position = Buffer.CDR_Position);
+ pragma Assert (True
+ and then Buffer.CDR_Position = 0
+ and then Buffer.Initial_CDR_Position = 0);
- Buffer.Initial_CDR_Position := Position;
- Buffer.CDR_Position := Position;
- end Set_Initial_Position;
+ Buffer.Endianness := Endianness;
+ Buffer.CDR_Position := Initial_CDR_Position;
+ Buffer.Initial_CDR_Position := Initial_CDR_Position;
- Null_Data : aliased Stream_Element_Array (1 .. Alignment_Type'Last - 1)
- := (1 .. Alignment_Type'Last - 1 => 0);
- -- Null data used for padding.
+ Append
+ (Iovec_Pool => Buffer.Contents,
+ An_Iovec => Data_Iovec);
- Null_Data_Address : constant Opaque_Pointer
- := Null_Data (Null_Data'First)'Address;
+ Buffer.Length := Size;
+ end Initialize_Buffer;
+ ---------------------
+ -- Insert_Raw_Data --
+ ---------------------
+
+ procedure Insert_Raw_Data
+ (Buffer : access Buffer_Type;
+ Size : Stream_Element_Count;
+ Data : Opaque_Pointer)
+ is
+ Data_Iovec : constant Iovec
+ := (Iov_Base => Data, Iov_Len => Storage_Offset (Size));
+ begin
+ pragma Assert (Buffer.Endianness = Host_Order);
+
+ Append (Iovec_Pool => Buffer.Contents, An_Iovec => Data_Iovec);
+ Buffer.CDR_Position := Buffer.CDR_Position + Size;
+ Buffer.Length := Buffer.Length + Size;
+ end Insert_Raw_Data;
+
---------------
-- Pad_Align --
---------------
+ Null_Data : aliased Stream_Element_Array
+ (1 .. 2 ** Alignment_Type'Pos (Alignment_Type'Last)) :=
+ (others => 0);
+ -- Null data used for padding
+
+ Null_Data_Address : constant Opaque_Pointer :=
+ Null_Data (Null_Data'First)'Address;
+
procedure Pad_Align
(Buffer : access Buffer_Type;
Alignment : Alignment_Type)
is
Padding : constant Stream_Element_Count :=
- (Alignment - Buffer.CDR_Position) mod Alignment;
+ Padding_Size (Buffer.CDR_Position, Alignment);
Padding_Space : Opaque_Pointer;
begin
+ pragma Debug
+ (C, O ("Pad_Align: pos = "
+ & Stream_Element_Offset'Image (Buffer.CDR_Position)
+ & ", padding by" & Stream_Element_Count'Image (Padding)
+ & " for " & Alignment_Type'Image (Alignment)));
+
if Padding = 0 then
-- Buffer is already aligned
+
return;
end if;
- pragma Debug
- (C, O ("Pad_Align: pos = "
- & Stream_Element_Offset'Image (Buffer.CDR_Position)));
- pragma Debug
- (C, O ("Aligning on" & Alignment_Type'Image (Alignment)));
- pragma Debug (C, O ("Padding by"
- & Stream_Element_Count'Image (Padding)));
-
-- Try to extend Buffer.Content's last Iovec to provide proper alignment
Grow_Shrink (Buffer.Contents'Access, Padding, Padding_Space);
@@ -348,143 +346,23 @@ package body PolyORB.Buffers is
Align_Position (Buffer, Alignment);
end Pad_Align;
- --------------------
- -- Align_Position --
- --------------------
-
- procedure Align_Position
- (Buffer : access Buffer_Type;
- Alignment : Alignment_Type)
- is
- Padding : constant Stream_Element_Count
- := (Alignment - Buffer.CDR_Position) mod Alignment;
- begin
- pragma Debug
- (C, O ("Align_Position: pos = "
- & Stream_Element_Offset'Image (Buffer.CDR_Position)));
- pragma Debug
- (C, O ("Aligning on" & Alignment_Type'Image (Alignment)));
- pragma Debug
- (C, O ("Padding by" & Stream_Element_Count'Image (Padding)));
-
- if Padding = 0 then
- -- Buffer is already aligned.
-
- return;
- end if;
-
- pragma Assert
- (Buffer.CDR_Position + Padding
- <= Buffer.Initial_CDR_Position + Buffer.Length);
-
- Buffer.CDR_Position := Buffer.CDR_Position + Padding;
- -- Advance the CDR position to the new alignment.
-
- pragma Assert (Buffer.CDR_Position mod Alignment = 0);
- -- Post-condition: the buffer is aligned as requested.
-
- pragma Debug
- (C, O ("Align_Position: now at"
- & Stream_Element_Offset'Image (Buffer.CDR_Position)));
-
- end Align_Position;
-
- ---------------------
- -- Insert_Raw_Data --
- ---------------------
-
- procedure Insert_Raw_Data
- (Buffer : access Buffer_Type;
- Size : Stream_Element_Count;
- Data : Opaque_Pointer)
- is
- Data_Iovec : constant Iovec
- := (Iov_Base => Data, Iov_Len => Storage_Offset (Size));
- begin
- pragma Assert (Buffer.Endianness = Host_Order);
-
- Append
- (Iovec_Pool => Buffer.Contents,
- An_Iovec => Data_Iovec);
- Buffer.CDR_Position := Buffer.CDR_Position + Size;
- Buffer.Length := Buffer.Length + Size;
- end Insert_Raw_Data;
-
- -------------------------------------
- -- Allocate_And_Insert_Cooked_Data --
- -------------------------------------
-
- procedure Allocate_And_Insert_Cooked_Data
- (Buffer : access Buffer_Type;
- Size : Stream_Element_Count;
- Data : out Opaque_Pointer)
- is
- A_Data : Opaque_Pointer;
-
- begin
- Grow_Shrink (Buffer.Contents'Access, Size, A_Data);
- -- First try to grow an existing Iovec.
-
- if Is_Null (A_Data) then
- declare
- A_Chunk : Chunk_Access;
- Data_Iovec : Iovec;
- begin
- Allocate (Buffer.Storage'Access, A_Chunk, Size);
- pragma Assert (A_Chunk /= null and then A_Chunk.Size >= Size);
- Data_Iovec := (Iov_Base => Chunk_Storage (A_Chunk),
- Iov_Len => Storage_Offset (Size));
-
- A_Data := Chunk_Storage (A_Chunk);
- Metadata (A_Chunk).all := (Last_Used => Size);
- Append
- (Iovec_Pool => Buffer.Contents,
- An_Iovec => Data_Iovec,
- A_Chunk => A_Chunk);
- pragma Assert (not Is_Null (A_Data));
- end;
- end if;
-
- Data := A_Data;
- Buffer.CDR_Position := Buffer.CDR_Position + Size;
- Buffer.Length := Buffer.Length + Size;
- end Allocate_And_Insert_Cooked_Data;
-
- ----------------------
- -- Unuse_Allocation --
- ----------------------
-
- procedure Unuse_Allocation
- (Buffer : access Buffer_Type;
- Size : Stream_Element_Count)
- is
- Data : Opaque_Pointer;
-
- begin
- if Size /= 0 then
- Grow_Shrink (Buffer.Contents'Access, -Size, Data);
- Buffer.CDR_Position := Buffer.CDR_Position - Size;
- Buffer.Length := Buffer.Length - Size;
- end if;
- end Unuse_Allocation;
-
------------------
- -- Extract_Data --
+ -- Padding_Size --
------------------
- procedure Extract_Data
- (Buffer : access Buffer_Type;
- Data : out Opaque_Pointer;
- Size : Stream_Element_Count;
- Use_Current : Boolean := True;
- At_Position : Stream_Element_Offset := 0)
+ function Padding_Size
+ (Pos : Stream_Element_Offset;
+ Alignment : Alignment_Type) return Stream_Element_Count
is
- Extracted_Size : Stream_Element_Count := Size;
+ subtype Alignment_Modular is System.Unsigned_Types.Long_Unsigned;
+
+ Alignment_Mask : constant Alignment_Modular :=
+ Shift_Left (1, Alignment_Type'Pos (Alignment)) - 1;
+ Padding : constant Alignment_Modular :=
+ (-Alignment_Modular (Pos)) and Alignment_Mask;
begin
- Partial_Extract_Data (Buffer, Data, Extracted_Size,
- Use_Current, At_Position, Partial => False);
- pragma Assert (Extracted_Size = Size);
- end Extract_Data;
+ return Stream_Element_Count (Padding);
+ end Padding_Size;
--------------------------
-- Partial_Extract_Data --
@@ -520,38 +398,79 @@ package body PolyORB.Buffers is
end if;
end Partial_Extract_Data;
- ------------------
- -- CDR_Position --
- ------------------
+ ----------
+ -- Peek --
+ ----------
- function CDR_Position
- (Buffer : access Buffer_Type)
- return Stream_Element_Offset is
+ function Peek
+ (Buffer : access Buffer_Type;
+ Position : Ada.Streams.Stream_Element_Offset)
+ return Ada.Streams.Stream_Element
+ is
begin
- return Buffer.CDR_Position;
- end CDR_Position;
+ return Iovec_Pools.Peek
+ (Iovec_Pool => Buffer.Contents,
+ Offset => Position - Buffer.Initial_CDR_Position);
+ end Peek;
- ----------------------
- -- Set_CDR_Position --
- ----------------------
+ --------------------
+ -- Receive_Buffer --
+ --------------------
- procedure Set_CDR_Position
+ procedure Receive_Buffer
(Buffer : access Buffer_Type;
- Position : Stream_Element_Offset) is
+ Max : Stream_Element_Count;
+ Received : out Stream_Element_Count)
+ is
+ V : aliased Iovec;
+ Saved_CDR_Position : constant Stream_Element_Offset :=
+ Buffer.CDR_Position;
+
begin
- Buffer.CDR_Position := Position;
- end Set_CDR_Position;
+ pragma Debug (C, O ("Receive_Buffer: Max =" & Max'Img));
- ------------
- -- Rewind --
- ------------
+ Allocate_And_Insert_Cooked_Data (Buffer, Max, V.Iov_Base);
+ V.Iov_Len := Storage_Offset (Max);
+ Lowlevel_Receive (V'Access);
+ Received := Stream_Element_Offset (V.Iov_Len);
- procedure Rewind
- (Buffer : access Buffer_Type) is
+ pragma Debug (C, O ("Receive_Buffer: Received =" & Received'Img));
+ Unuse_Allocation (Buffer, Max - Received);
+ Buffer.CDR_Position := Saved_CDR_Position;
+ end Receive_Buffer;
+
+ -------------
+ -- Release --
+ -------------
+
+ procedure Release
+ (A_Buffer : in out Buffer_Access)
+ is
+ procedure Free is new Ada.Unchecked_Deallocation
+ (Buffer_Type, Buffer_Access);
+
begin
- Buffer.CDR_Position := Buffer.Initial_CDR_Position;
- end Rewind;
+ if A_Buffer /= null then
+ Release_Contents (A_Buffer.all);
+ Free (A_Buffer);
+ end if;
+ end Release;
+ ----------------------
+ -- Release_Contents --
+ ----------------------
+
+ procedure Release_Contents
+ (Buffer : in out Buffer_Type) is
+ begin
+ Release (Buffer.Contents);
+ Buffer_Chunk_Pools.Release (Buffer.Storage'Access);
+ Buffer.CDR_Position := 0;
+ Buffer.Initial_CDR_Position := 0;
+ Buffer.Endianness := Host_Order;
+ Buffer.Length := 0;
+ end Release_Contents;
+
---------------
-- Remaining --
---------------
@@ -564,10 +483,38 @@ package body PolyORB.Buffers is
- Buffer.CDR_Position;
end Remaining;
- ---------------------------------------
- -- The input/output view of a buffer --
- ---------------------------------------
+ -------------
+ -- Reserve --
+ -------------
+ function Reserve
+ (Buffer : access Buffer_Type;
+ Amount : Stream_Element_Count) return Reservation
+ is
+ Copy_Address : Opaque_Pointer;
+ Initial_Position : constant Stream_Element_Offset :=
+ Buffer.CDR_Position;
+ begin
+ Allocate_And_Insert_Cooked_Data
+ (Buffer, Amount, Copy_Address);
+
+ return Reservation'
+ (Location => Copy_Address,
+ Endianness => Buffer.Endianness,
+ CDR_Position => Initial_Position,
+ Length => Amount);
+ end Reserve;
+
+ ------------
+ -- Rewind --
+ ------------
+
+ procedure Rewind
+ (Buffer : access Buffer_Type) is
+ begin
+ Buffer.CDR_Position := Buffer.Initial_CDR_Position;
+ end Rewind;
+
-----------------
-- Send_Buffer --
-----------------
@@ -579,38 +526,43 @@ package body PolyORB.Buffers is
Send_Iovec_Pool (Buffer.Contents'Access, Buffer.Length);
end Send_Buffer;
- --------------------
- -- Receive_Buffer --
- --------------------
+ ----------------------
+ -- Set_CDR_Position --
+ ----------------------
- procedure Receive_Buffer
+ procedure Set_CDR_Position
(Buffer : access Buffer_Type;
- Max : Stream_Element_Count;
- Received : out Stream_Element_Count)
- is
- V : aliased Iovec;
- Saved_CDR_Position : constant Stream_Element_Offset
- := Buffer.CDR_Position;
+ Position : Stream_Element_Offset) is
+ begin
+ Buffer.CDR_Position := Position;
+ end Set_CDR_Position;
- begin
- pragma Debug (C, O ("Receive_Buffer: Max =" & Max'Img));
+ --------------------
+ -- Set_Endianness --
+ --------------------
- Allocate_And_Insert_Cooked_Data (Buffer, Max, V.Iov_Base);
- V.Iov_Len := Storage_Offset (Max);
- Lowlevel_Receive (V'Access);
- Received := Stream_Element_Offset (V.Iov_Len);
+ procedure Set_Endianness
+ (Buffer : access Buffer_Type;
+ E : Endianness_Type) is
+ begin
+ pragma Assert (Buffer.CDR_Position = Buffer.Initial_CDR_Position);
+ Buffer.Endianness := E;
+ end Set_Endianness;
- pragma Debug (C, O ("Receive_Buffer: Received =" & Received'Img));
- Unuse_Allocation (Buffer, Max - Received);
- Buffer.CDR_Position := Saved_CDR_Position;
- end Receive_Buffer;
+ --------------------------
+ -- Set_Initial_Position --
+ --------------------------
- -------------------------
- -- Utility subprograms --
- -------------------------
+ procedure Set_Initial_Position
+ (Buffer : access Buffer_Type;
+ Position : Stream_Element_Offset) is
+ begin
+ pragma Assert
+ (Buffer.Initial_CDR_Position = Buffer.CDR_Position);
- procedure Show (Octets : Zone_Access);
- -- Display the contents of Octets for debugging purposes.
+ Buffer.Initial_CDR_Position := Position;
+ Buffer.CDR_Position := Position;
+ end Set_Initial_Position;
----------
-- Show --
@@ -667,6 +619,10 @@ package body PolyORB.Buffers is
end if;
end Show;
+ ----------
+ -- Show --
+ ----------
+
procedure Show (Buffer : access Buffer_Type) is
begin
pragma Debug (C2, O2 ("Dumping "
@@ -680,22 +636,68 @@ package body PolyORB.Buffers is
end if;
declare
- Dumped : Zone_Access
- := To_Stream_Element_Array (Buffer);
+ Dumped : Zone_Access := To_Stream_Element_Array (Buffer);
begin
Show (Dumped);
Free (Dumped);
end;
end Show;
- -------------------------------------------
- -- Implementation of package Iovec_Pools --
- -------------------------------------------
+ -----------------------------
+ -- To_Stream_Element_Array --
+ -----------------------------
+ function To_Stream_Element_Array
+ (Buffer : access Buffer_Type) return Opaque.Zone_Access
+ is
+ Result : Opaque.Zone_Access;
+ begin
+ pragma Assert (Buffer.Initial_CDR_Position = 0);
+ Result := new Stream_Element_Array (1 .. Length (Buffer));
+ Iovec_Pools.Dump (Buffer.Contents, Result (Result'First)'Address);
+ return Result;
+ end To_Stream_Element_Array;
+
+ -----------------------------
+ -- To_Stream_Element_Array --
+ -----------------------------
+
+ function To_Stream_Element_Array
+ (Buffer : access Buffer_Type) return Stream_Element_Array
+ is
+ Contents : Zone_Access := To_Stream_Element_Array (Buffer);
+ Result : constant Stream_Element_Array := Contents.all;
+ begin
+ Free (Contents);
+ return Result;
+ end To_Stream_Element_Array;
+
+ ----------------------
+ -- Unuse_Allocation --
+ ----------------------
+
+ procedure Unuse_Allocation
+ (Buffer : access Buffer_Type;
+ Size : Stream_Element_Count)
+ is
+ Data : Opaque_Pointer;
+
+ begin
+ if Size /= 0 then
+ Grow_Shrink (Buffer.Contents'Access, -Size, Data);
+ Buffer.CDR_Position := Buffer.CDR_Position - Size;
+ Buffer.Length := Buffer.Length - Size;
+ end if;
+ end Unuse_Allocation;
+
+ -----------------
+ -- Iovec_Pools --
+ -----------------
+
package body Iovec_Pools is
- procedure Free is new Ada.Unchecked_Deallocation
- (Iovec_Array, Iovec_Array_Access);
+ procedure Free is
+ new Ada.Unchecked_Deallocation (Iovec_Array, Iovec_Array_Access);
----------------------------------------
-- Utility Subprograms (declarations) --
@@ -722,152 +724,35 @@ package body PolyORB.Buffers is
procedure Dump (Iovecs : Iovec_Array; Into : Opaque_Pointer);
-- Dump the content of Iovecs into Into
- -----------------
- -- Grow_Shrink --
- -----------------
-
- procedure Grow_Shrink
- (Iovec_Pool : access Iovec_Pool_Type;
- Size : Stream_Element_Offset;
- Data : out Opaque_Pointer)
- is
-
- -------------------------
- -- First_Address_After --
- -------------------------
-
- function First_Address_After (An_Iovec : Iovec) return Opaque_Pointer;
- pragma Inline (First_Address_After);
- -- Return the address of the storage element immediately following
- -- the last element of An_Iovec.
-
- function First_Address_After
- (An_Iovec : Iovec) return Opaque_Pointer
- is
- begin
- return An_Iovec.Iov_Base + An_Iovec.Iov_Len;
- end First_Address_After;
-
- -------------
- -- Do_Grow --
- -------------
-
- procedure Do_Grow
- (Last_Iovec : in out Iovec;
- Last_Chunk : Chunk_Access);
- pragma Inline (Do_Grow);
-
- procedure Do_Grow
- (Last_Iovec : in out Iovec;
- Last_Chunk : Chunk_Access) is
- begin
- if Last_Chunk /= null then
- declare
- Chunk_Metadata : constant Chunk_Metadata_Access
- := Metadata (Last_Chunk);
- begin
- if False
- or else (Size > 0
- and then Chunk_Metadata.Last_Used + Size
- <= Last_Chunk.Size)
- or else (Size < 0
- and then Chunk_Metadata.Last_Used + Size >= 0
- and then Last_Iovec.Iov_Len
- + Storage_Offset (Size) >= 0)
- then
- Chunk_Metadata.Last_Used
- := Chunk_Metadata.Last_Used + Size;
- Data := First_Address_After (Last_Iovec);
- Last_Iovec.Iov_Len := Last_Iovec.Iov_Len
- + Storage_Offset (Size);
- else
- -- Cannot grow last chunk: leave Data unchanged.
-
- pragma Debug
- (C, O ("Cannot satisfy growth request of size"
- & Stream_Element_Offset'Image (Size)));
- null;
- end if;
- end;
- end if;
- end Do_Grow;
-
- begin
- Data := System.Null_Address;
-
- if Iovec_Pool.Last = 0 then
- -- Empty Iovec pool.
-
- return;
- end if;
-
- if Iovec_Pool.Last <= Iovec_Pool.Prealloc_Array'Last then
- Do_Grow (Iovec_Pool.Prealloc_Array (Iovec_Pool.Last),
- Iovec_Pool.Last_Chunk);
- else
- Do_Grow (Iovec_Pool.Dynamic_Array (Iovec_Pool.Last),
- Iovec_Pool.Last_Chunk);
- end if;
- end Grow_Shrink;
-
- ----------------
- -- Is_Dynamic --
- ----------------
-
- function Is_Dynamic (Iovec_Pool : Iovec_Pool_Type) return Boolean is
- begin
- return Iovec_Pool.Dynamic_Array /= null;
- end Is_Dynamic;
-
- --------------------
- -- Iovecs_Address --
- --------------------
-
- function Iovecs_Address
- (Iovec_Pool : Iovec_Pool_Type) return System.Address
- is
- begin
- if Is_Dynamic (Iovec_Pool) then
- return Iovec_Pool.Dynamic_Array (1)'Address;
- else
- return Iovec_Pool.Prealloc_Array (1)'Address;
- end if;
- end Iovecs_Address;
-
------------
- -- Extend --
+ -- Append --
------------
- procedure Extend
+ procedure Append
(Iovec_Pool : in out Iovec_Pool_Type;
- Require : Natural;
- Allocate : Natural) is
+ An_Iovec : Iovec;
+ A_Chunk : Buffer_Chunk_Pools.Chunk_Access := null)
+ is
+ New_Last : constant Natural := Iovec_Pool.Last + 1;
begin
- pragma Assert (Allocate >= Require);
+ Extend (Iovec_Pool, New_Last, 2 * Iovec_Pool.Length);
- if Require > Iovec_Pool.Length then
- declare
- New_Array : constant Iovec_Array_Access :=
- new Iovec_Array (1 .. Allocate);
+ -- Append new Iovec
- Old_Array_Address : constant System.Address :=
- Iovecs_Address (Iovec_Pool);
- Old_Array : Iovec_Array (1 .. Iovec_Pool.Length);
- for Old_Array'Address use Old_Array_Address;
- pragma Import (Ada, Old_Array);
- begin
- New_Array (1 .. Iovec_Pool.Last) := Old_Array (Old_Array'Range);
+ Iovec_Pool.Last := New_Last;
+ Iovec_Pool.Last_Chunk := A_Chunk;
- if Is_Dynamic (Iovec_Pool) then
- Free (Iovec_Pool.Dynamic_Array);
- end if;
+ declare
+ Pool_Iovecs_Address : constant System.Address :=
+ Iovecs_Address (Iovec_Pool);
+ Pool_Iovecs : Iovec_Array (1 .. Iovec_Pool.Length);
+ for Pool_Iovecs'Address use Pool_Iovecs_Address;
+ pragma Import (Ada, Pool_Iovecs);
+ begin
+ Pool_Iovecs (Iovec_Pool.Last) := An_Iovec;
+ end;
+ end Append;
- Iovec_Pool.Dynamic_Array := New_Array;
- Iovec_Pool.Length := New_Array'Length;
- end;
- end if;
- end Extend;
-
----------
-- Dump --
----------
@@ -900,77 +785,56 @@ package body PolyORB.Buffers is
end loop;
end Dump;
- -------------------------------------------
- -- Visible subprograms (implementations) --
- -------------------------------------------
+ ----------
+ -- Dump --
+ ----------
- ------------------
- -- Prepend_Pool --
- ------------------
-
- procedure Prepend_Pool
- (Prefix : Iovec_Pool_Type;
- Iovec_Pool : in out Iovec_Pool_Type)
+ procedure Dump
+ (Iovec_Pool : Iovec_Pool_Type;
+ Into : Opaque_Pointer)
is
- New_Last : constant Natural := Iovec_Pool.Last + Prefix.Last;
-
+ Vecs_Address : constant System.Address := Iovecs_Address (Iovec_Pool);
+ Vecs : Iovec_Array (1 .. Iovec_Pool.Last);
+ for Vecs'Address use Vecs_Address;
+ pragma Import (Ada, Vecs);
begin
- Extend (Iovec_Pool, New_Last, New_Last + 1);
- -- An Iovec pool that has been prefixed will likely not be appended
- -- to anymore.
+ Dump (Vecs, Into);
+ end Dump;
- declare
- Prefix_Iovecs_Address : constant System.Address :=
- Iovecs_Address (Prefix);
- Prefix_Iovecs : Iovec_Array (1 .. Prefix.Length);
- for Prefix_Iovecs'Address use Prefix_Iovecs_Address;
- pragma Import (Ada, Prefix_Iovecs);
-
- Pool_Iovecs_Address : constant System.Address
- := Iovecs_Address (Iovec_Pool);
- Pool_Iovecs : Iovec_Array (1 .. Iovec_Pool.Length);
- for Pool_Iovecs'Address use Pool_Iovecs_Address;
- pragma Import (Ada, Pool_Iovecs);
-
- begin
- -- Append new Iovec
-
- Pool_Iovecs (1 .. New_Last) :=
- Prefix_Iovecs (Prefix_Iovecs'Range)
- & Pool_Iovecs (1 .. Iovec_Pool.Last);
- Iovec_Pool.Last := New_Last;
- end;
- end Prepend_Pool;
-
------------
- -- Append --
+ -- Extend --
------------
- procedure Append
+ procedure Extend
(Iovec_Pool : in out Iovec_Pool_Type;
- An_Iovec : Iovec;
- A_Chunk : Buffer_Chunk_Pools.Chunk_Access := null)
- is
- New_Last : constant Natural := Iovec_Pool.Last + 1;
+ Require : Natural;
+ Allocate : Natural) is
begin
- Extend (Iovec_Pool, New_Last, 2 * Iovec_Pool.Length);
+ pragma Assert (Allocate >= Require);
- -- Append new Iovec
+ if Require > Iovec_Pool.Length then
+ declare
+ New_Array : constant Iovec_Array_Access :=
+ new Iovec_Array (1 .. Allocate);
- Iovec_Pool.Last := New_Last;
- Iovec_Pool.Last_Chunk := A_Chunk;
+ Old_Array_Address : constant System.Address :=
+ Iovecs_Address (Iovec_Pool);
+ Old_Array : Iovec_Array (1 .. Iovec_Pool.Length);
+ for Old_Array'Address use Old_Array_Address;
+ pragma Import (Ada, Old_Array);
+ begin
+ New_Array (1 .. Iovec_Pool.Last) := Old_Array (Old_Array'Range);
- declare
- Pool_Iovecs_Address : constant System.Address :=
- Iovecs_Address (Iovec_Pool);
- Pool_Iovecs : Iovec_Array (1 .. Iovec_Pool.Length);
- for Pool_Iovecs'Address use Pool_Iovecs_Address;
- pragma Import (Ada, Pool_Iovecs);
- begin
- Pool_Iovecs (Iovec_Pool.Last) := An_Iovec;
- end;
- end Append;
+ if Is_Dynamic (Iovec_Pool) then
+ Free (Iovec_Pool.Dynamic_Array);
+ end if;
+ Iovec_Pool.Dynamic_Array := New_Array;
+ Iovec_Pool.Length := New_Array'Length;
+ end;
+ end if;
+ end Extend;
+
------------------
-- Extract_Data --
------------------
@@ -1028,6 +892,122 @@ package body PolyORB.Buffers is
end if;
end Extract_Data;
+ -----------------
+ -- Grow_Shrink --
+ -----------------
+
+ procedure Grow_Shrink
+ (Iovec_Pool : access Iovec_Pool_Type;
+ Size : Stream_Element_Offset;
+ Data : out Opaque_Pointer)
+ is
+
+ function First_Address_After (An_Iovec : Iovec) return Opaque_Pointer;
+ pragma Inline (First_Address_After);
+ -- Return the address of the storage element immediately following
+ -- the last element of An_Iovec.
+
+ procedure Do_Grow
+ (Last_Iovec : in out Iovec;
+ Last_Chunk : Chunk_Access);
+ pragma Inline (Do_Grow);
+ -- ??? comment needed
+
+ -------------
+ -- Do_Grow --
+ -------------
+
+ procedure Do_Grow
+ (Last_Iovec : in out Iovec;
+ Last_Chunk : Chunk_Access)
+ is
+ begin
+ if Last_Chunk /= null then
+ declare
+ Chunk_Metadata : constant Chunk_Metadata_Access
+ := Metadata (Last_Chunk);
+ begin
+ if False
+ or else (Size > 0
+ and then Chunk_Metadata.Last_Used + Size
+ <= Last_Chunk.Size)
+ or else (Size < 0
+ and then Chunk_Metadata.Last_Used + Size >= 0
+ and then Last_Iovec.Iov_Len
+ + Storage_Offset (Size) >= 0)
+ then
+ Chunk_Metadata.Last_Used
+ := Chunk_Metadata.Last_Used + Size;
+ Data := First_Address_After (Last_Iovec);
+ Last_Iovec.Iov_Len := Last_Iovec.Iov_Len
+ + Storage_Offset (Size);
+ else
+ -- Cannot grow last chunk: leave Data unchanged.
+
+ pragma Debug
+ (C, O ("Cannot satisfy growth request of size"
+ & Stream_Element_Offset'Image (Size)));
+ null;
+ end if;
+ end;
+ end if;
+ end Do_Grow;
+
+ -------------------------
+ -- First_Address_After --
+ -------------------------
+
+ function First_Address_After
+ (An_Iovec : Iovec) return Opaque_Pointer
+ is
+ begin
+ return An_Iovec.Iov_Base + An_Iovec.Iov_Len;
+ end First_Address_After;
+
+ -- Start of processing for Grow_Shrink
+
+ begin
+ Data := System.Null_Address;
+
+ if Iovec_Pool.Last = 0 then
+ -- Empty Iovec pool.
+
+ return;
+ end if;
+
+ if Iovec_Pool.Last <= Iovec_Pool.Prealloc_Array'Last then
+ Do_Grow (Iovec_Pool.Prealloc_Array (Iovec_Pool.Last),
+ Iovec_Pool.Last_Chunk);
+ else
+ Do_Grow (Iovec_Pool.Dynamic_Array (Iovec_Pool.Last),
+ Iovec_Pool.Last_Chunk);
+ end if;
+ end Grow_Shrink;
+
+ --------------------
+ -- Iovecs_Address --
+ --------------------
+
+ function Iovecs_Address
+ (Iovec_Pool : Iovec_Pool_Type) return System.Address
+ is
+ begin
+ if Is_Dynamic (Iovec_Pool) then
+ return Iovec_Pool.Dynamic_Array (1)'Address;
+ else
+ return Iovec_Pool.Prealloc_Array (1)'Address;
+ end if;
+ end Iovecs_Address;
+
+ ----------------
+ -- Is_Dynamic --
+ ----------------
+
+ function Is_Dynamic (Iovec_Pool : Iovec_Pool_Type) return Boolean is
+ begin
+ return Iovec_Pool.Dynamic_Array /= null;
+ end Is_Dynamic;
+
----------
-- Peek --
----------
@@ -1067,6 +1047,44 @@ package body PolyORB.Buffers is
raise Constraint_Error;
end Peek;
+ ------------------
+ -- Prepend_Pool --
+ ------------------
+
+ procedure Prepend_Pool
+ (Prefix : Iovec_Pool_Type;
+ Iovec_Pool : in out Iovec_Pool_Type)
+ is
+ New_Last : constant Natural := Iovec_Pool.Last + Prefix.Last;
+
+ begin
+ Extend (Iovec_Pool, New_Last, New_Last + 1);
+ -- An Iovec pool that has been prefixed will likely not be appended
+ -- to anymore.
+
+ declare
+ Prefix_Iovecs_Address : constant System.Address :=
+ Iovecs_Address (Prefix);
+ Prefix_Iovecs : Iovec_Array (1 .. Prefix.Length);
+ for Prefix_Iovecs'Address use Prefix_Iovecs_Address;
+ pragma Import (Ada, Prefix_Iovecs);
+
+ Pool_Iovecs_Address : constant System.Address
+ := Iovecs_Address (Iovec_Pool);
+ Pool_Iovecs : Iovec_Array (1 .. Iovec_Pool.Length);
+ for Pool_Iovecs'Address use Pool_Iovecs_Address;
+ pragma Import (Ada, Pool_Iovecs);
+
+ begin
+ -- Append new Iovec
+
+ Pool_Iovecs (1 .. New_Last) :=
+ Prefix_Iovecs (Prefix_Iovecs'Range)
+ & Pool_Iovecs (1 .. Iovec_Pool.Last);
+ Iovec_Pool.Last := New_Last;
+ end;
+ end Prepend_Pool;
+
-------------
-- Release --
-------------
@@ -1126,22 +1144,6 @@ package body PolyORB.Buffers is
end loop;
end Send_Iovec_Pool;
- ----------
- -- Dump --
- ----------
-
- procedure Dump
- (Iovec_Pool : Iovec_Pool_Type;
- Into : Opaque_Pointer)
- is
- Vecs_Address : constant System.Address := Iovecs_Address (Iovec_Pool);
- Vecs : Iovec_Array (1 .. Iovec_Pool.Last);
- for Vecs'Address use Vecs_Address;
- pragma Import (Ada, Vecs);
- begin
- Dump (Vecs, Into);
- end Dump;
-
end Iovec_Pools;
end PolyORB.Buffers;
============================================================
--- src/polyorb-buffers.ads 11916cf4cd3bbf85ac3f1cec3e3258b3f55cc4e6
+++ src/polyorb-buffers.ads 6bb4bfbd014031a17a72d6fa142448937293608c
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -35,6 +35,7 @@ with Ada.Streams;
-- Note: Buffers should only be read/written sequentially.
with Ada.Streams;
+with Ada.Unchecked_Conversion;
with System.Storage_Elements;
@@ -49,8 +50,21 @@ package PolyORB.Buffers is
-------------------------
type Endianness_Type is (Little_Endian, Big_Endian);
- subtype Alignment_Type is Ada.Streams.Stream_Element_Offset range 1 .. 8;
+ -- Endianness of a buffer
+ type Alignment_Type is (Align_1, Align_2, Align_4, Align_8);
+ for Alignment_Type use
+ (Align_1 => 1,
+ Align_2 => 2,
+ Align_4 => 4,
+ Align_8 => 8);
+ for Alignment_Type'Size use Short_Short_Integer'Size;
+ -- Alignment of a piece of data within a buffer
+ -- It is assumed that <n> = 2 ** Align_<n>'Pos = representation(Align_<n>)
+
+ function Alignment_Of is
+ new Ada.Unchecked_Conversion (Short_Short_Integer, Alignment_Type);
+
Host_Order : constant Endianness_Type;
-- The byte order of this host.
@@ -174,7 +188,7 @@ package PolyORB.Buffers is
procedure Align_Position
(Buffer : access Buffer_Type;
- Alignment : Alignment_Type);
+ Alignment : Alignment_Type);
-- Aligns Buffer on specified Alignment before retrieving aligned data
-- After execution of either of the two above operations, the current CDR
============================================================
--- src/polyorb-exceptions.adb f8d2de11d4615d84e490265229949ca430326d08
+++ src/polyorb-exceptions.adb 90bb51d2a7ccd0f01ef210908cb23ef82c4373f1
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -155,7 +155,7 @@ package body PolyORB.Exceptions is
begin
O ("Dump_All_Occurrences:");
- if Exc_Occ_List = Empty then
+ if Is_Empty (Exc_Occ_List) then
O ("No stored exceptions.");
return;
end if;
============================================================
--- src/polyorb-if_descriptors.ads 0cef5e8b1268b6c299d0ba1658baf3067ac8e5a2
+++ src/polyorb-if_descriptors.ads 661166cb263715f320bc96025a8eee327938f480
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002 Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -16,12 +16,12 @@
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License for more details. You should have received a copy of the GNU --
-- General Public License distributed with PolyORB; see file COPYING. If --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA. --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
-- --
-- --
--- PolyORB is maintained by ACT Europe. --
--- (email: sales@act-europe.fr) --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
-- --
------------------------------------------------------------------------------
@@ -35,7 +35,7 @@ package PolyORB.If_Descriptors is
package PolyORB.If_Descriptors is
- type If_Descriptor is abstract new Smart_Pointers.Entity
+ type If_Descriptor is abstract new Smart_Pointers.Non_Controlled_Entity
with private;
type If_Descriptor_Access is access all If_Descriptor'Class;
@@ -58,7 +58,7 @@ private
private
- type If_Descriptor is abstract new Smart_Pointers.Entity
+ type If_Descriptor is abstract new Smart_Pointers.Non_Controlled_Entity
with null record;
end PolyORB.If_Descriptors;
============================================================
--- src/polyorb-jobs.adb f0697ad1b8affcbf53bef6b435a6955a84f3952a
+++ src/polyorb-jobs.adb 1dce24e40213573ef364c6467a2c67839b3e324b
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -86,7 +86,7 @@ package body PolyORB.Jobs is
is
use type Job_Queues.List;
begin
- return Q.Contents = Job_Queues.Empty;
+ return Job_Queues.Is_Empty (Q.Contents);
end Is_Empty;
---------------
============================================================
--- src/polyorb-minimal_servant.ads 471788336df2a4fb10b2178852cb392718a154ef
+++ src/polyorb-minimal_servant.ads 70ea2db2756739d89e673e6ec54b6c3bec4ed874
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2002-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -40,13 +40,14 @@ with PolyORB.Smart_Pointers;
with PolyORB.Components;
with PolyORB.Servants;
with PolyORB.Smart_Pointers;
+with PolyORB.Smart_Pointers.Controlled_Entities;
with PolyORB.Requests;
package PolyORB.Minimal_Servant is
pragma Elaborate_Body;
- type Servant is abstract new PolyORB.Smart_Pointers.Entity
+ type Servant is abstract new Smart_Pointers.Controlled_Entities.Entity
with private;
type Servant_Acc is access all Servant;
@@ -72,7 +73,8 @@ private
(Self : not null access Implementation;
Msg : Components.Message'Class) return Components.Message'Class;
- type Servant is abstract new PolyORB.Smart_Pointers.Entity with record
+ type Servant is abstract new Smart_Pointers.Controlled_Entities.Entity
+ with record
Neutral_View : aliased Implementation (Servant'Access);
-- The PolyORB (personality-neutral) view of this servant.
-- This instance of the multiple views idiom allows the
============================================================
--- src/polyorb-opaque-chunk_pools.adb e192a5d0143eaa35a83187111175b88350421734
+++ src/polyorb-opaque-chunk_pools.adb 70261eaec2aee40c52b3c7e7634dba38401d035a
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -62,10 +62,9 @@ package body PolyORB.Opaque.Chunk_Pools
else
New_Chunk := new Chunk (Size => Allocation_Size);
New_Chunk.Metadata := Null_Metadata;
+ Append (Pool.Dynamic_Chunks, New_Chunk);
end if;
- Append (Pool.Chunks, New_Chunk);
-
A_Chunk := New_Chunk;
end Allocate;
@@ -79,38 +78,48 @@ package body PolyORB.Opaque.Chunk_Pools
return A_Chunk.Data (A_Chunk.Data'First)'Address;
end Chunk_Storage;
+ ----------
+ -- Link --
+ ----------
+
+ function Link
+ (C : access Chunk;
+ Which : Utils.Ilists.Link_Type) return access Chunk_Access
+ is
+ use Utils.Ilists;
+ begin
+ pragma Assert (Which = Next);
+ return C.Next'Unchecked_Access;
+ end Link;
+
+ --------------
+ -- Metadata --
+ --------------
+
+ function Metadata
+ (A_Chunk : Chunk_Access) return Metadata_Access is
+ begin
+ return A_Chunk.Metadata'Access;
+ end Metadata;
+
-------------
-- Release --
-------------
procedure Release (Pool : access Pool_Type) is
procedure Free is new Ada.Unchecked_Deallocation (Chunk, Chunk_Access);
- It : Chunk_Lists.Iterator := First (Pool.Chunks);
+ It : Chunk_Lists.Iterator := First (Pool.Dynamic_Chunks);
begin
while not Last (It) loop
declare
use type System.Address;
- This : Chunk_Access renames Value (It).all;
+ This : Chunk_Access := Value (It);
begin
- if This.all'Address /= Pool.Prealloc'Address then
- Free (This);
- end if;
+ Remove (Pool.Dynamic_Chunks, It);
+ Free (This);
end;
- Next (It);
end loop;
-
- Deallocate (Pool.Chunks);
Pool.Prealloc_Used := False;
end Release;
- --------------
- -- Metadata --
- --------------
-
- function Metadata
- (A_Chunk : Chunk_Access) return Metadata_Access is
- begin
- return A_Chunk.Metadata'Access;
- end Metadata;
-
end PolyORB.Opaque.Chunk_Pools;
============================================================
--- src/polyorb-opaque-chunk_pools.ads 19d09d4d795d8e83a12682a9aa30e32d62663d57
+++ src/polyorb-opaque-chunk_pools.ads a4f3ca205b2d723e8fc53876da9e538ef2d81dbb
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -27,15 +27,15 @@
-- Pools of memory chunks, with associated client metadata.
-with PolyORB.Utils.Chained_Lists;
+pragma Ada_2005;
-generic
+with PolyORB.Utils.Ilists;
+generic
type Chunk_Metadata is private;
-- The metadata associated with each storage chunk.
Null_Metadata : Chunk_Metadata;
-
package PolyORB.Opaque.Chunk_Pools is
pragma Preelaborate;
@@ -65,14 +65,11 @@ package PolyORB.Opaque.Chunk_Pools is
(A_Chunk : Chunk_Access) return Opaque.Opaque_Pointer;
-- Return a pointer to a chunk's storage space.
- procedure Release
- (Pool : access Pool_Type);
+ procedure Release (Pool : access Pool_Type);
-- Signals that Pool will not be used anymore.
-- The associated storage is returned to the system.
- function Metadata
- (A_Chunk : Chunk_Access)
- return Metadata_Access;
+ function Metadata (A_Chunk : Chunk_Access) return Metadata_Access;
-- Returns an access to the metadata associated
-- with A_Chunk by the client of the Chunk_Pool
-- package.
@@ -84,26 +81,37 @@ private
-- A chunk pool is managed as a linked list
-- of chunks.
- type Chunk (Size : Ada.Streams.Stream_Element_Count) is
- tagged limited record
- Metadata : aliased Chunk_Metadata;
- -- Metadata associated by a client to this chunk.
+ type Chunk (Size : Ada.Streams.Stream_Element_Count) is limited record
+ Next : aliased Chunk_Access;
+ -- Used to link Chunk on pool's dynamic chunks list
- Data : aliased Ada.Streams.Stream_Element_Array (1 .. Size);
- -- The storage space of the chunk.
- end record;
+ Metadata : aliased Chunk_Metadata;
+ -- Metadata associated by a client to this chunk.
- package Chunk_Lists is new Utils.Chained_Lists (Chunk_Access);
+ Data : aliased Ada.Streams.Stream_Element_Array (1 .. Size);
+ -- The storage space of the chunk.
+ end record;
+ function Link
+ (C : access Chunk;
+ Which : Utils.Ilists.Link_Type) return access Chunk_Access;
+ pragma Inline (Link);
+ -- Accessor for Next
+
+ package Chunk_Lists is new Utils.Ilists.Lists
+ (T => Chunk,
+ T_Acc => Chunk_Access,
+ Doubly_Linked => False);
+
type Pool_Type is limited record
Prealloc : aliased Chunk (Default_Chunk_Size);
- -- A pre-allocated chunk.
+ -- A pre-allocated chunk
Prealloc_Used : Boolean := False;
- -- The pre-allocated chunk has been used.
+ -- The pre-allocated chunk has been used
- Chunks : Chunk_Lists.List;
- -- The list of all dynamically allocated chunks in this pool.
+ Dynamic_Chunks : Chunk_Lists.List;
+ -- The list of all dynamically allocated chunks in this pool
end record;
end PolyORB.Opaque.Chunk_Pools;
============================================================
--- src/polyorb-orb.adb 38549bf735dccbffb71e5c8d6a9a5da27f217dcc
+++ src/polyorb-orb.adb 31cea568c888e0588e64562740702d4a72381d1a
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -139,7 +139,7 @@ package body PolyORB.ORB is
Pro : Binding_Data.Profile_Access;
QoS : PolyORB.QoS.QoS_Parameters) return Smart_Pointers.Ref
is
- use BO_Lists;
+ use PBOL;
It : Iterator;
Result : Smart_Pointers.Ref;
@@ -160,18 +160,13 @@ package body PolyORB.ORB is
while not Last (It) loop
declare
- BO_Acc : Binding_Object_Access renames Value (It).all;
- End_Iterator : BO_Lists.Iterator;
+ BO_Acc : Binding_Object_Access renames Value (It);
begin
if not Valid (BO_Acc) then
- -- Mark binding object as not referenced anymore
+ -- Mark binding object as not referenced anymore and purge
- Register_Reference_Information
- (BO_Acc, Component_Access (ORB), End_Iterator);
-
- -- Now we can safely purge it from the list
-
+ Set_Referenced (BO_Acc, Referenced => False);
Remove (ORB.Binding_Objects, It);
elsif Get_Profile (BO_Acc) /= null then
@@ -646,40 +641,24 @@ package body PolyORB.ORB is
declare
BO_Acc : constant Binding_Object_Access :=
Binding_Object_Access (Smart_Pointers.Entity_Of (BO));
- It : BO_Lists.Iterator;
-
begin
Enter_ORB_Critical_Section (ORB.ORB_Controller);
-- Register BO in the Binding_Objects list of ORB
- BO_Lists.Prepend (ORB.Binding_Objects, BO_Acc);
+ PBOL.Prepend (ORB.Binding_Objects, BO_Acc);
+ Set_Referenced (BO_Acc, Referenced => True);
- -- Save the position
+ Leave_ORB_Critical_Section (ORB.ORB_Controller);
- It := BO_Lists.First (ORB.Binding_Objects);
-
- -- Record in BO a reference to its position on the list so that it
- -- can remove itself properly at finalization.
-
- Register_Reference_Information
- (BO => BO_Acc,
- Referenced_In => Component_Access (ORB),
- Referenced_At => It);
-
- Leave_ORB_Critical_Section (ORB.ORB_Controller);
+ Emit_No_Reply
+ (Component_Access (TE),
+ Filters.Iface.Set_Server'
+ (Server => Component_Access (ORB),
+ Binding_Object => BO_Acc));
end;
- Emit_No_Reply
- (Component_Access (TE),
- Filters.Iface.Set_Server'
- (Server => Component_Access (ORB),
- Binding_Object =>
- Binding_Objects.Binding_Object_Access
- (Smart_Pointers.Entity_Of (BO))));
-
if New_AES /= null then
-
-- This is not a write only Endpoint
declare
@@ -687,7 +666,6 @@ package body PolyORB.ORB is
Handler (New_AES.all);
TE_H : TE_AES_Event_Handler renames TE_AES_Event_Handler (H.all);
begin
-
-- Register link from AES to TE
H.AES := New_AES;
@@ -725,25 +703,20 @@ package body PolyORB.ORB is
-------------------------------
procedure Unregister_Binding_Object
- (ORB : Components.Component_Access;
+ (ORB : access ORB_Type;
BO : Binding_Object_Access)
is
ORB_Acc : constant ORB_Access := ORB_Access (ORB);
- It : BO_Lists.Iterator;
begin
pragma Debug (C, O ("Unregister_Binding_Object: enter"));
Enter_ORB_Critical_Section (ORB_Acc.ORB_Controller);
- -- Obtain position of BO in Binding_Objects within critical section,
- -- as it might be changed by Find_Reusable_Binding_Object.
-
- It := Get_Referenced_At (BO);
-
-- If BO is still referenced, remove it now
- if not BO_Lists.Last (It) then
+ if Referenced (BO) then
pragma Debug (C, O ("removing binding object"));
- BO_Lists.Remove (ORB_Acc.Binding_Objects, It);
+ Set_Referenced (BO, Referenced => False);
+ PBOL.Remove_Element (ORB_Acc.Binding_Objects, BO);
end if;
Leave_ORB_Critical_Section (ORB_Acc.ORB_Controller);
@@ -762,10 +735,8 @@ package body PolyORB.ORB is
begin
Enter_ORB_Critical_Section (ORB.ORB_Controller);
-
pragma Assert (ORB.Obj_Adapter = null);
ORB.Obj_Adapter := OA;
-
Leave_ORB_Critical_Section (ORB.ORB_Controller);
end Set_Object_Adapter;
@@ -809,9 +780,9 @@ package body PolyORB.ORB is
-- Try to register the source to an existing monitor
Disable_Polling (ORB.ORB_Controller, Monitors (J));
-
Register_Source (Monitors (J), AES, Success);
Enable_Polling (ORB.ORB_Controller, Monitors (J));
+
if Success then
Notify_Event (ORB.ORB_Controller,
Event'(Kind => Event_Sources_Added,
@@ -915,7 +886,6 @@ package body PolyORB.ORB is
when E : others =>
pragma Debug (C, O ("Run: Got exception "
& Ada.Exceptions.Exception_Information (E)));
-
Free (AJ);
raise;
end Run;
@@ -980,7 +950,6 @@ package body PolyORB.ORB is
use PolyORB.Errors;
Error : Error_Container;
-
begin
References.Binding.Bind
(Req.Target,
@@ -1283,10 +1252,10 @@ package body PolyORB.ORB is
function Get_Binding_Objects (ORB : access ORB_Type)
return BO_Ref_List
is
- use BO_Lists;
+ use PBOL;
use Smart_Pointers;
- It : BO_Lists.Iterator;
+ It : PBOL.Iterator;
Result : BO_Ref_List;
begin
Enter_ORB_Critical_Section (ORB.ORB_Controller);
@@ -1298,7 +1267,7 @@ package body PolyORB.ORB is
declare
Ref : Smart_Pointers.Ref;
begin
- Smart_Pointers.Set (Ref, Entity_Ptr (Value (It).all));
+ Smart_Pointers.Set (Ref, Entity_Ptr (Value (It)));
BO_Ref_Lists.Prepend (Result, Ref);
end;
============================================================
--- src/polyorb-orb.ads 5a5f09d08b9fae81db8d56a85367fb1859f328db
+++ src/polyorb-orb.ads 90b4dfe13639558e244d2467e77c19faa20376cf
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -34,6 +34,7 @@ with PolyORB.Binding_Objects;
with PolyORB.Asynch_Ev;
with PolyORB.Binding_Data;
with PolyORB.Binding_Objects;
+with PolyORB.Binding_Objects.Lists;
with PolyORB.Components;
with PolyORB.Filters;
with PolyORB.Jobs;
@@ -51,15 +52,16 @@ package PolyORB.ORB is
package PolyORB.ORB is
- package PAE renames PolyORB.Asynch_Ev;
- package PBD renames PolyORB.Binding_Data;
- package PBO renames PolyORB.Binding_Objects;
- package PC renames PolyORB.Components;
- package PF renames PolyORB.Filters;
- package PJ renames PolyORB.Jobs;
- package POC renames PolyORB.ORB_Controller;
- package PT renames PolyORB.Transport;
- package PTI renames PolyORB.Task_Info;
+ package PAE renames PolyORB.Asynch_Ev;
+ package PBD renames PolyORB.Binding_Data;
+ package PBO renames PolyORB.Binding_Objects;
+ package PBOL renames PolyORB.Binding_Objects.Lists;
+ package PC renames PolyORB.Components;
+ package PF renames PolyORB.Filters;
+ package PJ renames PolyORB.Jobs;
+ package POC renames PolyORB.ORB_Controller;
+ package PT renames PolyORB.Transport;
+ package PTI renames PolyORB.Task_Info;
----------------------------------
-- Abstract tasking policy type --
@@ -234,7 +236,7 @@ package PolyORB.ORB is
-- A filter chain is instantiated using Chain, and associated with TE.
procedure Unregister_Binding_Object
- (ORB : Components.Component_Access;
+ (ORB : access ORB_Type;
BO : Binding_Objects.Binding_Object_Access);
-- Unregister a Binding Object from the ORB
@@ -312,7 +314,7 @@ private
Transport_Access_Points : TAP_List;
-- The set of transport access points managed by this ORB
- Binding_Objects : PBO.BO_List;
+ Binding_Objects : PBOL.List;
-- The set of binding objects managed by this ORB
Obj_Adapter : Obj_Adapters.Obj_Adapter_Access;
============================================================
--- src/polyorb-poa_manager-basic_manager.adb 940803f7bb53121ccbcb29fcdf823c3e6002dfed
+++ src/polyorb-poa_manager-basic_manager.adb e56aff07f963a6e027a5af5a60da3ac83c5f1c6e
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -233,7 +233,7 @@ package body PolyORB.POA_Manager.Basic_M
pragma Debug (C, O ("Create a new Basic_POA_Manager"));
Create (M.Lock);
- pragma Assert (M.Held_Requests = Empty);
+ pragma Assert (Is_Empty (M.Held_Requests));
M.Current_State := HOLDING;
end Create;
@@ -373,7 +373,7 @@ package body PolyORB.POA_Manager.Basic_M
Deallocate (Self.Managed_POAs);
- while Self.Held_Requests /= Requests_Queues.Empty loop
+ while not Is_Empty (Self.Held_Requests) loop
Extract_First (Self.Held_Requests, R);
Destroy_Request (R);
end loop;
============================================================
--- src/polyorb-poa_manager-basic_manager.ads 0b176448e4d191aba4e02ada3a87930c88ef20c5
+++ src/polyorb-poa_manager-basic_manager.ads 495d1b41846642501703b3499bdf8923f15c7169
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -129,7 +129,7 @@ private
PM_Hold_Servant : Hold_Servant_Access := null;
-- Reference to the holding servant
- Held_Requests : Requests_Queue := Requests_Queues.Empty;
+ Held_Requests : Requests_Queue;
-- List of requests held by the POAManager
end record;
============================================================
--- src/polyorb-poa_manager.ads ec3001c5983cae39e4a8a27947074ca89edc2487
+++ src/polyorb-poa_manager.ads 0edcbce66c9b8473930fb97977ceb221d5389d69
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2005 Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -16,8 +16,8 @@
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License for more details. You should have received a copy of the GNU --
-- General Public License distributed with PolyORB; see file COPYING. If --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA. --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
-- --
-- --
-- PolyORB is maintained by AdaCore --
@@ -43,7 +43,8 @@ package PolyORB.POA_Manager is
type Ref is new Smart_Pointers.Ref with private;
- type POAManager is abstract new Smart_Pointers.Entity with private;
+ type POAManager is abstract new Smart_Pointers.Non_Controlled_Entity
+ with private;
type POAManager_Access is access all POAManager'Class;
@@ -102,6 +103,7 @@ private
type Ref is new Smart_Pointers.Ref with null record;
- type POAManager is abstract new Smart_Pointers.Entity with null record;
+ type POAManager is abstract new Smart_Pointers.Non_Controlled_Entity
+ with null record;
end PolyORB.POA_Manager;
============================================================
--- src/polyorb-references-ior.adb b6f075b931047ade3517564aa0cc5e3a11dd5931
+++ src/polyorb-references-ior.adb afcb63f6a912e58bd8b3cc6df55a66cb9e7d41ce
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -210,7 +210,7 @@ package body PolyORB.References.IOR is
PolyORB.Types.RepositoryId'
(To_PolyORB_String (Type_Id_Of (Value))));
- Pad_Align (Buffer, 4);
+ Pad_Align (Buffer, Align_4);
declare
Profs : constant Profile_Array := Profiles_Of (Value);
============================================================
--- src/polyorb-references-uri.adb 7dad7b907947ed7bc935ca68bb9f95df1f8d9a47
+++ src/polyorb-references-uri.adb fe956470c0137830c5614681388d2f088cdafec9
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -45,7 +45,7 @@ package body PolyORB.References.URI is
type Profile_Record is record
Tag : PolyORB.Binding_Data.Profile_Tag;
- Proto_Ident : Types.String;
+ Proto_Ident : String_Ptr;
Profile_To_String_Body : Profile_To_String_Body_Type;
String_To_Profile_Body : String_To_Profile_Body_Type;
end record;
@@ -165,6 +165,7 @@ package body PolyORB.References.URI is
(Obj_Addr : String) return Binding_Data.Profile_Access
is
use PolyORB.Types;
+ use PolyORB.Utils;
Iter : Iterator := First (Callbacks);
begin
@@ -172,17 +173,12 @@ package body PolyORB.References.URI is
& Obj_Addr));
while not Last (Iter) loop
- declare
- Ident : String renames To_String (Value (Iter).Proto_Ident);
- begin
- if Obj_Addr'Length > Ident'Length
- and then Obj_Addr (Ident'Range) = Ident then
- pragma Debug
- (C, O ("Try to unmarshall profile with profile factory tag "
- & Profile_Tag'Image (Value (Iter).Tag)));
- return Value (Iter).String_To_Profile_Body (Obj_Addr);
- end if;
- end;
+ if Has_Prefix (Obj_Addr, Prefix => Value (Iter).Proto_Ident.all) then
+ pragma Debug
+ (C, O ("Try to unmarshall profile with profile factory tag "
+ & Profile_Tag'Image (Value (Iter).Tag)));
+ return Value (Iter).String_To_Profile_Body (Obj_Addr);
+ end if;
Next (Iter);
end loop;
@@ -282,9 +278,11 @@ package body PolyORB.References.URI is
Profile_To_String_Body : Profile_To_String_Body_Type;
String_To_Profile_Body : String_To_Profile_Body_Type) is
begin
+ pragma Debug (C, O ("Register URI cb: prefix=" & Proto_Ident
+ & " tag=" & Tag'Img));
Append (Callbacks,
Profile_Record'(Tag,
- Types.To_PolyORB_String (Proto_Ident),
+ new String'(Proto_Ident),
Profile_To_String_Body,
String_To_Profile_Body));
end Register;
@@ -311,8 +309,7 @@ package body PolyORB.References.URI is
begin
while not Last (Iter) loop
Register_String_To_Object
- (PolyORB.Types.To_String (Value (Iter).Proto_Ident),
- String_To_Object'Access);
+ (Value (Iter).Proto_Ident.all, String_To_Object'Access);
Next (Iter);
end loop;
end Initialize;
============================================================
--- src/polyorb-references.ads 8a58554d26800bf6018f8b1344eda091ce400cb7
+++ src/polyorb-references.ads a94899add6bdf8fd2d9b5baece4c4d9363ca1520
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -141,6 +141,7 @@ private
procedure Share_Binding_Info
(Dest : Ref'Class;
Source : Ref'Class);
+ -- Needs comment???
Nil_Ref : constant Ref := (PolyORB.Smart_Pointers.Ref with null record);
============================================================
--- src/polyorb-representations-cdr-common.adb 48e55eecf86e8a6a03230e58bbcbeed493a550a0
+++ src/polyorb-representations-cdr-common.adb b45c3ab99826439f45747d57c55aae41b4e131e9
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -182,12 +182,18 @@ package body PolyORB.Representations.CDR
begin
pragma Debug (C, O ("Marshall (Octet) : enter"));
Align_Marshall_Copy (Buffer, (1 => Stream_Element
- (PolyORB.Types.Octet'(Data))), 1);
+ (PolyORB.Types.Octet'(Data))), Align_1);
pragma Debug (C, O ("Marshall (Octet) : end"));
end Marshall;
-- Transfer of elementary integer types
+ function Swapped (X : Types.Octet) return Types.Octet;
+ pragma Inline (Swapped);
+ -- Identity function!
+ package CDR_Octet is
+ new Align_Transfer_Elementary (T => PolyORB.Types.Octet);
+
function Swapped is
new GNAT.Byte_Swapping.Swapped2 (PolyORB.Types.Unsigned_Short);
package CDR_Unsigned_Short is
@@ -565,8 +571,7 @@ package body PolyORB.Representations.CDR
------------------------------------
function Unmarshall
- (Buffer : access Buffer_Type)
- return PolyORB.Types.Boolean
+ (Buffer : access Buffer_Type) return PolyORB.Types.Boolean
is
begin
pragma Debug (C, O ("Unmarshall (Boolean) : enter & end"));
@@ -575,8 +580,7 @@ package body PolyORB.Representations.CDR
end Unmarshall;
function Unmarshall_Latin_1_Char
- (Buffer : access Buffer_Type)
- return PolyORB.Types.Char
+ (Buffer : access Buffer_Type) return PolyORB.Types.Char
is
begin
pragma Debug (C, O ("Unmarshall (Char) : enter & end"));
@@ -586,13 +590,7 @@ package body PolyORB.Representations.CDR
function Unmarshall
(Buffer : access Buffer_Type) return PolyORB.Types.Octet
- is
- Result : Stream_Element_Array (1 .. 1);
- begin
- Align_Unmarshall_Copy (Buffer, 1, Result);
- pragma Debug (C, O ("Unmarshall (Octet) : enter & end"));
- return PolyORB.Types.Octet (Result (1));
- end Unmarshall;
+ renames CDR_Octet.Unmarshall;
function Unmarshall
(Buffer : access Buffer_Type) return PolyORB.Types.Unsigned_Short
@@ -815,7 +813,7 @@ package body PolyORB.Representations.CDR
Data : F)
is
begin
- Align_Marshall_Copy (Buffer, Fixed_To_Octets (Data), 1);
+ Align_Marshall_Copy (Buffer, Fixed_To_Octets (Data), Align_1);
end Marshall;
----------------
@@ -883,4 +881,9 @@ package body PolyORB.Representations.CDR
end Fixed_Point;
+ function Swapped (X : Types.Octet) return Types.Octet is
+ begin
+ return X;
+ end Swapped;
+
end PolyORB.Representations.CDR.Common;
============================================================
--- src/polyorb-representations-cdr.adb 7633553de55e337f04a5dcc0b32aa7ed80d4a61f
+++ src/polyorb-representations-cdr.adb 7c492bb499c601870f0e050aa1551acc15df28ab
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -331,7 +331,8 @@ package body PolyORB.Representations.CDR
end if;
Aggregate_Data := Unchecked_Get_V (ACC);
- Aggregate_Alignment := Alignment_Type (El_Size);
+ Aggregate_Alignment :=
+ Alignment_Of (Short_Short_Integer (El_Size));
Aggregate_Size := Stream_Element_Count (El_Count * El_Size);
pragma Debug (C, O ("Fast_Path_Get_Info:"
============================================================
--- src/polyorb-representations-test.adb 28e5b72ba24ed33e43f94feff17c6833c26763e4
+++ src/polyorb-representations-test.adb d4a331920c3897ca7e830454d2e0ef7cac07f1be
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -65,7 +65,7 @@ package body PolyORB.Representations.Tes
is
A : Stream_Element_Array (1 .. 1);
begin
- Align_Unmarshall_Copy (B, 1, A);
+ Align_Unmarshall_Copy (B, Align_1, A);
return Character'Val (A (1));
end Unmarshall_Char;
============================================================
--- src/polyorb-servants-group_servants.adb 5264d5f908feab5a73078a495447b562d0ee2991
+++ src/polyorb-servants-group_servants.adb d55fa9ec95d15c9f932a1a4155cf6c82ec690130
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -411,7 +411,7 @@ package body PolyORB.Servants.Group_Serv
procedure Unregister
(Self : access Group_Servant;
- Ref : PolyORB.References.Ref)
+ Ref : References.Ref)
is
use PolyORB.References;
@@ -422,7 +422,7 @@ package body PolyORB.Servants.Group_Serv
Enter (Self.Group_Lock);
- TPL.Remove (Self.Target_List, Ref);
+ TPL.Remove_Occurrences (Self.Target_List, Ref);
pragma Debug (C, O ("Group size:" & TPL.Length (Self.Target_List)'Img));
Leave (Self.Group_Lock);
============================================================
--- src/polyorb-smart_pointers-initialization.adb d558c5f480a1242d4e18b47efe56d30afa37d08f
+++ src/polyorb-smart_pointers-initialization.adb 4d77d7353e67ed63fcde10ef4daa36ce35c98721
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -31,7 +31,6 @@ with PolyORB.Initialization;
with PolyORB.Initialization;
-with PolyORB.Tasking.Mutexes;
with PolyORB.Utils.Strings;
package body PolyORB.Smart_Pointers.Initialization is
@@ -40,24 +39,24 @@ package body PolyORB.Smart_Pointers.Init
-- Debugging hooks implementation --
------------------------------------
- function Entity_External_Tag
- (X : Unsafe_Entity'Class)
- return String;
- function Ref_External_Tag
- (X : Ref'Class)
- return String;
+ function Entity_External_Tag (X : Unsafe_Entity'Class) return String;
+ function Ref_External_Tag (X : Ref'Class) return String;
-- Return the external representation of X'Tag.
- function Entity_External_Tag
- (X : Unsafe_Entity'Class)
- return String is
+ -------------------------
+ -- Entity_External_Tag --
+ -------------------------
+
+ function Entity_External_Tag (X : Unsafe_Entity'Class) return String is
begin
return Ada.Tags.External_Tag (X'Tag);
end Entity_External_Tag;
- function Ref_External_Tag
- (X : Ref'Class)
- return String is
+ ----------------------
+ -- Ref_External_Tag --
+ ----------------------
+
+ function Ref_External_Tag (X : Ref'Class) return String is
begin
return Ada.Tags.External_Tag (X'Tag);
end Ref_External_Tag;
@@ -67,13 +66,14 @@ package body PolyORB.Smart_Pointers.Init
----------------
procedure Initialize;
+ -- Initialize Smart_Pointers module
procedure Initialize is
begin
- Tasking.Mutexes.Create (Counter_Lock);
- Smart_Pointers.Entity_External_Tag := Entity_External_Tag'Access;
- Smart_Pointers.Ref_External_Tag := Ref_External_Tag'Access;
- Smart_Pointers.Default_Trace := Get_Trace ("default");
+ Smart_Pointers.Initialize
+ (The_Entity_External_Tag => Entity_External_Tag'Access,
+ The_Ref_External_Tag => Ref_External_Tag'Access,
+ The_Default_Trace => Get_Trace ("default"));
end Initialize;
use PolyORB.Initialization;
============================================================
--- src/polyorb-smart_pointers.adb 3708a49832a6b36abcebe143d72dc127b80bfc15
+++ src/polyorb-smart_pointers.adb 5771db48ee89af79eda56325f590f17302e7ba72
@@ -29,6 +29,7 @@ with PolyORB.Parameters;
with PolyORB.Log;
with PolyORB.Parameters;
+with PolyORB.Tasking.Mutexes;
package body PolyORB.Smart_Pointers is
@@ -41,6 +42,9 @@ package body PolyORB.Smart_Pointers is
function C (Level : Log_Level := Debug) return Boolean
renames L.Enabled;
+ Counter_Lock : Mutex_Access;
+ -- Global lock used to protect concurrent accesses to reference counters
+
procedure Unchecked_Inc_Usage (Obj : Entity_Ptr);
-- Internal procedure to increment Obj's usage counter. This must be
-- called with the proper lock held.
@@ -53,6 +57,13 @@ package body PolyORB.Smart_Pointers is
Obj : Entity_Ptr);
-- Produce debugging trace for the indicated event on Obj, if applicable
+ Entity_External_Tag : Entity_External_Tag_Hook := null;
+ Ref_External_Tag : Ref_External_Tag_Hook := null;
+ -- Debugging hooks, set at initialization
+
+ Default_Trace : Boolean := True;
+ -- needs comment???
+
------------
-- Adjust --
------------
@@ -90,7 +101,7 @@ package body PolyORB.Smart_Pointers is
pragma Assert (Counter_Lock /= null);
Entity_Lock (Obj.all);
- pragma Debug (Trace_Event (Dec_Usage, Obj));
+ pragma Debug (C, Trace_Event (Dec_Usage, Obj));
Obj.Counter := Obj.Counter - 1;
if Obj.Counter = 0 then
@@ -102,7 +113,7 @@ package body PolyORB.Smart_Pointers is
-- Releasing Obj lock at this stage is sufficient to ensure
-- that only one task finalizes Obj.all and frees Obj.
- if Obj.all not in Entity'Class then
+ if not Is_Controlled (Obj.all) then
-- This entity is not controlled: finalize it ourselves
Finalize (Obj.all);
@@ -193,15 +204,6 @@ package body PolyORB.Smart_Pointers is
-- Finalize --
--------------
- procedure Finalize (X : in out Entity_Controller) is
- begin
- Finalize (X.E.all);
- end Finalize;
-
- --------------
- -- Finalize --
- --------------
-
procedure Finalize (The_Ref : in out Ref) is
function Return_Ref_External_Tag return String;
@@ -279,27 +281,26 @@ package body PolyORB.Smart_Pointers is
----------------
procedure Initialize
- (X : in out Entity_Controller) is
+ (The_Entity_External_Tag : Entity_External_Tag_Hook;
+ The_Ref_External_Tag : Ref_External_Tag_Hook;
+ The_Default_Trace : Boolean)
+ is
begin
- pragma Debug (C, O ("Initializing Entity"));
- Initialize (X.E.all);
+ Create (Counter_Lock);
+ Entity_External_Tag := The_Entity_External_Tag;
+ Ref_External_Tag := The_Ref_External_Tag;
+ Default_Trace := The_Default_Trace;
end Initialize;
- ----------------
- -- Initialize --
- ----------------
+ -------------------
+ -- Is_Controlled --
+ -------------------
- procedure Initialize
- (X : in out Entity)
- is
- pragma Warnings (Off);
+ function Is_Controlled (X : Unsafe_Entity) return Boolean is
pragma Unreferenced (X);
- pragma Warnings (On);
-
begin
- pragma Assert (Counter_Lock /= null);
- null;
- end Initialize;
+ return False;
+ end Is_Controlled;
------------
-- Is_Nil --
@@ -388,7 +389,7 @@ package body PolyORB.Smart_Pointers is
procedure Unchecked_Inc_Usage (Obj : Entity_Ptr) is
begin
pragma Assert (Obj.Counter /= -1);
- pragma Debug (Trace_Event (Inc_Usage, Obj));
+ pragma Debug (C, Trace_Event (Inc_Usage, Obj));
Obj.Counter := Obj.Counter + 1;
end Unchecked_Inc_Usage;
============================================================
--- src/polyorb-smart_pointers.ads d8438c6adc9f3ea8a6420257ccf0b9785f35dd27
+++ src/polyorb-smart_pointers.ads ea54c240d3278d0be12d2936d3582b0fb3a3a200
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -27,8 +27,6 @@ with Ada.Finalization;
with Ada.Finalization;
-with PolyORB.Tasking.Mutexes;
-
package PolyORB.Smart_Pointers is
pragma Preelaborate;
@@ -37,18 +35,11 @@ package PolyORB.Smart_Pointers is
-- Task-unsafe entity --
------------------------
- type Unsafe_Entity is abstract tagged limited record
- Counter : Integer := 0;
- -- Reference counter.
- -- If set to -1, no reference counting is performed for this entity:
- -- Inc_Usage and Dec_Usage are both no-ops in that case.
+ type Unsafe_Entity is abstract tagged limited private;
- -- ???
- -- It is strictly forbidden to access this component from outside
- -- this unit, however we can't make it private due to G412-018.
+ function Is_Controlled (X : Unsafe_Entity) return Boolean;
+ -- False expect for derived type from Smart_Pointers.Controlled_Entities
- end record;
-
procedure Finalize (X : in out Unsafe_Entity);
-- Unsafe_Entity is the base type of all objects that can be referenced.
-- It contains a Counter, which is the number of references to this
@@ -82,7 +73,7 @@ package PolyORB.Smart_Pointers is
-- Task-safe entity --
----------------------
- type Non_Controlled_Entity is abstract new Unsafe_Entity with null record;
+ type Non_Controlled_Entity is abstract new Unsafe_Entity with private;
-- Same as Unsafe_Entity, but accesses to the reference counter are
-- made task safe through calls to the Entity_Lock and Entity_Unlock
-- operations.
@@ -91,17 +82,6 @@ package PolyORB.Smart_Pointers is
procedure Entity_Unlock (X : in out Non_Controlled_Entity);
-- Mutex operations
- ---------------------------------
- -- Controlled task-safe entity --
- ---------------------------------
-
- type Entity is abstract new Non_Controlled_Entity with private;
-
- procedure Initialize (X : in out Entity);
- -- An entity that is a controlled object. Contrary to
- -- Non_Controlled_Entity, the Finalize operation is called whenever the
- -- entity is finalized.
-
---------
-- Ref --
---------
@@ -157,28 +137,15 @@ private
private
- ----------------------
- -- Task-safe entity --
- ----------------------
+ type Unsafe_Entity is abstract tagged limited record
+ Counter : Integer := 0;
+ -- Reference counter.
+ -- If set to -1, no reference counting is performed for this entity:
+ -- Inc_Usage and Dec_Usage are both no-ops in that case.
+ end record;
- Counter_Lock : Tasking.Mutexes.Mutex_Access;
- -- Global mutex used to guarantee consistency of concurrent accesses to
- -- entity reference counters. To be created by a child unit during
- -- PolyORB initialization.
+ type Non_Controlled_Entity is abstract new Unsafe_Entity with null record;
- type Entity_Controller (E : access Entity'Class)
- is new Ada.Finalization.Limited_Controlled with null record;
-
- procedure Initialize (X : in out Entity_Controller);
- procedure Finalize (X : in out Entity_Controller);
-
- type Entity is abstract new Non_Controlled_Entity with record
- Controller : Entity_Controller (Entity'Access);
- -- Controller component used to trigger a call to the Entity's
- -- Finalize primitive operation when it is Finalized (note that
- -- Entity itself is not a controlled type).
- end record;
-
type Ref is new Ada.Finalization.Controlled with record
A_Ref : Entity_Ptr := null;
-- The entity designated by this reference
@@ -202,9 +169,12 @@ private
function (X : Ref'Class) return String;
-- A function returning External_Tag (Entity_Of (X)'Tag)
- Entity_External_Tag : Entity_External_Tag_Hook := null;
- Ref_External_Tag : Ref_External_Tag_Hook := null;
- -- Hooks to be set up by a child unit during PolyORB initialization
+ procedure Initialize
+ (The_Entity_External_Tag : Entity_External_Tag_Hook;
+ The_Ref_External_Tag : Ref_External_Tag_Hook;
+ The_Default_Trace : Boolean);
+ -- Initialize internal structures and set debugging hooks (to be called by
+ -- child elaboration package)
-- Determination of whether to trace smart pointers event for a specific
-- entity type: in [smart_pointers] section, whether type T is traced
@@ -214,8 +184,6 @@ private
Trace_Section : constant String := "smart_pointers";
Trace_Suffix : constant String := ".trace";
- Default_Trace : Boolean := True;
-
function Get_Trace (Entity_Type : String) return Boolean;
-- Return indication of whether to trace events for the given entity type
============================================================
--- src/polyorb-task_info.adb 40d2a3dafe9bf04f8e9983b4d15dcda48a96f615
+++ src/polyorb-task_info.adb e6beed64fd8ee5c7a2e438ed52d4508e9f1d779f
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -91,13 +91,13 @@ package body PolyORB.Task_Info is
-----------------
procedure List_Attach
- (TI : Task_Info_Access;
- List : in out Task_Lists.List)
+ (TI : access Task_Info;
+ List : in out Task_List)
is
- pragma Assert (Task_Lists.Last (TI.Position));
+ pragma Assert (not TI.On_List);
begin
- Task_Lists.Prepend (List, TI);
- TI.Position := Task_Lists.First (List);
+ Prepend (List, TI);
+ TI.On_List := True;
end List_Attach;
-----------------
@@ -105,16 +105,25 @@ package body PolyORB.Task_Info is
-----------------
procedure List_Detach
- (TI : in out Task_Info;
- List : in out Task_Lists.List)
+ (TI : access Task_Info;
+ List : in out Task_List)
is
begin
- if not Task_Lists.Last (TI.Position) then
- Task_Lists.Remove (List, TI.Position);
- TI.Position := Task_Lists.Last (List);
+ if TI.On_List then
+ Remove_Element (List, TI);
+ TI.On_List := False;
end if;
end List_Detach;
+ ----------------
+ -- List_First --
+ ----------------
+
+ function List_First (List : Task_List) return access Task_Info is
+ begin
+ return Task_Lists.Value (First (List));
+ end List_First;
+
--------------
-- May_Exit --
--------------
@@ -227,6 +236,18 @@ package body PolyORB.Task_Info is
return TI.Exit_Condition /= null and then TI.Exit_Condition.all;
end Exit_Condition;
+ ----------
+ -- Link --
+ ----------
+
+ function Link
+ (S : access Task_Info;
+ Which : Utils.Ilists.Link_Type) return access Task_Info_Access
+ is
+ begin
+ return S.Links (Which)'Unchecked_Access;
+ end Link;
+
-----------
-- Mutex --
-----------
@@ -334,6 +355,15 @@ package body PolyORB.Task_Info is
return TI.Id;
end Id;
+ --------------
+ -- Is_Empty --
+ --------------
+
+ function Is_Empty (List : Task_List) return Boolean is
+ begin
+ return Task_Lists.Is_Empty (Task_Lists.List (List));
+ end Is_Empty;
+
---------
-- Job --
---------
============================================================
--- src/polyorb-task_info.ads dee96975701f64f4d10311d2aa03202083463067
+++ src/polyorb-task_info.ads 495f627cd43ac04822c4a2bf8164a6e53551aed7
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -28,13 +28,15 @@
-- This package provides a facility for associating information with each
-- task executing the ORB main loop.
+pragma Ada_2005;
+
with PolyORB.Asynch_Ev;
with PolyORB.Jobs;
with PolyORB.Tasking.Condition_Variables;
with PolyORB.Tasking.Mutexes;
with PolyORB.Tasking.Threads;
with PolyORB.Types;
-with PolyORB.Utils.Chained_Lists;
+with PolyORB.Utils.Ilists;
package PolyORB.Task_Info is
@@ -65,15 +67,12 @@ package PolyORB.Task_Info is
-- A Terminated task has been notified its exit condition is true.
type Task_Info (Kind : Task_Kind) is limited private;
+ type Task_Info_Access is access all Task_Info;
-- Task Info holds information on tasks that run ORB.Run
function Kind_Match (TI : Task_Info; Kind : Any_Task_Kind) return Boolean;
-- True if Kind matches TI's Kind (Any matches any kind)
- type Task_Info_Access is access all Task_Info;
- package Task_Lists is new PolyORB.Utils.Chained_Lists
- (Task_Info_Access, Doubly_Chained => True);
-
type Task_Summary is limited private;
-- Summary information: counter of registered tasks and of how many tasks
-- of each kind are in each state.
@@ -177,22 +176,34 @@ package PolyORB.Task_Info is
function Job (TI : Task_Info) return Jobs.Job_Access;
-- Return job associated to TI
+ type Task_List is private;
+ -- A list of tasks
+
+ function Is_Empty (List : Task_List) return Boolean;
+ -- True when List has no elements
+
+ function List_First (List : Task_List) return access Task_Info;
+ -- Return the first element of List
+
procedure List_Attach
- (TI : Task_Info_Access;
- List : in out Task_Lists.List);
+ (TI : access Task_Info;
+ List : in out Task_List);
-- Attach TI to the List. It must not already be on a list. Order of
-- attachment and detachment is arbitrary.
procedure List_Detach
- (TI : in out Task_Info;
- List : in out Task_Lists.List);
- -- Remove TI from the list it was attached to (if any).
+ (TI : access Task_Info;
+ List : in out Task_List);
+ -- Remove TI from the list it was attached to (if any)
function Image (TI : Task_Info) return String;
-- For debug purposes
private
+ type Links_Type is
+ array (Utils.Ilists.Link_Type) of aliased Task_Info_Access;
+
type Task_Info (Kind : Task_Kind) is limited record
Id : PolyORB.Tasking.Threads.Thread_Id;
-- Task referred by Task_Info record
@@ -231,11 +242,27 @@ private
-- Mutex used by the Task referred by TI when blocking;
-- meaningful only when State is Idle.
- Position : Task_Lists.Iterator;
- -- Iterator designating the position of this task on a list (allowing
- -- removal of the task from the list).
+ Links : Links_Type;
+ -- Pointers allowing the task to be attached to a (single) task list
+
+ On_List : Boolean := False;
+ -- True when task is attached to a task list
end record;
+ function Link
+ (S : access Task_Info;
+ Which : Utils.Ilists.Link_Type) return access Task_Info_Access;
+ pragma Inline (Link);
+ -- Accessor for Links
+
+ package Task_Lists is
+ new Utils.Ilists.Lists
+ (T => Task_Info,
+ T_Acc => Task_Info_Access,
+ Doubly_Linked => True);
+
+ type Task_List is new Task_Lists.List;
+
type Task_Counters is array (Any_Task_Kind, Any_Task_State) of Natural;
type Task_Summary is limited record
============================================================
--- src/polyorb-tasking-idle_tasks_managers.adb 8bec7f54f4ba680c1029647f7a5bff52eb16a18a
+++ src/polyorb-tasking-idle_tasks_managers.adb 5fe13723243c0c248132b75c15a8d62aaf09339e
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2004-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -45,8 +45,7 @@ package body PolyORB.Tasking.Idle_Tasks_
-- Awake one idle task of the specified Kind; there must be at least one
function Allocate_CV
- (ITM : access Idle_Tasks_Manager)
- return PTCV.Condition_Access;
+ (ITM : access Idle_Tasks_Manager) return PTCV.Condition_Access;
pragma Inline (Allocate_CV);
-- Return one condition variable
@@ -55,16 +54,13 @@ package body PolyORB.Tasking.Idle_Tasks_
-----------------
function Allocate_CV
- (ITM : access Idle_Tasks_Manager)
- return Condition_Access
+ (ITM : access Idle_Tasks_Manager) return Condition_Access
is
use type CV_Lists.List;
-
Result : Condition_Access;
begin
- if ITM.Free_CV /= CV_Lists.Empty then
-
+ if not CV_Lists.Is_Empty (ITM.Free_CV) then
-- Use an existing CV, from Free_CV list
CV_Lists.Extract_First (ITM.Free_CV, Result);
@@ -86,14 +82,14 @@ package body PolyORB.Tasking.Idle_Tasks_
(ITM : access Idle_Tasks_Manager; Kind : Task_Kind)
is
pragma Debug (C, O ("Awake one idle task"));
- pragma Assert (not Task_Lists.Is_Empty (ITM.Idle_Task_Lists (Kind)));
+ pragma Assert (not Is_Empty (ITM.Idle_Task_Lists (Kind)));
- Task_To_Awake : constant Task_Info_Access :=
- Task_Lists.Value (Task_Lists.First (ITM.Idle_Task_Lists (Kind))).all;
+ Task_To_Awake : constant access PTI.Task_Info :=
+ List_First (ITM.Idle_Task_Lists (Kind));
begin
-- Signal one idle task, and put its CV in Free_CV list
- List_Detach (Task_To_Awake.all, ITM.Idle_Task_Lists (Kind));
+ List_Detach (Task_To_Awake, ITM.Idle_Task_Lists (Kind));
Signal (Condition (Task_To_Awake.all));
CV_Lists.Append (ITM.Free_CV, Condition (Task_To_Awake.all));
end Awake_One_Idle_Task;
@@ -111,12 +107,12 @@ package body PolyORB.Tasking.Idle_Tasks_
-- False. It's simplest to pick the first Permanent one, unless there is
-- none, in which case we try Transient.
- if not Task_Lists.Is_Empty (ITM.Idle_Task_Lists (Permanent)) then
+ if not Is_Empty (ITM.Idle_Task_Lists (Permanent)) then
Awake_One_Idle_Task (ITM, Permanent);
return True;
elsif Allow_Transient
- and then not Task_Lists.Is_Empty (ITM.Idle_Task_Lists (Transient))
+ and then not Is_Empty (ITM.Idle_Task_Lists (Transient))
then
Awake_One_Idle_Task (ITM, Transient);
return True;
@@ -136,7 +132,7 @@ package body PolyORB.Tasking.Idle_Tasks_
-- Awaken tasks, looping until both Kind lists are empty
for Kind in Task_Kind loop
- while not Task_Lists.Is_Empty (ITM.Idle_Task_Lists (Kind)) loop
+ while not Is_Empty (ITM.Idle_Task_Lists (Kind)) loop
Awake_One_Idle_Task (ITM, Kind);
end loop;
end loop;
@@ -151,7 +147,7 @@ package body PolyORB.Tasking.Idle_Tasks_
TI : PTI.Task_Info_Access)
is
begin
- List_Detach (TI.all, ITM.Idle_Task_Lists (TI.Kind));
+ List_Detach (TI, ITM.Idle_Task_Lists (TI.Kind));
end Remove_Idle_Task;
----------------------
============================================================
--- src/polyorb-tasking-idle_tasks_managers.ads 8b897e243e52b9626988dbc58c1b4d16a7b4da8f
+++ src/polyorb-tasking-idle_tasks_managers.ads db0cc938ccab4dda1c7526d113498ebd35179bb3
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2004-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2004-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -66,12 +66,10 @@ private
pragma Inline (Remove_Idle_Task);
pragma Inline (Insert_Idle_Task);
- package Task_Lists renames PTI.Task_Lists;
-
package CV_Lists is
new PolyORB.Utils.Chained_Lists (PTCV.Condition_Access, PTCV."=");
- type Task_List_Array is array (PTI.Task_Kind) of Task_Lists.List;
+ type Task_List_Array is array (PTI.Task_Kind) of PTI.Task_List;
type Idle_Tasks_Manager is limited record
Idle_Task_Lists : Task_List_Array;
============================================================
--- src/polyorb-transport-connected.adb 3625a040566158bcb053b7d0844ab228a4d8e9ef
+++ src/polyorb-transport-connected.adb cf4467f233df06d8f65c885b5f5647fa41a49267
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -70,7 +70,8 @@ package body PolyORB.Transport.Connected
-- Build a binding object based on the newly-created endpoint
Binding_Objects.Setup_Binding_Object
- (TE => New_TE,
+ (ORB => Components.Component_Access (H.ORB),
+ TE => New_TE,
FFC => H.Filter_Factory_Chain.all,
BO_Ref => New_TE.Dependent_Binding_Object,
Pro => null);
============================================================
--- src/polyorb-transport-datagram.adb 92e3e05f69961d0e557fd1dddaa2750f50e4ad2f
+++ src/polyorb-transport-datagram.adb 80f7c7a5307dfcf448ab9c92d3a21ad774739e09
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2003-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2003-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -81,7 +81,8 @@ package body PolyORB.Transport.Datagram
pragma Debug (C, O ("Create and register endpoint"));
Binding_Objects.Setup_Binding_Object
- (TE => New_TE,
+ (ORB => Components.Component_Access (H.ORB),
+ TE => New_TE,
FFC => H.Filter_Factory_Chain.all,
BO_Ref => New_TE.Dependent_Binding_Object,
Pro => null);
============================================================
--- src/polyorb-utils-buffers.adb 8e4f6bde700d063df06afa6a6787084cee31e3bc
+++ src/polyorb-utils-buffers.adb 826754f2c8dbc423f07d699a11ac19f2ddb967c6
@@ -38,6 +38,7 @@ package body PolyORB.Utils.Buffers is
package body Align_Transfer_Elementary is
subtype SEA is Stream_Element_Array (1 .. T'Size / 8);
+ Alignment_Of_T : constant Alignment_Type := Alignment_Of (T'Size / 8);
--------------
-- Marshall --
@@ -51,14 +52,11 @@ package body PolyORB.Utils.Buffers is
Data_Address : Opaque_Pointer;
Item_Swapped : aliased T;
begin
- if With_Alignment then
- Pad_Align (Buffer, T'Size / 8);
+ if Alignment_Of_T /= Align_1 and then With_Alignment then
+ Pad_Align (Buffer, Alignment_Of_T);
end if;
- Allocate_And_Insert_Cooked_Data
- (Buffer,
- T'Size / 8,
- Data_Address);
+ Allocate_And_Insert_Cooked_Data (Buffer, T'Size / 8, Data_Address);
-- Note: we can't just have a T object at Data_Address and assign
-- it with Item / Swapped (Item) because Data_Address may not be
@@ -71,7 +69,7 @@ package body PolyORB.Utils.Buffers is
for Z'Address use Z_Addr;
pragma Import (Ada, Z);
begin
- if Endianness (Buffer) /= Host_Order then
+ if Item'Size > 8 and then Endianness (Buffer) /= Host_Order then
Item_Swapped := Swapped (Item);
Item_Address := Item_Swapped'Address;
end if;
@@ -93,8 +91,8 @@ package body PolyORB.Utils.Buffers is
function Unmarshall (Buffer : access Buffer_Type) return T is
Data_Address : Opaque_Pointer;
begin
- if With_Alignment then
- Align_Position (Buffer, T'Size / 8);
+ if Alignment_Of_T /= Align_1 and then With_Alignment then
+ Align_Position (Buffer, Alignment_Of_T);
end if;
Extract_Data (Buffer, Data_Address, T'Size / 8);
@@ -114,7 +112,7 @@ package body PolyORB.Utils.Buffers is
begin
Item_Storage := Z;
- if Endianness (Buffer) = Host_Order then
+ if Item'Size > 8 and then Endianness (Buffer) = Host_Order then
return Item;
else
return Swapped (Item);
@@ -130,7 +128,7 @@ package body PolyORB.Utils.Buffers is
procedure Align_Marshall_Copy
(Buffer : access Buffer_Type;
Octets : Stream_Element_Array;
- Alignment : Alignment_Type := 1)
+ Alignment : Alignment_Type := Align_1)
is
Data_Address : Opaque_Pointer;
begin
@@ -156,7 +154,7 @@ package body PolyORB.Utils.Buffers is
procedure Align_Unmarshall_Copy
(Buffer : access Buffer_Type;
- Alignment : Alignment_Type := 1;
+ Alignment : Alignment_Type := Align_1;
Data : out Stream_Element_Array)
is
Index : Stream_Element_Offset := Data'First;
============================================================
--- src/polyorb-utils-buffers.ads b6d97a5c47d26f4402779fca18486d336149d8e6
+++ src/polyorb-utils-buffers.ads f063effab0ba0700f2654c1d5290e712535e20e3
@@ -68,12 +68,12 @@ package PolyORB.Utils.Buffers is
procedure Align_Marshall_Copy
(Buffer : access Buffer_Type;
Octets : Stream_Element_Array;
- Alignment : Alignment_Type := 1);
+ Alignment : Alignment_Type := Align_1);
-- Align Buffer on Alignment, then marshall a copy of Octets into it, as is
procedure Align_Unmarshall_Copy
(Buffer : access Buffer_Type;
- Alignment : Alignment_Type := 1;
+ Alignment : Alignment_Type := Align_1;
Data : out Stream_Element_Array);
-- Align Buffer on Alignment, then fill Data by extracting Data'Length
-- bytes at the current position. The data need not be contiguous in the
============================================================
--- src/polyorb-utils-chained_lists.adb 4288c17d13e173020ecab1f5cf84d6806021f5bc
+++ src/polyorb-utils-chained_lists.adb b65e335a75cb213285f7fb891b1f5384e2050c4a
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -31,24 +31,37 @@ package body PolyORB.Utils.Chained_Lists
package body PolyORB.Utils.Chained_Lists is
- -- Local declarations
+ procedure Free is new Ada.Unchecked_Deallocation (Node, Node_Access);
- procedure Remove
- (L : in out List;
- Item : Node_Access;
- Previous : Node_Access);
- -- Remove Item from L, where Previous is the previous item
+ ---------
+ -- "+" --
+ ---------
- procedure Free is new Ada.Unchecked_Deallocation (Node, Node_Access);
+ function "+" (I : T) return List is
+ begin
+ return Result : List do
+ Append (Result, Node_Access'(new Node'(Value => I, others => <>)));
+ end return;
+ end "+";
+ ---------
+ -- "&" --
+ ---------
+
+ function "&" (L : List; I : T) return List is
+ begin
+ return LL : List := L do
+ Append (LL, I);
+ end return;
+ end "&";
+
------------
-- Append --
------------
procedure Append (L : in out List; I : T) is
- L_Last : Iterator := Last (L);
begin
- Insert (L, I, Before => L_Last);
+ Append (L, Node_Access'(new Node'(Value => I, others => <>)));
end Append;
----------------
@@ -56,16 +69,11 @@ package body PolyORB.Utils.Chained_Lists
----------------
procedure Deallocate (L : in out List) is
- Current, Next : Node_Access;
+ It : Iterator := First (L);
begin
- Current := L.First;
- while Current /= null loop
- Next := Current.Chain (Next_Node);
- Free (Current);
- Current := Next;
+ while not Last (It) loop
+ Remove (L, It);
end loop;
- L.First := null;
- L.Last := null;
end Deallocate;
---------------
@@ -73,38 +81,17 @@ package body PolyORB.Utils.Chained_Lists
---------------
function Duplicate (L : List) return List is
- D : List := Empty;
+ D : List;
-- New list
- N : Node_Access := L.First;
+ It : Iterator := First (L);
-- Iterator on original list
-
- P : Node_Access;
- -- Iterator on new list
-
begin
- if N = null then
- return D;
- end if;
- P := new Node;
- P.Value := N.Value;
- P.Chain (Next_Node) := null;
- if Doubly_Chained then
- P.Chain (Prev_Node) := null;
- end if;
- D.First := P;
- loop
- N := N.Chain (Next_Node);
- exit when N = null;
- P.Chain (Next_Node) := new Node;
- P.Chain (Next_Node).Value := N.Value;
- P.Chain (Next_Node).Chain (Next_Node) := null;
- if Doubly_Chained then
- P.Chain (Next_Node).Chain (Prev_Node) := P;
- end if;
- P := P.Chain (Next_Node);
+ while not Last (It) loop
+ Append (D, Node_Access'(new Node'(Value => Value (It).Value,
+ others => <>)));
+ Next (It);
end loop;
- D.Last := P;
return D;
end Duplicate;
@@ -113,30 +100,41 @@ package body PolyORB.Utils.Chained_Lists
-------------
function Element (L : List; Index : Natural) return Element_Access is
- N : Node_Access := L.First;
- C : Natural := 0;
+ It : Iterator := First (L);
+ C : Natural := 0;
begin
- while N /= null loop
+ while not Last (It) loop
if C = Index then
- return N.Value'Access;
+ return Value (It).Value'Access;
end if;
C := C + 1;
- N := N.Chain (Next_Node);
+ Next (It);
end loop;
raise Constraint_Error;
end Element;
+ -----------
+ -- Empty --
+ -----------
+
+ function Empty return List is
+ Empty_List : List;
+ begin
+ return Empty_List;
+ end Empty;
+
-------------------
-- Extract_First --
-------------------
procedure Extract_First (L : in out List; Result : out T) is
+ It : Iterator := First (L);
begin
- if Is_Empty (L) then
+ if Last (It) then
raise Constraint_Error;
end if;
- Result := L.First.Value;
- Remove (L, Item => L.First, Previous => null);
+ Result := Value (It).Value;
+ Remove (L, It);
end Extract_First;
-----------
@@ -145,78 +143,16 @@ package body PolyORB.Utils.Chained_Lists
function First (L : List) return Iterator is
begin
- return Iterator'(Current => L.First);
+ return Iterator (First (Node_Lists.List (L)));
end First;
- ------------
- -- Insert --
- ------------
-
- procedure Insert (L : in out List; I : T; Before : in out Iterator) is
- N : Node_Access;
- begin
- pragma Assert ((L.First = null) = (L.Last = null));
- N := new Node;
- N.Value := I;
- N.Chain (Next_Node) := Before.Current;
- if Doubly_Chained then
- N.Chain (Prev_Node) := null;
- end if;
-
- if Before.Current = L.First then
-
- -- Insert at first position
-
- L.First := N;
-
- elsif Before.Current = null then
-
- -- Insert at end of a non-empty list
-
- L.Last.Chain (Next_Node) := N;
-
- elsif Doubly_Chained then
-
- -- Insert in the middle of a doubly-chained list
-
- Before.Current.Chain (Prev_Node).Chain (Next_Node) := N;
-
- else
-
- -- Inserts in the middle of a list are only possible for
- -- doubly-chained lists.
-
- raise Program_Error;
- end if;
-
- if Before.Current = null then
-
- -- Inserting at tail of list: update Last and N's Prev pointer
-
- if Doubly_Chained then
- N.Chain (Prev_Node) := L.Last;
- end if;
- L.Last := N;
-
- elsif Doubly_Chained then
-
- -- Inserting at head (of non-empty list) or in the middle of
- -- the list: update this and the next nodes' Prev pointer.
-
- N.Chain (Prev_Node) := Before.Current.Chain (Prev_Node);
- Before.Current.Chain (Prev_Node) := N;
- end if;
-
- pragma Assert ((L.First = null) = (L.Last = null));
- end Insert;
-
--------------
-- Is_Empty --
--------------
function Is_Empty (L : List) return Boolean is
begin
- return L.First = null;
+ return Node_Lists.Is_Empty (Node_Lists.List (L));
end Is_Empty;
----------
@@ -224,9 +160,8 @@ package body PolyORB.Utils.Chained_Lists
----------
function Last (L : List) return Iterator is
- pragma Unreferenced (L);
begin
- return Iterator'(Current => null);
+ return Iterator (Node_Lists.Last (Node_Lists.List (L)));
end Last;
----------
@@ -235,7 +170,7 @@ package body PolyORB.Utils.Chained_Lists
function Last (I : Iterator) return Boolean is
begin
- return I.Current = null;
+ return Node_Lists.Last (Node_Lists.Iterator (I));
end Last;
------------
@@ -243,23 +178,29 @@ package body PolyORB.Utils.Chained_Lists
------------
function Length (L : List) return Natural is
- N : Node_Access := L.First;
- C : Natural := 0;
begin
- while N /= null loop
- C := C + 1;
- N := N.Chain (Next_Node);
- end loop;
- return C;
+ return Node_Lists.Length (Node_Lists.List (L));
end Length;
----------
+ -- Link --
+ ----------
+
+ function Link
+ (N : access Node;
+ Which : Ilists.Link_Type) return access Node_Access
+ is
+ begin
+ return N.Links (Which)'Unchecked_Access;
+ end Link;
+
+ ----------
-- Next --
----------
procedure Next (I : in out Iterator) is
begin
- I.Current := I.Current.Chain (Next_Node);
+ Node_Lists.Next (Node_Lists.Iterator (I));
end Next;
-------------
@@ -267,9 +208,8 @@ package body PolyORB.Utils.Chained_Lists
-------------
procedure Prepend (L : in out List; I : T) is
- L_First : Iterator := First (L);
begin
- Insert (L, I, Before => L_First);
+ Prepend (L, Node_Access'(new Node'(Value => I, others => <>)));
end Prepend;
--------------
@@ -277,20 +217,25 @@ package body PolyORB.Utils.Chained_Lists
--------------
procedure Remove_G (L : in out List; All_Occurrences : Boolean := True) is
- Item : Node_Access := L.First;
- Prev : Node_Access := null;
- Next : Node_Access;
+ Item, Prev_Item : Node_Access;
+ Iter : Iterator;
begin
+ Iter := First (L);
+ Prev_Item := null;
+
All_Items :
- while Item /= null loop
- Next := Item.Chain (Next_Node);
+ while not Last (Iter) loop
+ Item := Value (Iter);
if Predicate (Item.Value) then
- Remove (L, Item, Prev);
+ Next (Iter);
+ Remove_Element (L, Item, Prev_Item);
+ Free (Item);
exit All_Items when not All_Occurrences;
+
else
- Prev := Item;
+ Prev_Item := Value (Iter);
+ Next (Iter);
end if;
- Item := Next;
end loop All_Items;
end Remove_G;
@@ -298,7 +243,19 @@ package body PolyORB.Utils.Chained_Lists
-- Remove --
------------
- procedure Remove (L : in out List; I : T; All_Occurrences : Boolean := True)
+ procedure Remove (L : in out List; I : in out Iterator) is
+ N : Node_Access := Value (I);
+ begin
+ Node_Lists.Remove (Node_Lists.List (L), Node_Lists.Iterator (I));
+ Free (N);
+ end Remove;
+
+ ------------------------
+ -- Remove_Occurrences --
+ ------------------------
+
+ procedure Remove_Occurrences
+ (L : in out List; I : T; All_Occurrences : Boolean := True)
is
function Equality (X : T) return Boolean;
-- True iff X = I
@@ -312,85 +269,15 @@ package body PolyORB.Utils.Chained_Lists
begin
Remove (L, All_Occurrences);
- end Remove;
+ end Remove_Occurrences;
- ------------
- -- Remove --
- ------------
-
- procedure Remove
- (L : in out List;
- Item : Node_Access;
- Previous : Node_Access)
- is
- Current : Node_Access := Item;
- begin
- if Previous = null then
- L.First := Current.Chain (Next_Node);
- else
- Previous.Chain (Next_Node) := Current.Chain (Next_Node);
- end if;
-
- if L.Last = Current then
- L.Last := Previous;
- end if;
-
- if Doubly_Chained then
- if Current.Chain (Next_Node) /= null then
- Current.Chain (Next_Node).Chain (Prev_Node) := Previous;
- end if;
- end if;
- Free (Current);
- end Remove;
-
- ------------
- -- Remove --
- ------------
-
- procedure Remove (L : in out List; I : in out Iterator) is
- Next : constant Node_Access := I.Current.Chain (Next_Node);
- begin
- if Doubly_Chained then
- Remove (L, I.Current, I.Current.Chain (Prev_Node));
- I.Current := Next;
- else
- raise Program_Error;
- end if;
- end Remove;
-
-----------
-- Value --
-----------
function Value (I : Iterator) return Element_Access is
begin
- return I.Current.Value'Access;
+ return Value (I).Value'Unchecked_Access;
end Value;
- ---------
- -- "+" --
- ---------
-
- function "+" (I : T) return List is
- N : constant Node_Access := new Node;
- begin
- N.Value := I;
- N.Chain (Next_Node) := null;
- if Doubly_Chained then
- N.Chain (Prev_Node) := null;
- end if;
- return List'(First => N, Last => N);
- end "+";
-
- ---------
- -- "&" --
- ---------
-
- function "&" (L : List; I : T) return List is
- LL : List := L;
- begin
- Append (LL, I);
- return LL;
- end "&";
-
end PolyORB.Utils.Chained_Lists;
============================================================
--- src/polyorb-utils-chained_lists.ads efce85573b6d5a9c12869744965bc776fcc5da9a
+++ src/polyorb-utils-chained_lists.ads 93d0b2a36e20196781d22547eccd5b2642eeb3c7
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -25,8 +25,12 @@
-- --
------------------------------------------------------------------------------
--- Generic chained list
+-- Generic chained list of nonlimited values with dynamic allocation
+pragma Ada_2005;
+
+with PolyORB.Utils.Ilists;
+
generic
type T is private;
with function "=" (X, Y : T) return Boolean is <>;
@@ -54,16 +58,15 @@ package PolyORB.Utils.Chained_Lists is
-- Return an iterator on L positioned at L's first element. If L is empty,
-- returns the same value as Last (L).
+ function Last (L : List) return Iterator;
+ -- Return an iterator on L positioned past L's last element
+
function Value (I : Iterator) return Element_Access;
-- Return an access to the value of the element designated by I
procedure Next (I : in out Iterator);
-- Move I to the next element in the list
- function Last (L : List) return Iterator;
- -- Return an iterator position at the end of L (i.e. immediately after the
- -- last element in L; this iterator has no associated value).
-
function Last (I : Iterator) return Boolean;
-- True when I is positioned at the end of L (i.e. after the last element)
@@ -73,11 +76,6 @@ package PolyORB.Utils.Chained_Lists is
procedure Append (L : in out List; I : T);
-- Append value I at the end of L
- procedure Insert (L : in out List; I : T; Before : in out Iterator);
- -- Insert I into L before the designated position.
- -- If Before is not either First (L) or Last (L), then the list must be
- -- be doubly linked (else Program_Error is raised).
-
procedure Remove (L : in out List; I : in out Iterator);
-- Remove the item designated by I from L, and advance I to the next item
-- in L. This procedure can be used only if Doubly_Chained is True (else
@@ -89,19 +87,13 @@ package PolyORB.Utils.Chained_Lists is
-- Remove from L items for which Predicate is True. If All_Occurrences is
-- True, remove all such items, else only the first such item (if any).
- procedure Remove
+ procedure Remove_Occurrences
(L : in out List; I : T; All_Occurrences : Boolean := True);
-- Remove first/all occurences of value I from list L
function Is_Empty (L : List) return Boolean;
-- True iff L contains no elements
- Empty : constant List;
- -- A list that contains no elements
-
- -- NOTE: No guarantee is made that a list for which Is_Empty is true is
- -- equal to Empty.
-
function "+" (I : T) return List;
-- Make a list with I as its only element
@@ -114,6 +106,8 @@ package PolyORB.Utils.Chained_Lists is
procedure Deallocate (L : in out List);
-- Release the storage associated with L
+ function Empty return List;
+
private
pragma Inline (First);
pragma Inline (Value);
@@ -121,7 +115,8 @@ private
pragma Inline (Next);
pragma Inline (Prepend);
pragma Inline (Append);
- pragma Inline (Insert);
+ pragma Inline (Empty);
+ pragma Inline (Remove);
pragma Inline ("+");
pragma Inline ("&");
@@ -131,33 +126,36 @@ private
-- For simply chained lists, we only have one Next pointer in each node;
-- for doubly chained lists, we have Next and Prev.
- type Node_Chain is array (False .. Doubly_Chained) of Node_Access;
- pragma Suppress (Index_Check, Node_Chain);
- -- No index checks are required for accesses to Node_Chain, because all
- -- all cases of access to Node_Chain (Prev) are correctly protected by an
- -- 'if Doubly_Chained' condition.
+ Links_Type_Low : constant array (Boolean) of Ilists.Link_Type :=
+ (False => Ilists.Next,
+ True => Ilists.Prev);
- Next_Node : constant Boolean := False;
- Prev_Node : constant Boolean := True;
+ type Links_Type is
+ array (Ilists.Link_Type range Links_Type_Low (Doubly_Chained)
+ .. Ilists.Next)
+ of aliased Node_Access;
+ -- If Doubly_Chained, Links_Type has indices Prev and Next, else just Next
type Node is limited record
Value : aliased T;
-- Value associated with this list node
- Chain : Node_Chain;
- -- Next and optional Prev nodes.
- -- Note that all accesses to Chain (Prev_Node) must be protected by an
- -- 'if Doubly_Chained' conditition.
+ Links : Links_Type;
+ -- Next and (optional) Prev nodes.
end record;
- type Iterator is record
- Current : Node_Access;
- end record;
+ function Link
+ (N : access Node;
+ Which : Ilists.Link_Type) return access Node_Access;
+ pragma Inline (Link);
+ -- Accessor for Links
- type List is record
- First, Last : Node_Access;
- end record;
+ package Node_Lists is new Ilists.Lists
+ (T => Node,
+ T_Acc => Node_Access,
+ Doubly_Linked => Doubly_Chained);
- Empty : constant List := (null, null);
+ type List is new Node_Lists.List;
+ type Iterator is new Node_Lists.Iterator;
end PolyORB.Utils.Chained_Lists;
============================================================
--- src/polyorb-utils-strings-lists.adb bde08790b56512ed4d51264b0ac4a7ee768ea518
+++ src/polyorb-utils-strings-lists.adb 7c0f7bb784ea2b89ded586c2006e0583df0f9da6
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -34,8 +34,9 @@ package body PolyORB.Utils.Strings.Lists
-----------
function Empty return List is
+ Empty_List : List;
begin
- return List (String_Ptr_Lists.Empty);
+ return Empty_List;
end Empty;
-----------
============================================================
--- src/security/polyorb-qos-clients_security.adb dc536343faa741e0586c0a549d6c8a5a36662d42
+++ src/security/polyorb-qos-clients_security.adb a5b8097c048f53ec67d293affa646056e616e59e
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -147,7 +147,7 @@ package body PolyORB.QoS.Clients_Securit
Result := Result or Establish_Trust_In_Client;
end if;
- if Mechanism.Authorities /= Client_Authority_Mechanism_Lists.Empty
+ if not Is_Empty (Mechanism.Authorities)
and then Mechanism.Delegation_Supported
and then Mechanism.Delegation_Required
then
@@ -180,7 +180,7 @@ package body PolyORB.QoS.Clients_Securit
Result := Result or Identity_Assertion;
end if;
- if Mechanism.Authorities /= Client_Authority_Mechanism_Lists.Empty
+ if not Is_Empty (Mechanism.Authorities)
and then Mechanism.Delegation_Supported
then
Result := Result or Delegation_By_Client;
============================================================
--- src/security/polyorb-qos-targets_security.adb dcd0bae565732fb5fcadc3f256ad7d20428a1505
+++ src/security/polyorb-qos-targets_security.adb f706fecc1da5a21ac786730448a77dc61a75fa9a
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -153,7 +153,7 @@ package body PolyORB.QoS.Targets_Securit
Result := Result or Establish_Trust_In_Client;
end if;
- if Mechanism.Authorities /= Target_Authority_Mechanism_Lists.Empty
+ if not Is_Empty (Mechanism.Authorities)
and then Mechanism.Forward_Trust_Evaluator /= null
and then Mechanism.Delegation_Required
then
@@ -188,7 +188,7 @@ package body PolyORB.QoS.Targets_Securit
Result := Result or Identity_Assertion;
end if;
- if Mechanism.Authorities /= Target_Authority_Mechanism_Lists.Empty
+ if not Is_Empty (Mechanism.Authorities)
and then Mechanism.Forward_Trust_Evaluator /= null
then
Result := Result or Delegation_By_Client;
============================================================
--- src/security/tls/polyorb-asynch_ev-sockets-tls.adb 3272658453d24b5f2aaa70360da38fa939a164de
+++ src/security/tls/polyorb-asynch_ev-sockets-tls.adb 1ca9e598c949f9de49b5ed232182d202326de8b3
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -76,20 +76,19 @@ package body PolyORB.Asynch_Ev.Sockets.T
declare
Iter : Iterator := First (AEM.Sources);
-
begin
while not Source_Lists.Last (Iter) loop
- if TLS_Event_Source (Value (Iter).all.all).TLS_Socket
+ if TLS_Event_Source (Value (Iter).all).TLS_Socket
/= No_TLS_Socket
and then Pending_Length
- (TLS_Event_Source (Value (Iter).all.all).TLS_Socket) /= 0
+ (TLS_Event_Source (Value (Iter).all).TLS_Socket) /= 0
then
Last := Last + 1;
- Result (Last) := Value (Iter).all;
+ Result (Last) := Asynch_Ev_Source_Access (Value (Iter));
Clear
(AEM.Monitored_Set,
- TLS_Event_Source (Value (Iter).all.all).Socket);
+ TLS_Event_Source (Value (Iter).all).Socket);
Remove (AEM.Sources, Iter);
else
@@ -170,7 +169,7 @@ package body PolyORB.Asynch_Ev.Sockets.T
end if;
Set (AEM.Monitored_Set, TLS_Event_Source (AES.all).Socket);
- Source_Lists.Append (AEM.Sources, AES);
+ Source_Lists.Append (AEM.Sources, Socket_Event_Source (AES.all)'Access);
pragma Debug (C, O ("Register_Source: Sources'Length:="
& Integer'Image (Source_Lists.Length (AEM.Sources))));
AES.Monitor := Asynch_Ev_Monitor_Access (AEM);
============================================================
--- src/security/tls/polyorb-security-transport_mechanisms-tls.adb 0d34f7286180c9cb1ede376858e9cf50d0f3fac9
+++ src/security/tls/polyorb-security-transport_mechanisms-tls.adb c0a4bd7044a9f6db6ea07d418f806726e22b37ed
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2006, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -137,9 +137,9 @@ package body PolyORB.Security.Transport_
return PolyORB.Security.Types.OID_Lists.List
is
pragma Unreferenced (Mechanism);
-
+ Empty_List : Security.Types.OID_Lists.List;
begin
- return PolyORB.Security.Types.OID_Lists.Empty;
+ return Empty_List;
end Supported_Naming_Mechanisms;
---------------------
============================================================
--- src/soap/polyorb-binding_data-soap.adb 0f898e423a529f609f9be06a0435e8475498c831
+++ src/soap/polyorb-binding_data-soap.adb fea803d3c7eec1b07d1ed3bfea3882394ae263dc
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -141,7 +141,8 @@ package body PolyORB.Binding_Data.SOAP i
Create (Socket_Endpoint (TE.all), Sock);
Binding_Objects.Setup_Binding_Object
- (TE,
+ (The_ORB,
+ TE,
SOAP_Factories,
BO_Ref,
Profile_Access (Profile));
============================================================
--- src/soap/polyorb-utils-text_buffers.adb da7062608c898021cd3b1cec585d364dd4431a70
+++ src/soap/polyorb-utils-text_buffers.adb 231e9ec0057873a4c275763840e2b7f4b5565938
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -53,7 +53,7 @@ package body PolyORB.Utils.Text_Buffers
is
A : Stream_Element_Array (1 .. 1);
begin
- Align_Unmarshall_Copy (B, 1, A);
+ Align_Unmarshall_Copy (B, Align_1, A);
return Character'Val (A (1));
end Unmarshall_Char;
@@ -86,7 +86,7 @@ package body PolyORB.Utils.Text_Buffers
for A'Address use S'Address;
pragma Import (Ada, A);
begin
- Align_Unmarshall_Copy (B, 1, A);
+ Align_Unmarshall_Copy (B, Align_1, A);
end Unmarshall_String;
end PolyORB.Utils.Text_Buffers;
============================================================
--- src/srp/polyorb-binding_data-srp.adb 7dbbcf796fb1f1733c7a1591d5bfe88d84abffc6
+++ src/srp/polyorb-binding_data-srp.adb 35304b2805ad939440e0c942c8e6675598bc7035
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -100,7 +100,8 @@ package body PolyORB.Binding_Data.SRP is
-- Create (P'Access, Filters.Filter_Access (Session));
Binding_Objects.Setup_Binding_Object
- (TE,
+ (The_ORB,
+ TE,
SRP_Factories,
BO_Ref,
Profile_Access (Profile));
============================================================
--- src/srp/polyorb-representations-srp.adb ffb2ecc945201b06e0a1ff987baade4ddd3bd23c
+++ src/srp/polyorb-representations-srp.adb 4136f14bc72279e85b45e63b72aea51fb6fc46ef
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2002-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2002-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -375,7 +375,7 @@ package body PolyORB.Representations.SRP
is
Result : Stream_Element_Array (1 .. 1);
begin
- Align_Unmarshall_Copy (Buffer, 1, Result);
+ Align_Unmarshall_Copy (Buffer, Align_1, Result);
pragma Debug (C, O ("Unmarshall (Octet): enter & end"));
return PolyORB.Types.Octet (Result (Result'First));
end Unmarshall;
@@ -918,7 +918,7 @@ package body PolyORB.Representations.SRP
begin
pragma Debug (C, O ("Marshall (Octet): enter"));
Align_Marshall_Copy (Buffer, (1 => Stream_Element
- (PolyORB.Types.Octet'(Data))), 1);
+ (PolyORB.Types.Octet'(Data))), Align_1);
pragma Debug (C, O ("Marshall (Octet): end"));
end Marshall;
@@ -2138,7 +2138,7 @@ package body PolyORB.Representations.SRP
is
A : Stream_Element_Array (1 .. 1);
begin
- Align_Unmarshall_Copy (B, 1, A);
+ Align_Unmarshall_Copy (B, Align_1, A);
return Character'Val (A (A'First));
end Unmarshall_Char;
============================================================
--- src/ssl/polyorb-asynch_ev-sockets-ssl.adb 2f34a5aea0b70844f3e9539d97b2bce1947f0c71
+++ src/ssl/polyorb-asynch_ev-sockets-ssl.adb 22de5a147f68869f9d531922a3a445058f136ae7
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2005-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2005-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -110,7 +110,7 @@ package body PolyORB.Asynch_Ev.Sockets.S
end if;
Set (AEM.Monitored_Set, SSL_Event_Source (AES.all).Socket);
- Source_Lists.Append (AEM.Sources, AES);
+ Source_Lists.Append (AEM.Sources, Socket_Event_Source (AES.all)'Access);
pragma Debug (C, O ("Register_Source: Sources'Length:="
& Integer'Image (Source_Lists.Length (AEM.Sources))));
AES.Monitor := Asynch_Ev_Monitor_Access (AEM);
@@ -144,17 +144,17 @@ package body PolyORB.Asynch_Ev.Sockets.S
begin
while not Source_Lists.Last (Iter) loop
- if SSL_Event_Source (Value (Iter).all.all).SSL_Socket
+ if SSL_Event_Source (Value (Iter).all).SSL_Socket
/= No_SSL_Socket
and then Pending_Length
- (SSL_Event_Source (Value (Iter).all.all).SSL_Socket) /= 0
+ (SSL_Event_Source (Value (Iter).all).SSL_Socket) /= 0
then
Last := Last + 1;
- Result (Last) := Value (Iter).all;
+ Result (Last) := Value (Iter).all'Access;
Clear
(AEM.Monitored_Set,
- SSL_Event_Source (Value (Iter).all.all).Socket);
+ SSL_Event_Source (Value (Iter).all).Socket);
Remove (AEM.Sources, Iter);
else
============================================================
--- testsuite/core/chained_lists/test000.adb 5ac857885260c83aaa4105b68c972cd4c7c5dfd7
+++ testsuite/core/chained_lists/test000.adb 877b4ec21f7109cff7a170f7fe0d9a5b543d3155
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 2008, Free Software Foundation, Inc. --
+-- Copyright (C) 2008-2009, Free Software Foundation, Inc. --
-- --
-- PolyORB is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
@@ -16,12 +16,12 @@
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
-- License for more details. You should have received a copy of the GNU --
-- General Public License distributed with PolyORB; see file COPYING. If --
--- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
--- Boston, MA 02111-1307, USA. --
+-- not, write to the Free Software Foundation, 51 Franklin Street, Fifth --
+-- Floor, Boston, MA 02111-1301, USA. --
-- --
-- --
--- PolyORB is maintained by ACT Europe. --
--- (email: sales@act-europe.fr) --
+-- PolyORB is maintained by AdaCore --
+-- (email: sales@adacore.com) --
-- --
------------------------------------------------------------------------------
@@ -56,7 +56,8 @@ procedure Test000 is
end To_Array;
L1, L2, L3, L4 : List;
- It : Iterator;
+ Int : Integer;
+ It : Iterator;
begin
Output ("empty", To_Array (L1)'Length = 0);
Append (L1, 123);
@@ -67,9 +68,11 @@ begin
Prepend (L1, 666);
Output ("double L1", To_Array (L1) = (1 => 666, 2 => 123));
Append (L2, 789);
- Output ("double L1", To_Array (L2) = (1 => 456, 2 => 789));
+ Output ("double L2", To_Array (L2) = (1 => 456, 2 => 789));
L3 := L1 & 999 & 456 & 789;
+ -- L3 is now a copy of L1
+
Output ("concat", To_Array (L3) = (666, 123, 999, 456, 789));
It := First (L3);
@@ -79,17 +82,21 @@ begin
Output ("scan", Value (It).all = 999);
Remove (L3, It);
+ -- Note, L1 now has dangling pointers
+
Output ("remove", To_Array (L3) = (666, 123, 456, 789));
Output ("remove iterator", Value (It).all = 456);
- Insert (L3, 444, Before => It);
- Output ("insert", To_Array (L3) = (666, 123, 444, 456, 789));
-
L4 := Duplicate (L3);
Element (L4, 1).all := 321;
Append (L4, 555);
- Output ("duplicate", To_Array (L3) = (666, 123, 444, 456, 789)
- and then To_Array (L4) = (666, 321, 444, 456, 789, 555));
+ Output ("duplicate", To_Array (L3) = (666, 123, 456, 789)
+ and then To_Array (L4) = (666, 321, 456, 789, 555));
+
+ Extract_First (L4, Int);
+ Output ("extract first",
+ Int = 666 and then To_Array (L4) = (321, 456, 789, 555));
+
declare
function Range_400_499 (X : Integer) return Boolean;
function Range_400_499 (X : Integer) return Boolean is
@@ -102,5 +109,11 @@ begin
Output ("remove multiple", To_Array (L3) = (666, 123, 789));
end;
+ -- Deallocate (L1);
+ -- Copied into L3, and then elements removed from L3
+
+ Deallocate (L2);
+ Deallocate (L3);
+ Deallocate (L4);
End_Report;
end Test000;