jetstream-api 0.5.1__tar.gz → 0.5.3__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.5.1 → jetstream_api-0.5.3}/PKG-INFO +1 -1
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/__init__.py +1 -1
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/admin.py +14 -6
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/properties.py +299 -31
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/jetstream_api.egg-info/PKG-INFO +1 -1
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/pyproject.toml +1 -1
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/LICENSE.txt +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/README.md +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/admintopic.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/common.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/connectivity.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/exception.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/msg.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/pattern.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/producer.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/py.typed +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/qmgr.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/topic.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/ilink/util.py +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/jetstream_api.egg-info/SOURCES.txt +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/jetstream_api.egg-info/dependency_links.txt +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/jetstream_api.egg-info/requires.txt +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/jetstream_api.egg-info/top_level.txt +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/setup.cfg +0 -0
- {jetstream_api-0.5.1 → jetstream_api-0.5.3}/tests/test_example.py +0 -0
|
@@ -6278,7 +6278,10 @@ class ILLogBrowser:
|
|
|
6278
6278
|
self.service = service
|
|
6279
6279
|
|
|
6280
6280
|
def __del__(self) -> None:
|
|
6281
|
-
|
|
6281
|
+
# 생성자가 중간에 실패하면 속성이 없을 수 있다. __del__ 에서 난 예외는
|
|
6282
|
+
# 파이썬이 삼키고 stderr 로만 찍으므로, 동작에는 문제가 없어도 로그가
|
|
6283
|
+
# 지저분해진다 - getattr 로 방어한다.
|
|
6284
|
+
if getattr(self, "browserId", None) and getattr(self, "service", None):
|
|
6282
6285
|
self.close()
|
|
6283
6286
|
|
|
6284
6287
|
def close(self) -> None:
|
|
@@ -6289,10 +6292,11 @@ class ILLogBrowser:
|
|
|
6289
6292
|
Note:
|
|
6290
6293
|
닫지 않으면 서버에 커서가 남는다. ``try/finally`` 로 반드시 닫아라.
|
|
6291
6294
|
"""
|
|
6292
|
-
|
|
6295
|
+
service = getattr(self, "service", None)
|
|
6296
|
+
if service is None or not service.isOnline():
|
|
6293
6297
|
return
|
|
6294
6298
|
try:
|
|
6295
|
-
|
|
6299
|
+
service.request(
|
|
6296
6300
|
ILC.MIMQ_BROWSER_DELETION,
|
|
6297
6301
|
ILC.MIMQ_SUCCESSFUL_BROWSER_DELETION,
|
|
6298
6302
|
self.browserId,
|
|
@@ -6388,7 +6392,10 @@ class ILQueueBrowser:
|
|
|
6388
6392
|
self.closed = False
|
|
6389
6393
|
|
|
6390
6394
|
def __del__(self) -> None:
|
|
6391
|
-
|
|
6395
|
+
# 생성자가 중간에 실패하면 속성이 없을 수 있다. __del__ 에서 난 예외는
|
|
6396
|
+
# 파이썬이 삼키고 stderr 로만 찍으므로, 동작에는 문제가 없어도 로그가
|
|
6397
|
+
# 지저분해진다 - getattr 로 방어한다.
|
|
6398
|
+
if getattr(self, "browserId", None) and getattr(self, "service", None):
|
|
6392
6399
|
self.close()
|
|
6393
6400
|
|
|
6394
6401
|
def close(self) -> None:
|
|
@@ -6399,10 +6406,11 @@ class ILQueueBrowser:
|
|
|
6399
6406
|
Note:
|
|
6400
6407
|
닫지 않으면 서버에 커서가 남는다. ``try/finally`` 로 반드시 닫아라.
|
|
6401
6408
|
"""
|
|
6402
|
-
|
|
6409
|
+
service = getattr(self, "service", None)
|
|
6410
|
+
if service is None or not service.isOnline() or getattr(self, "closed", True):
|
|
6403
6411
|
return
|
|
6404
6412
|
try:
|
|
6405
|
-
|
|
6413
|
+
service.request(
|
|
6406
6414
|
self.qmgrName,
|
|
6407
6415
|
ILC.MIMQ_BROWSER_DELETION,
|
|
6408
6416
|
ILC.MIMQ_SUCCESSFUL_BROWSER_DELETION,
|
|
@@ -41,6 +41,55 @@ def _validate_log_level(value: int) -> None:
|
|
|
41
41
|
)
|
|
42
42
|
|
|
43
43
|
|
|
44
|
+
def _spec_range(lo, hi, extra=""):
|
|
45
|
+
"""``lo <= v <= hi`` 규칙. ``extra`` 는 오류 문구에 덧붙일 단서."""
|
|
46
|
+
text = "%s~%s%s" % (lo, hi, extra)
|
|
47
|
+
|
|
48
|
+
def check(v):
|
|
49
|
+
return isinstance(v, int) and not isinstance(v, bool) and lo <= v <= hi
|
|
50
|
+
|
|
51
|
+
return check, text
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _spec_min(lo, extra=""):
|
|
55
|
+
"""``lo`` 이상 규칙."""
|
|
56
|
+
text = "%s or greater%s" % (lo, extra)
|
|
57
|
+
|
|
58
|
+
def check(v):
|
|
59
|
+
return isinstance(v, int) and not isinstance(v, bool) and v >= lo
|
|
60
|
+
|
|
61
|
+
return check, text
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _spec_special_or_min(special, lo, label):
|
|
65
|
+
"""``special`` 하나를 따로 허용하고, 그 밖에는 ``lo`` 이상만 받는다.
|
|
66
|
+
|
|
67
|
+
엔진이 ``-1``(무제한/비활성) 같은 특수값을 따로 두는 항목에 쓴다. ``0`` 처럼
|
|
68
|
+
특수값도 아니고 범위에도 없는 값을 걸러 내는 것이 목적이다.
|
|
69
|
+
"""
|
|
70
|
+
text = "%s for %s, or %s or greater" % (special, label, lo)
|
|
71
|
+
|
|
72
|
+
def check(v):
|
|
73
|
+
if not isinstance(v, int) or isinstance(v, bool):
|
|
74
|
+
return False
|
|
75
|
+
return v == special or v >= lo
|
|
76
|
+
|
|
77
|
+
return check, text
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def _spec_maxlen(n):
|
|
81
|
+
"""``n`` 바이트 이하 문자열 규칙."""
|
|
82
|
+
text = "%d bytes or less" % n
|
|
83
|
+
|
|
84
|
+
def check(v):
|
|
85
|
+
try:
|
|
86
|
+
return len(str(v).encode("utf-8")) <= n
|
|
87
|
+
except Exception:
|
|
88
|
+
return False
|
|
89
|
+
|
|
90
|
+
return check, text
|
|
91
|
+
|
|
92
|
+
|
|
44
93
|
class _AutoAccessor:
|
|
45
94
|
"""필드에서 ``getX`` / ``setX`` / ``isX`` 접근자를 **자동으로** 만들어 주는 믹스인.
|
|
46
95
|
|
|
@@ -53,8 +102,18 @@ class _AutoAccessor:
|
|
|
53
102
|
- ``obj.isFoo()`` -> ``bool(obj.foo)``
|
|
54
103
|
|
|
55
104
|
즉 **필드 이름을 알면 접근자 이름도 안다.** 각 클래스 docstring 의 Attributes
|
|
56
|
-
절에 필드 목록이 있다.
|
|
57
|
-
|
|
105
|
+
절에 필드 목록이 있다.
|
|
106
|
+
|
|
107
|
+
Note:
|
|
108
|
+
**세터는 값 범위를 검사한다.** 클래스마다 ``_SPEC`` 규칙표가 있고, 엔진
|
|
109
|
+
``Validate()`` 와 같은 규칙이다. 범위를 벗어나면
|
|
110
|
+
:class:`UnsupportedOperationException` 을 올린다 - 서버에 갔다 오기 전에
|
|
111
|
+
걸러진다. 규칙이 없는 필드는 그냥 대입된다.
|
|
112
|
+
|
|
113
|
+
**필드 직접 대입은 검사하지 않는다** (``obj.foo = 3``). 서버가 보낸
|
|
114
|
+
바이트를 푸는 경로가 같은 방식으로 필드에 넣기 때문이다 - 구엔진이 지금
|
|
115
|
+
규격을 벗어난 값을 보내도 파싱이 깨지면 안 된다. 미리 걸러 내고 싶으면
|
|
116
|
+
**세터를 쓴다.**
|
|
58
117
|
"""
|
|
59
118
|
|
|
60
119
|
def __getattr__(self, name: str):
|
|
@@ -77,13 +136,44 @@ class _AutoAccessor:
|
|
|
77
136
|
if name.startswith("set") and len(name) > 3:
|
|
78
137
|
field = name[3].lower() + name[4:]
|
|
79
138
|
if hasattr(self, field):
|
|
80
|
-
return lambda value:
|
|
139
|
+
return lambda value: self._set_checked(field, value)
|
|
81
140
|
if name.startswith("is") and len(name) > 2:
|
|
82
141
|
field = name[2].lower() + name[3:]
|
|
83
142
|
if hasattr(self, field):
|
|
84
143
|
return lambda: bool(getattr(self, field))
|
|
85
144
|
raise AttributeError(f"{self.__class__.__name__} has no attribute {name}")
|
|
86
145
|
|
|
146
|
+
_SPEC: dict = {}
|
|
147
|
+
|
|
148
|
+
def _set_checked(self, field: str, value):
|
|
149
|
+
"""규칙표에 있으면 검사한 뒤 필드에 넣는다.
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
field (str): 대상 필드 이름.
|
|
153
|
+
value: 넣을 값.
|
|
154
|
+
|
|
155
|
+
Raises:
|
|
156
|
+
UnsupportedOperationException: 값이 규격을 벗어났을 때.
|
|
157
|
+
|
|
158
|
+
Note:
|
|
159
|
+
**역직렬화 경로는 이 검사를 타지 않는다.** ``__init__`` 이 서버 바이트를
|
|
160
|
+
풀 때는 ``self.<필드> = ...`` 로 직접 넣으므로, 구엔진이 지금 규격을
|
|
161
|
+
벗어난 값을 보내도 파싱이 깨지지 않는다. 검사는 **앱이 값을 지정하는
|
|
162
|
+
경로**에만 걸린다.
|
|
163
|
+
|
|
164
|
+
같은 이유로 ``obj.<필드> = 값`` 직접 대입도 검사하지 않는다. 규격을
|
|
165
|
+
미리 확인하려면 세터를 쓰거나 각 클래스 docstring 의 ``스펙:`` 줄을 본다.
|
|
166
|
+
"""
|
|
167
|
+
rule = type(self)._SPEC.get(field)
|
|
168
|
+
if rule is not None:
|
|
169
|
+
check, text = rule
|
|
170
|
+
if not check(value):
|
|
171
|
+
raise UnsupportedOperationException(
|
|
172
|
+
f"[{value}] is an unacceptable value."
|
|
173
|
+
f" (acceptable value range: {text})"
|
|
174
|
+
)
|
|
175
|
+
object.__setattr__(self, field, value)
|
|
176
|
+
|
|
87
177
|
|
|
88
178
|
class DestItem(_AutoAccessor):
|
|
89
179
|
"""분산(밸런스) 채널의 **전송 대상** 하나. 고정폭 바이트 블롭으로 오간다.
|
|
@@ -560,6 +650,24 @@ class ILQueueProperty(_AutoAccessor):
|
|
|
560
650
|
스펙: 서버 응답 길이로 라이브러리가 판단하는 내부 표시 · 앱이 건드리지 않는다.
|
|
561
651
|
"""
|
|
562
652
|
|
|
653
|
+
# 엔진 QueueProperty::Validate() 와 같은 규칙.
|
|
654
|
+
_SPEC = {
|
|
655
|
+
"name": _spec_maxlen(47),
|
|
656
|
+
"triggerProcess": _spec_maxlen(999),
|
|
657
|
+
"remoteQmgrName": _spec_maxlen(47),
|
|
658
|
+
"remoteQueueName": _spec_maxlen(47),
|
|
659
|
+
"xmitQueueName": _spec_maxlen(47),
|
|
660
|
+
"expiredQueue": _spec_maxlen(47),
|
|
661
|
+
"maxDepth": _spec_range(1, 99999999),
|
|
662
|
+
"maxMsgLength": _spec_special_or_min(-1, 1, "unlimited"),
|
|
663
|
+
"incomingDelayDepth": _spec_special_or_min(-1, 1, "disabled"),
|
|
664
|
+
"incomingDelay": _spec_special_or_min(-1, 1, "disabled"),
|
|
665
|
+
"expiry": _spec_min(-1, " (-1 = by message)"),
|
|
666
|
+
"maxMemorySize": _spec_min(0, " (byte)"),
|
|
667
|
+
"sharedMemorySize": _spec_min(0, " (byte)"),
|
|
668
|
+
"numberOfPartition": _spec_range(2, 99),
|
|
669
|
+
}
|
|
670
|
+
|
|
563
671
|
def __init__(
|
|
564
672
|
self,
|
|
565
673
|
name: str | bytes | bytearray | None = None,
|
|
@@ -1212,6 +1320,18 @@ class ILChannelProperty(_AutoAccessor):
|
|
|
1212
1320
|
읽지 않는 옛 필드**라 이 클래스에 없다. 찾지 마라.
|
|
1213
1321
|
"""
|
|
1214
1322
|
|
|
1323
|
+
# 엔진 ChannelProperty::Validate() 와 같은 규칙.
|
|
1324
|
+
_SPEC = {
|
|
1325
|
+
"name": _spec_maxlen(47),
|
|
1326
|
+
"destManagerName": _spec_maxlen(47),
|
|
1327
|
+
"destManagerIp": _spec_maxlen(127),
|
|
1328
|
+
"xmitQueueName": _spec_maxlen(47),
|
|
1329
|
+
"keyFileName": _spec_maxlen(511),
|
|
1330
|
+
"certFileName": _spec_maxlen(511),
|
|
1331
|
+
"destManagerPort": _spec_range(1025, 65535),
|
|
1332
|
+
"timeout": _spec_special_or_min(-1, 1, "infinite"),
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1215
1335
|
def __init__(
|
|
1216
1336
|
self,
|
|
1217
1337
|
name: str | bytes | bytearray | None = None,
|
|
@@ -1435,14 +1555,16 @@ class ILChannelProperty(_AutoAccessor):
|
|
|
1435
1555
|
"""연결 타임아웃을 설정한다.
|
|
1436
1556
|
|
|
1437
1557
|
Args:
|
|
1438
|
-
sec (int): 타임아웃(**초**). ``-1`` 이면
|
|
1558
|
+
sec (int): 타임아웃(**초**). ``-1`` 이면 무제한, 그 밖에는 **1 이상**.
|
|
1559
|
+
``0`` 은 거부된다.
|
|
1439
1560
|
|
|
1440
1561
|
Raises:
|
|
1441
|
-
UnsupportedOperationException: ``-1`` 미만일 때.
|
|
1562
|
+
UnsupportedOperationException: ``-1`` 도 아니고 1 미만일 때.
|
|
1442
1563
|
"""
|
|
1443
|
-
if sec
|
|
1564
|
+
if sec != -1 and sec < 1:
|
|
1444
1565
|
raise UnsupportedOperationException(
|
|
1445
|
-
f"[{sec}] is an unacceptable value.
|
|
1566
|
+
f"[{sec}] is an unacceptable value."
|
|
1567
|
+
" (acceptable value range: -1 for infinite, or 1 or greater)"
|
|
1446
1568
|
)
|
|
1447
1569
|
self.timeout = sec
|
|
1448
1570
|
|
|
@@ -2366,6 +2488,37 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2366
2488
|
서버가 채우는 읽기 전용 값이다.
|
|
2367
2489
|
"""
|
|
2368
2490
|
|
|
2491
|
+
# 엔진 ManagerProperty::Validate() / Fix() 와 같은 규칙.
|
|
2492
|
+
_SPEC = {
|
|
2493
|
+
"name": _spec_maxlen(47),
|
|
2494
|
+
"port": _spec_range(1025, 65535),
|
|
2495
|
+
"deadLetterQueueName": _spec_maxlen(31),
|
|
2496
|
+
"channelRetryTimeInterval": _spec_range(1, 86400, " (sec)"),
|
|
2497
|
+
"sendTimeout": _spec_range(1, 864000, " (sec)"),
|
|
2498
|
+
"recvWaitTimeout": _spec_range(1, 864000, " (sec)"),
|
|
2499
|
+
"volumeMonitorInterval": _spec_range(1, 864000, " (sec)"),
|
|
2500
|
+
"volumeMonitorSizeLimit": _spec_range(1, 1073741824000, " (byte)"),
|
|
2501
|
+
"subExpiryMinutes": _spec_min(0, " (min)"),
|
|
2502
|
+
"memberExpiryMinutes": _spec_range(0, 9999, " (min)"),
|
|
2503
|
+
"deadSessionMaxCount": _spec_min(0),
|
|
2504
|
+
"deadSessionKeepDuration": _spec_min(0, " (sec)"),
|
|
2505
|
+
"logLevelSystem": _spec_range(0, 7),
|
|
2506
|
+
"logLevelClient": _spec_range(0, 7),
|
|
2507
|
+
"logLevelQueue": _spec_range(0, 7),
|
|
2508
|
+
"logLevelChannel": _spec_range(0, 7),
|
|
2509
|
+
"logLevelTopic": _spec_range(0, 7),
|
|
2510
|
+
"logFileSizeSystem": _spec_range(1048576, 104857600, " (byte)"),
|
|
2511
|
+
"logFileSizeClient": _spec_range(1048576, 104857600, " (byte)"),
|
|
2512
|
+
"logFileSizeQueue": _spec_range(1048576, 104857600, " (byte)"),
|
|
2513
|
+
"logFileSizeChannel": _spec_range(1048576, 104857600, " (byte)"),
|
|
2514
|
+
"logFileSizeTopic": _spec_range(1048576, 104857600, " (byte)"),
|
|
2515
|
+
"logFileCountSystem": _spec_range(1, 999),
|
|
2516
|
+
"logFileCountClient": _spec_range(1, 999),
|
|
2517
|
+
"logFileCountQueue": _spec_range(1, 999),
|
|
2518
|
+
"logFileCountChannel": _spec_range(1, 999),
|
|
2519
|
+
"logFileCountTopic": _spec_range(1, 999),
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2369
2522
|
def __init__(
|
|
2370
2523
|
self,
|
|
2371
2524
|
name: str | bytes | bytearray | None = None,
|
|
@@ -2770,14 +2923,16 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2770
2923
|
:data:`ILC.MIMQ_LOGGER_TYPE_CLIENT`(1) /
|
|
2771
2924
|
:data:`ILC.MIMQ_LOGGER_TYPE_QUEUE`(2) /
|
|
2772
2925
|
:data:`ILC.MIMQ_LOGGER_TYPE_CHANNEL`(3).
|
|
2773
|
-
value (int): 회전 크기(바이트). **1048576(1MB)
|
|
2926
|
+
value (int): 회전 크기(바이트). **1048576(1MB) ~ 104857600(100MB)**
|
|
2927
|
+
이어야 한다.
|
|
2774
2928
|
|
|
2775
2929
|
Raises:
|
|
2776
|
-
UnsupportedOperationException:
|
|
2930
|
+
UnsupportedOperationException: 범위를 벗어나거나 종류가 잘못됐을 때.
|
|
2777
2931
|
"""
|
|
2778
|
-
if value < 1048576:
|
|
2932
|
+
if value < 1048576 or value > 104857600:
|
|
2779
2933
|
raise UnsupportedOperationException(
|
|
2780
|
-
f"[{value}] is an unacceptable value.
|
|
2934
|
+
f"[{value}] is an unacceptable value."
|
|
2935
|
+
" (acceptable value range: 1048576~104857600)"
|
|
2781
2936
|
)
|
|
2782
2937
|
setattr(self, "logFileSize" + self._log_suffix(logger_type), value)
|
|
2783
2938
|
|
|
@@ -2804,17 +2959,44 @@ class ILQmgrProperty(_AutoAccessor):
|
|
|
2804
2959
|
:data:`ILC.MIMQ_LOGGER_TYPE_CLIENT`(1) /
|
|
2805
2960
|
:data:`ILC.MIMQ_LOGGER_TYPE_QUEUE`(2) /
|
|
2806
2961
|
:data:`ILC.MIMQ_LOGGER_TYPE_CHANNEL`(3).
|
|
2807
|
-
value (int): 보관 개수. **1
|
|
2962
|
+
value (int): 보관 개수. **1~999** 여야 한다.
|
|
2808
2963
|
|
|
2809
2964
|
Raises:
|
|
2810
|
-
UnsupportedOperationException:
|
|
2965
|
+
UnsupportedOperationException: 범위를 벗어나거나 종류가 잘못됐을 때.
|
|
2811
2966
|
"""
|
|
2812
|
-
if value < 1:
|
|
2967
|
+
if value < 1 or value > 999:
|
|
2813
2968
|
raise UnsupportedOperationException(
|
|
2814
|
-
f"[{value}] is an unacceptable value. (acceptable value range: 1~)"
|
|
2969
|
+
f"[{value}] is an unacceptable value. (acceptable value range: 1~999)"
|
|
2815
2970
|
)
|
|
2816
2971
|
setattr(self, "logFileCount" + self._log_suffix(logger_type), value)
|
|
2817
2972
|
|
|
2973
|
+
|
|
2974
|
+
# --- camelCase 별칭 -------------------------------------------------
|
|
2975
|
+
# 2인자 로거 접근자는 _AutoAccessor 가 합성하지 못한다(필드 이름이 아니라
|
|
2976
|
+
# 종류를 인자로 받으므로). 자바에는 있는 형태라 명시적으로 붙여 둔다.
|
|
2977
|
+
def getLogLevel(self, logger_type: int) -> int:
|
|
2978
|
+
""":meth:`get_log_level` 의 camelCase 별칭."""
|
|
2979
|
+
return self.get_log_level(logger_type)
|
|
2980
|
+
|
|
2981
|
+
def setLogLevel(self, logger_type: int, value: int) -> None:
|
|
2982
|
+
""":meth:`set_log_level` 의 camelCase 별칭."""
|
|
2983
|
+
self.set_log_level(logger_type, value)
|
|
2984
|
+
|
|
2985
|
+
def getLogFileSize(self, logger_type: int) -> int:
|
|
2986
|
+
""":meth:`get_log_file_size` 의 camelCase 별칭."""
|
|
2987
|
+
return self.get_log_file_size(logger_type)
|
|
2988
|
+
|
|
2989
|
+
def setLogFileSize(self, logger_type: int, value: int) -> None:
|
|
2990
|
+
""":meth:`set_log_file_size` 의 camelCase 별칭."""
|
|
2991
|
+
self.set_log_file_size(logger_type, value)
|
|
2992
|
+
|
|
2993
|
+
def getLogFileCount(self, logger_type: int) -> int:
|
|
2994
|
+
""":meth:`get_log_file_count` 의 camelCase 별칭."""
|
|
2995
|
+
return self.get_log_file_count(logger_type)
|
|
2996
|
+
|
|
2997
|
+
def setLogFileCount(self, logger_type: int, value: int) -> None:
|
|
2998
|
+
""":meth:`set_log_file_count` 의 camelCase 별칭."""
|
|
2999
|
+
self.set_log_file_count(logger_type, value)
|
|
2818
3000
|
def get_log_level_system_string(self) -> str:
|
|
2819
3001
|
"""시스템 로그 레벨을 문자열로 돌려준다.
|
|
2820
3002
|
|
|
@@ -3416,6 +3598,22 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3416
3598
|
스펙: 기본 5 · 범위 1~999 · 단위 개 · 변경 가능/재기동 불필요.
|
|
3417
3599
|
"""
|
|
3418
3600
|
|
|
3601
|
+
# 엔진 ServiceProperty::Validate() 와 같은 규칙.
|
|
3602
|
+
_SPEC = {
|
|
3603
|
+
"name": _spec_maxlen(47),
|
|
3604
|
+
"port": _spec_range(1025, 65535),
|
|
3605
|
+
"hubIp": _spec_maxlen(127),
|
|
3606
|
+
"hubPort": _spec_range(1025, 65535),
|
|
3607
|
+
"timeoutSocketSend": _spec_range(1, 864000, " (sec)"),
|
|
3608
|
+
"timeoutSocketRecv": _spec_range(1, 864000, " (sec)"),
|
|
3609
|
+
"logLevelSystem": _spec_range(0, 7),
|
|
3610
|
+
"logLevelClient": _spec_range(0, 7),
|
|
3611
|
+
"logFileSizeSystem": _spec_range(1048576, 104857600, " (byte)"),
|
|
3612
|
+
"logFileSizeClient": _spec_range(1048576, 104857600, " (byte)"),
|
|
3613
|
+
"logFileCountSystem": _spec_range(1, 999),
|
|
3614
|
+
"logFileCountClient": _spec_range(1, 999),
|
|
3615
|
+
}
|
|
3616
|
+
|
|
3419
3617
|
def __init__(self, ba: bytes | bytearray | None = None) -> None:
|
|
3420
3618
|
"""서비스 속성 객체를 만든다.
|
|
3421
3619
|
|
|
@@ -3622,14 +3820,15 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3622
3820
|
"""소켓 송신 타임아웃을 설정한다.
|
|
3623
3821
|
|
|
3624
3822
|
Args:
|
|
3625
|
-
sec (int): 타임아웃(**초**).
|
|
3823
|
+
sec (int): 타임아웃(**초**). **1~864000**.
|
|
3824
|
+
엔진 rev 3283(TMOGUARD-1) 부터 ``-1``(무제한)과 ``0`` 은 거부된다.
|
|
3626
3825
|
|
|
3627
3826
|
Raises:
|
|
3628
|
-
UnsupportedOperationException:
|
|
3827
|
+
UnsupportedOperationException: 1~864000 을 벗어날 때.
|
|
3629
3828
|
"""
|
|
3630
|
-
if sec <
|
|
3829
|
+
if sec < 1 or sec > 864000:
|
|
3631
3830
|
raise UnsupportedOperationException(
|
|
3632
|
-
f"[{sec}] is an unacceptable value. (acceptable value range:
|
|
3831
|
+
f"[{sec}] is an unacceptable value. (acceptable value range: 1~864000)"
|
|
3633
3832
|
)
|
|
3634
3833
|
self.timeoutSocketSend = sec
|
|
3635
3834
|
|
|
@@ -3637,14 +3836,15 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3637
3836
|
"""소켓 수신 타임아웃을 설정한다.
|
|
3638
3837
|
|
|
3639
3838
|
Args:
|
|
3640
|
-
sec (int): 타임아웃(**초**).
|
|
3839
|
+
sec (int): 타임아웃(**초**). **1~864000**.
|
|
3840
|
+
엔진 rev 3283(TMOGUARD-1) 부터 ``-1``(무제한)과 ``0`` 은 거부된다.
|
|
3641
3841
|
|
|
3642
3842
|
Raises:
|
|
3643
|
-
UnsupportedOperationException:
|
|
3843
|
+
UnsupportedOperationException: 1~864000 을 벗어날 때.
|
|
3644
3844
|
"""
|
|
3645
|
-
if sec <
|
|
3845
|
+
if sec < 1 or sec > 864000:
|
|
3646
3846
|
raise UnsupportedOperationException(
|
|
3647
|
-
f"[{sec}] is an unacceptable value. (acceptable value range:
|
|
3847
|
+
f"[{sec}] is an unacceptable value. (acceptable value range: 1~864000)"
|
|
3648
3848
|
)
|
|
3649
3849
|
self.timeoutSocketRecv = sec
|
|
3650
3850
|
|
|
@@ -3709,14 +3909,16 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3709
3909
|
Args:
|
|
3710
3910
|
logger_type (int): 로거 종류. :data:`ILC.MIMQ_LOGGER_TYPE_SYSTEM`(0) 또는
|
|
3711
3911
|
:data:`ILC.MIMQ_LOGGER_TYPE_CLIENT`(1). 서비스는 이 둘뿐이다.
|
|
3712
|
-
value (int): 회전 크기(바이트). **1048576(1MB)
|
|
3912
|
+
value (int): 회전 크기(바이트). **1048576(1MB) ~ 104857600(100MB)**
|
|
3913
|
+
이어야 한다.
|
|
3713
3914
|
|
|
3714
3915
|
Raises:
|
|
3715
|
-
UnsupportedOperationException:
|
|
3916
|
+
UnsupportedOperationException: 범위를 벗어나거나 종류가 잘못됐을 때.
|
|
3716
3917
|
"""
|
|
3717
|
-
if value < 1048576:
|
|
3918
|
+
if value < 1048576 or value > 104857600:
|
|
3718
3919
|
raise UnsupportedOperationException(
|
|
3719
|
-
f"[{value}] is an unacceptable value.
|
|
3920
|
+
f"[{value}] is an unacceptable value."
|
|
3921
|
+
" (acceptable value range: 1048576~104857600)"
|
|
3720
3922
|
)
|
|
3721
3923
|
setattr(self, "logFileSize" + self._log_suffix(logger_type), value)
|
|
3722
3924
|
|
|
@@ -3739,17 +3941,44 @@ class ILServiceProperty(_AutoAccessor):
|
|
|
3739
3941
|
Args:
|
|
3740
3942
|
logger_type (int): 로거 종류. :data:`ILC.MIMQ_LOGGER_TYPE_SYSTEM`(0) 또는
|
|
3741
3943
|
:data:`ILC.MIMQ_LOGGER_TYPE_CLIENT`(1). 서비스는 이 둘뿐이다.
|
|
3742
|
-
value (int): 보관 개수. **1
|
|
3944
|
+
value (int): 보관 개수. **1~999** 여야 한다.
|
|
3743
3945
|
|
|
3744
3946
|
Raises:
|
|
3745
|
-
UnsupportedOperationException:
|
|
3947
|
+
UnsupportedOperationException: 범위를 벗어나거나 종류가 잘못됐을 때.
|
|
3746
3948
|
"""
|
|
3747
|
-
if value < 1:
|
|
3949
|
+
if value < 1 or value > 999:
|
|
3748
3950
|
raise UnsupportedOperationException(
|
|
3749
|
-
f"[{value}] is an unacceptable value. (acceptable value range: 1~)"
|
|
3951
|
+
f"[{value}] is an unacceptable value. (acceptable value range: 1~999)"
|
|
3750
3952
|
)
|
|
3751
3953
|
setattr(self, "logFileCount" + self._log_suffix(logger_type), value)
|
|
3752
3954
|
|
|
3955
|
+
|
|
3956
|
+
# --- camelCase 별칭 -------------------------------------------------
|
|
3957
|
+
# 2인자 로거 접근자는 _AutoAccessor 가 합성하지 못한다(필드 이름이 아니라
|
|
3958
|
+
# 종류를 인자로 받으므로). 자바에는 있는 형태라 명시적으로 붙여 둔다.
|
|
3959
|
+
def getLogLevel(self, logger_type: int) -> int:
|
|
3960
|
+
""":meth:`get_log_level` 의 camelCase 별칭."""
|
|
3961
|
+
return self.get_log_level(logger_type)
|
|
3962
|
+
|
|
3963
|
+
def setLogLevel(self, logger_type: int, value: int) -> None:
|
|
3964
|
+
""":meth:`set_log_level` 의 camelCase 별칭."""
|
|
3965
|
+
self.set_log_level(logger_type, value)
|
|
3966
|
+
|
|
3967
|
+
def getLogFileSize(self, logger_type: int) -> int:
|
|
3968
|
+
""":meth:`get_log_file_size` 의 camelCase 별칭."""
|
|
3969
|
+
return self.get_log_file_size(logger_type)
|
|
3970
|
+
|
|
3971
|
+
def setLogFileSize(self, logger_type: int, value: int) -> None:
|
|
3972
|
+
""":meth:`set_log_file_size` 의 camelCase 별칭."""
|
|
3973
|
+
self.set_log_file_size(logger_type, value)
|
|
3974
|
+
|
|
3975
|
+
def getLogFileCount(self, logger_type: int) -> int:
|
|
3976
|
+
""":meth:`get_log_file_count` 의 camelCase 별칭."""
|
|
3977
|
+
return self.get_log_file_count(logger_type)
|
|
3978
|
+
|
|
3979
|
+
def setLogFileCount(self, logger_type: int, value: int) -> None:
|
|
3980
|
+
""":meth:`set_log_file_count` 의 camelCase 별칭."""
|
|
3981
|
+
self.set_log_file_count(logger_type, value)
|
|
3753
3982
|
def get_log_level_system_string(self) -> str:
|
|
3754
3983
|
"""시스템 로그 레벨을 문자열로 돌려준다.
|
|
3755
3984
|
|
|
@@ -3860,6 +4089,15 @@ class ILProxyProperty(_AutoAccessor):
|
|
|
3860
4089
|
스펙: 기본 F · 범위 T | F · 변경 불가.
|
|
3861
4090
|
"""
|
|
3862
4091
|
|
|
4092
|
+
# 엔진 ProxyProperty::Validate() 와 같은 규칙.
|
|
4093
|
+
_SPEC = {
|
|
4094
|
+
"name": _spec_maxlen(47),
|
|
4095
|
+
"port": _spec_range(1025, 65535),
|
|
4096
|
+
"destIp": _spec_maxlen(127),
|
|
4097
|
+
"destPort": _spec_range(1025, 65535),
|
|
4098
|
+
"timeout": _spec_min(1, " (sec)"),
|
|
4099
|
+
}
|
|
4100
|
+
|
|
3863
4101
|
def __init__(self, ba: bytes | bytearray | None = None) -> None:
|
|
3864
4102
|
"""프록시 속성 객체를 만든다.
|
|
3865
4103
|
|
|
@@ -4026,6 +4264,16 @@ class ILDiskGuardProperty(_AutoAccessor):
|
|
|
4026
4264
|
스펙: 기본 10 · 범위 1~3600 · 단위 초 · 변경 가능/재기동 불필요.
|
|
4027
4265
|
"""
|
|
4028
4266
|
|
|
4267
|
+
# 엔진 DiskGuardProperty::Validate() 와 같은 규칙(상호 제약은 validate() 가 본다).
|
|
4268
|
+
_SPEC = {
|
|
4269
|
+
"warnPercent": _spec_range(1, 100, " (%)"),
|
|
4270
|
+
"suspendPercent": _spec_range(1, 100, " (%)"),
|
|
4271
|
+
"resumePercent": _spec_range(1, 100, " (%)"),
|
|
4272
|
+
"minFreeMB": _spec_min(0, " (MB)"),
|
|
4273
|
+
"resumeMinFreeMB": _spec_min(0, " (MB)"),
|
|
4274
|
+
"intervalSec": _spec_range(1, 3600, " (sec)"),
|
|
4275
|
+
}
|
|
4276
|
+
|
|
4029
4277
|
def __init__(self, csv: str | None = None) -> None:
|
|
4030
4278
|
"""디스크 가드 설정 객체를 만든다.
|
|
4031
4279
|
|
|
@@ -4257,6 +4505,14 @@ class ILClusterNode(_AutoAccessor):
|
|
|
4257
4505
|
스펙: 기본 "" · 범위 47바이트 이하 문자열 (빈 값 금지, rev 3319+) · 변경 가능/클러스터 정지 필요.
|
|
4258
4506
|
"""
|
|
4259
4507
|
|
|
4508
|
+
# 엔진 ClusterProperty::Validate() 의 노드 검사와 같은 규칙.
|
|
4509
|
+
_SPEC = {
|
|
4510
|
+
"nodeId": _spec_min(1),
|
|
4511
|
+
"host": _spec_maxlen(127),
|
|
4512
|
+
"port": _spec_range(1025, 65535),
|
|
4513
|
+
"qmgrName": _spec_maxlen(47),
|
|
4514
|
+
}
|
|
4515
|
+
|
|
4260
4516
|
def __init__(self, ba: bytes | bytearray | None = None,
|
|
4261
4517
|
qmgr_name: str = "", host: str = "", port: int = 0) -> None:
|
|
4262
4518
|
"""클러스터 노드 객체를 만든다.
|
|
@@ -4471,6 +4727,18 @@ class ILClusterProperty(_AutoAccessor):
|
|
|
4471
4727
|
항목마다 자기 길이만큼 커서를 전진시켜 파싱한다.
|
|
4472
4728
|
"""
|
|
4473
4729
|
|
|
4730
|
+
# 엔진 ClusterProperty::Validate() 와 같은 규칙.
|
|
4731
|
+
_SPEC = {
|
|
4732
|
+
"name": _spec_maxlen(47),
|
|
4733
|
+
"ilccPort": _spec_range(1025, 65535),
|
|
4734
|
+
"priPort": _spec_range(1025, 65535),
|
|
4735
|
+
"secPort": _spec_range(1025, 65535),
|
|
4736
|
+
"witPort": _spec_range(1025, 65535),
|
|
4737
|
+
"heartbeatIntervalMs": _spec_min(100, " (ms)"),
|
|
4738
|
+
"heartbeatMissCount": _spec_range(1, 99),
|
|
4739
|
+
"electionDelayMs": _spec_min(0, " (ms)"),
|
|
4740
|
+
}
|
|
4741
|
+
|
|
4474
4742
|
def __init__(self, ba: bytes | bytearray | None = None,
|
|
4475
4743
|
name: str = "", ilcc_port: int = 0,
|
|
4476
4744
|
is_auto_start: bool = True,
|
|
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
|