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.
Files changed (25) hide show
  1. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/PKG-INFO +1 -1
  2. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/__init__.py +1 -1
  3. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/admin.py +17 -0
  4. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/properties.py +50 -14
  5. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/PKG-INFO +1 -1
  6. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/pyproject.toml +1 -1
  7. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/LICENSE.txt +0 -0
  8. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/README.md +0 -0
  9. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/admintopic.py +0 -0
  10. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/common.py +0 -0
  11. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/connectivity.py +0 -0
  12. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/exception.py +0 -0
  13. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/msg.py +0 -0
  14. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/pattern.py +0 -0
  15. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/producer.py +0 -0
  16. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/py.typed +0 -0
  17. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/qmgr.py +0 -0
  18. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/topic.py +0 -0
  19. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/ilink/util.py +0 -0
  20. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/SOURCES.txt +0 -0
  21. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/dependency_links.txt +0 -0
  22. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/requires.txt +0 -0
  23. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/jetstream_api.egg-info/top_level.txt +0 -0
  24. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/setup.cfg +0 -0
  25. {jetstream_api-0.6.2 → jetstream_api-0.6.4}/tests/test_example.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jetstream-api
3
- Version: 0.6.2
3
+ Version: 0.6.4
4
4
  Summary: Python client API for iLink M.O.M. (Message Oriented Middleware)
5
5
  Author: snowjeans
6
6
  License: Boost Software License - Version 1.0 - August 17th, 2003
@@ -1,6 +1,6 @@
1
1
  """iLink - Python client API for iLink M.O.M. (Message Oriented Middleware)."""
2
2
 
3
- __version__ = "0.6.2"
3
+ __version__ = "0.6.4"
4
4
 
5
5
  # --- Admin / Service ---
6
6
  from .admin import ILAdminService, ILAdminQmgr, ILLogBrowser, ILQueueBrowser
@@ -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
- # 구엔진(rev 3283 미만)의 StorageVolumeMonitor ForceReloadSize 기본값.
30
- LEGACY_FORCE_RELOAD_SIZE = 1048576
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
- # 자바는 v1.5.2 에서 같은 이유로 기본값 1 을 되살렸다 - 그것과 맞춘다.
2708
- ba_merge(1, ba, offset)
2709
- offset += 10
2710
- ba_merge(1, ba, offset)
2711
- offset += 10
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
- ba_merge(LEGACY_FORCE_RELOAD_SIZE, ba, topic_offset)
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
- # 자바는 v1.5.2 에서 기본값 1 을 되살렸다 - 그것과 맞춘다.
3680
- ba_merge(1, ba, offset)
3681
- offset += 10
3682
- ba_merge(1, ba, offset)
3683
- offset += 10
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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jetstream-api
3
- Version: 0.6.2
3
+ Version: 0.6.4
4
4
  Summary: Python client API for iLink M.O.M. (Message Oriented Middleware)
5
5
  Author: snowjeans
6
6
  License: Boost Software License - Version 1.0 - August 17th, 2003
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "jetstream-api"
7
- version = "0.6.2"
7
+ version = "0.6.4"
8
8
  description = "Python client API for iLink M.O.M. (Message Oriented Middleware)"
9
9
  authors = [{name = "snowjeans"}]
10
10
  readme = "README.md"
File without changes
File without changes
File without changes