jetstream-api 0.6.2__tar.gz → 0.6.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/PKG-INFO +1 -1
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/__init__.py +1 -1
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/admin.py +17 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/properties.py +50 -14
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/PKG-INFO +1 -1
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/pyproject.toml +1 -1
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/LICENSE.txt +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/README.md +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/admintopic.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/common.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/connectivity.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/exception.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/msg.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/pattern.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/producer.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/py.typed +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/qmgr.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/topic.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/util.py +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/SOURCES.txt +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/dependency_links.txt +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/requires.txt +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/top_level.txt +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/setup.cfg +0 -0
- {jetstream_api-0.6.2 → jetstream_api-0.6.4}/tests/test_example.py +0 -0
|
@@ -604,6 +604,23 @@ class ILAdminService:
|
|
|
604
604
|
서버가 거절했을 때.
|
|
605
605
|
ILException: 통신 실패.
|
|
606
606
|
|
|
607
|
+
Warning:
|
|
608
|
+
**값 검증은 엔진이 한다.** 이 API 는 문자열 길이(와이어 폭) 외의 값
|
|
609
|
+
범위를 검사하지 않는데, 엔진의 처리가 **생성과 변경에서 다르다.**
|
|
610
|
+
|
|
611
|
+
* **숫자 설정값**(타임아웃/주기/보관 수 등)이 범위를 벗어나면 엔진
|
|
612
|
+
7.1.1 이상은 거부하지 않고 **조용히 기본값으로 바꿔서 만든다.**
|
|
613
|
+
대조할 저장값이 없어 판정할 수 없기 때문이다. **오타를 내도
|
|
614
|
+
만들기는 성공하므로** 만든 뒤 :meth:`getQmgrProperty` 로 값을
|
|
615
|
+
확인한다.
|
|
616
|
+
* 반면 **이름/포트/홈경로** 같은 신원 항목은 생성 시에도 거부된다.
|
|
617
|
+
그래서 만든 뒤 봐야 할 것은 신원 항목이 아니라 숫자 설정값 쪽이다.
|
|
618
|
+
* **엔진 7.1.1 미만에는 이 검사층 자체가 없다.** 어떤 값도 걸러지지
|
|
619
|
+
않으므로 호출자가 스스로 확인해야 한다.
|
|
620
|
+
|
|
621
|
+
:meth:`setQmgrProperty` (변경)는 다르다 - 저장값과 다른 범위 밖
|
|
622
|
+
값은 거부된다.
|
|
623
|
+
|
|
607
624
|
Note:
|
|
608
625
|
만든 뒤 :meth:`startQmgr` 로 기동해야 접속할 수 있다.
|
|
609
626
|
|
|
@@ -26,8 +26,26 @@ def _format_millis(value: int, fmt: str) -> str:
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
# 구엔진(
|
|
30
|
-
|
|
29
|
+
# 구엔진 SetVolumeMonitorForceReloadSize() 가 강제하는 **하한**.
|
|
30
|
+
#
|
|
31
|
+
# 기본값이 아니다. 구엔진 생성자는
|
|
32
|
+
# mVolumeMonitorForceReloadSize = mVolumeMonitorSizeLimit
|
|
33
|
+
# 이고(ManagerProperty.hpp:143, 1GB 줄은 주석), 이 숫자는 세터
|
|
34
|
+
# (ManagerProperty.hpp:557)가 그 아래 값을 올려 잡는 바닥일 뿐이다.
|
|
35
|
+
# "엔진이 강제하는 값"과 "엔진이 의도한 값"은 다르다 - 이것을 폴백 기본값으로
|
|
36
|
+
# 쓰면 sizeLimit 과의 문턱 순서가 뒤집힌다(0.6.3 에서 정정).
|
|
37
|
+
LEGACY_FORCE_RELOAD_MIN = 1048576
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def _has_value(raw) -> bool:
|
|
41
|
+
"""서버가 준 원본이 쓸 만한지 본다.
|
|
42
|
+
|
|
43
|
+
신엔진(7.0+)은 구엔진 전용 자리를 0 으로 채워 보낸다. 그 0 을 되돌려 쓰면
|
|
44
|
+
안 되므로 전부 0 이면 원본이 없는 것으로 본다.
|
|
45
|
+
"""
|
|
46
|
+
return bool(raw) and any(raw)
|
|
47
|
+
|
|
48
|
+
|
|
31
49
|
# 구엔진(6.3.x)의 TCPListener SessionPerThread 기본값.
|
|
32
50
|
# 0 이면 imqlsr 가 nSessionCnt / nSessionPerThread 에서 0 나눗셈으로 죽는다.
|
|
33
51
|
LEGACY_SESSION_PER_THREAD = 10
|
|
@@ -2483,6 +2501,7 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2483
2501
|
self.volumeMonitorSizeLimit = 10485760
|
|
2484
2502
|
self._volumeTailRaw = None
|
|
2485
2503
|
self._sessionPerThreadRaw = None
|
|
2504
|
+
self._poolSizeRaw = None
|
|
2486
2505
|
self.logLevelSystem = 4
|
|
2487
2506
|
self.logFileSizeSystem = 4194304
|
|
2488
2507
|
self.logFileCountSystem = 5
|
|
@@ -2582,6 +2601,9 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2582
2601
|
offset += 10
|
|
2583
2602
|
self.recvWaitTimeout = ba_pick_int(ba, offset, 10)
|
|
2584
2603
|
offset += 10
|
|
2604
|
+
# 구엔진(6.3.x)에는 실재하는 필드다. 상수로 덮으면 현장에서 조정해 둔
|
|
2605
|
+
# 값이 지워지므로 원본을 보관해 되돌려 쓴다(실측).
|
|
2606
|
+
self._poolSizeRaw = bytes(ba[offset:offset + 20])
|
|
2585
2607
|
offset += 20
|
|
2586
2608
|
self.volumeMonitorInterval = ba_pick_int(ba, offset, 10)
|
|
2587
2609
|
offset += 10
|
|
@@ -2704,11 +2726,15 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2704
2726
|
# v6.3.4 에서 async 를 없애며 acceptPoolSize/eventPoolSize 를 뺐지만
|
|
2705
2727
|
# 구엔진(6.3.x)은 이 두 필드를 읽고 1~9 로 검증한다. 0 을 보내면
|
|
2706
2728
|
# MIMQE_INVALID_ARGUMENT (AcceptPoolSize : 0) 로 거부된다(6.3.1 실측).
|
|
2707
|
-
#
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2729
|
+
# 다만 기본값으로 덮으면 현장에서 조정해 둔 값이 지워지므로,
|
|
2730
|
+
# 서버가 준 원본이 있으면 그대로 되돌려 준다(없을 때만 1/1).
|
|
2731
|
+
raw_pool = getattr(self, "_poolSizeRaw", None)
|
|
2732
|
+
if _has_value(raw_pool):
|
|
2733
|
+
ba[offset:offset + 20] = raw_pool
|
|
2734
|
+
else:
|
|
2735
|
+
ba_merge(1, ba, offset)
|
|
2736
|
+
ba_merge(1, ba, offset + 10)
|
|
2737
|
+
offset += 20
|
|
2712
2738
|
ba_merge(self.volumeMonitorInterval, ba, offset)
|
|
2713
2739
|
offset += 10
|
|
2714
2740
|
ba_merge(self.volumeMonitorSizeLimit, ba, offset)
|
|
@@ -2771,8 +2797,11 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2771
2797
|
# 서버가 준 값을 그대로 되돌려 준다
|
|
2772
2798
|
ba[topic_offset:topic_offset + 20] = raw
|
|
2773
2799
|
else:
|
|
2774
|
-
#
|
|
2775
|
-
|
|
2800
|
+
# 받은 값이 없다 - 엔진 생성자와 같이 sizeLimit 을 따라간다
|
|
2801
|
+
# (6.3 ManagerProperty.hpp:143 이 mForceReloadSize = mSizeLimit).
|
|
2802
|
+
# 엔진 세터가 1048576 미만을 올려 잡으므로 그 아래로 내리지 않는다.
|
|
2803
|
+
ba_merge(max(self.volumeMonitorSizeLimit, LEGACY_FORCE_RELOAD_MIN),
|
|
2804
|
+
ba, topic_offset)
|
|
2776
2805
|
# 구엔진에만 있는 sessionPerThread 도 되돌려 준다
|
|
2777
2806
|
raw2 = getattr(self, "_sessionPerThreadRaw", None)
|
|
2778
2807
|
if raw2:
|
|
@@ -3578,6 +3607,7 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3578
3607
|
ILException: 그 밖의 파싱 실패.
|
|
3579
3608
|
"""
|
|
3580
3609
|
self.ip = "127.0.0.1"
|
|
3610
|
+
self._poolSizeRaw = None
|
|
3581
3611
|
self.port = 9998
|
|
3582
3612
|
self.version = ""
|
|
3583
3613
|
self.timeoutSocketSend = 60
|
|
@@ -3619,6 +3649,8 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3619
3649
|
offset += 10
|
|
3620
3650
|
self.timeoutSocketRecv = ba_pick_int(ba, offset, 10)
|
|
3621
3651
|
offset += 10
|
|
3652
|
+
# 구엔진 ilsvc 는 이 값으로 스레드 풀을 만든다 - 원본을 보관해 되돌려 쓴다
|
|
3653
|
+
self._poolSizeRaw = bytes(ba[offset:offset + 20])
|
|
3622
3654
|
offset += 20
|
|
3623
3655
|
self.logLevelSystem = ba_pick_int(ba, offset, 2)
|
|
3624
3656
|
offset += 2
|
|
@@ -3676,11 +3708,15 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3676
3708
|
# v6.3.4 에서 async 를 없애며 acceptPoolSize/eventPoolSize 를 뺐지만
|
|
3677
3709
|
# 구엔진(6.3.x) ilsvc 는 이 값으로 스레드 풀을 만든다
|
|
3678
3710
|
# (ILinkServerMainClass.cpp:151, ServerListener.cpp:17). 0 이면 풀이 0개다.
|
|
3679
|
-
#
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3683
|
-
|
|
3711
|
+
# 다만 기본값으로 덮으면 현장에서 조정해 둔 값이 지워지므로,
|
|
3712
|
+
# 서버가 준 원본이 있으면 그대로 되돌려 준다(없을 때만 1/1).
|
|
3713
|
+
raw_pool = getattr(self, "_poolSizeRaw", None)
|
|
3714
|
+
if _has_value(raw_pool):
|
|
3715
|
+
ba[offset:offset + 20] = raw_pool
|
|
3716
|
+
else:
|
|
3717
|
+
ba_merge(1, ba, offset)
|
|
3718
|
+
ba_merge(1, ba, offset + 10)
|
|
3719
|
+
offset += 20
|
|
3684
3720
|
ba_merge(self.logLevelSystem, ba, offset)
|
|
3685
3721
|
offset += 2
|
|
3686
3722
|
ba_merge(self.logFileSizeSystem, ba, offset)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|