Skip to content

Commit f6cc774

Browse files
committed
PHPC-1893: Server heartbeat events
1 parent 19d29f6 commit f6cc774

12 files changed

+724
-23
lines changed

config.m4

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,8 @@ if test "$PHP_MONGODB" != "no"; then
177177
src/MongoDB/Monitoring/ServerChangedEvent.c \
178178
src/MongoDB/Monitoring/ServerClosedEvent.c \
179179
src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c \
180+
src/MongoDB/Monitoring/ServerHeartbeatStartedEvent.c \
181+
src/MongoDB/Monitoring/ServerHeartbeatSucceededEvent.c \
180182
src/MongoDB/Monitoring/ServerOpeningEvent.c \
181183
src/MongoDB/Monitoring/TopologyChangedEvent.c \
182184
src/MongoDB/Monitoring/TopologyClosedEvent.c \

config.w32

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ if (PHP_MONGODB != "no") {
122122
MONGODB_ADD_SOURCES("/src/BSON", "Binary.c BinaryInterface.c DBPointer.c Decimal128.c Decimal128Interface.c Int64.c Javascript.c JavascriptInterface.c MaxKey.c MaxKeyInterface.c MinKey.c MinKeyInterface.c ObjectId.c ObjectIdInterface.c Persistable.c Regex.c RegexInterface.c Serializable.c Symbol.c Timestamp.c TimestampInterface.c Type.c Undefined.c Unserializable.c UTCDateTime.c UTCDateTimeInterface.c functions.c");
123123
MONGODB_ADD_SOURCES("/src/MongoDB", "BulkWrite.c ClientEncryption.c Command.c Cursor.c CursorId.c CursorInterface.c Manager.c Query.c ReadConcern.c ReadPreference.c Server.c ServerApi.c ServerDescription.c Session.c TopologyDescription.c WriteConcern.c WriteConcernError.c WriteError.c WriteResult.c");
124124
MONGODB_ADD_SOURCES("/src/MongoDB/Exception", "AuthenticationException.c BulkWriteException.c CommandException.c ConnectionException.c ConnectionTimeoutException.c EncryptionException.c Exception.c ExecutionTimeoutException.c InvalidArgumentException.c LogicException.c RuntimeException.c ServerException.c SSLConnectionException.c UnexpectedValueException.c WriteException.c");
125-
MONGODB_ADD_SOURCES("/src/MongoDB/Monitoring", "CommandFailedEvent.c CommandStartedEvent.c CommandSubscriber.c CommandSucceededEvent.c SDAMSubscriber.c Subscriber.c ServerChangedEvent.c ServerClosedEvent.c ServerHeartbeatFailedEvent.c ServerOpeningEvent.c TopologyChangedEvent.c TopologyClosedEvent.c TopologyOpeningEvent.c functions.c");
125+
MONGODB_ADD_SOURCES("/src/MongoDB/Monitoring", "CommandFailedEvent.c CommandStartedEvent.c CommandSubscriber.c CommandSucceededEvent.c SDAMSubscriber.c Subscriber.c ServerChangedEvent.c ServerClosedEvent.c ServerHeartbeatFailedEvent.c ServerHeartbeatStartedEvent.c ServerHeartbeatSucceededEvent.c ServerOpeningEvent.c TopologyChangedEvent.c TopologyClosedEvent.c TopologyOpeningEvent.c functions.c");
126126
MONGODB_ADD_SOURCES("/src/libmongoc/src/common", PHP_MONGODB_COMMON_SOURCES);
127127
MONGODB_ADD_SOURCES("/src/libmongoc/src/libbson/src/bson", PHP_MONGODB_BSON_SOURCES);
128128
MONGODB_ADD_SOURCES("/src/libmongoc/src/libbson/src/jsonsl", PHP_MONGODB_JSONSL_SOURCES);

php_phongo.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3720,6 +3720,8 @@ PHP_MINIT_FUNCTION(mongodb)
37203720
php_phongo_serverchangedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
37213721
php_phongo_serverclosedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
37223722
php_phongo_serverheartbeatfailedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
3723+
php_phongo_serverheartbeatstartedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
3724+
php_phongo_serverheartbeatsucceededevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
37233725
php_phongo_serveropeningevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
37243726
php_phongo_topologychangedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);
37253727
php_phongo_topologyclosedevent_init_ce(INIT_FUNC_ARGS_PASSTHRU);

php_phongo_classes.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,14 @@ static inline php_phongo_serverheartbeatfailedevent_t* php_serverheartbeatfailed
171171
{
172172
return (php_phongo_serverheartbeatfailedevent_t*) ((char*) obj - XtOffsetOf(php_phongo_serverheartbeatfailedevent_t, std));
173173
}
174+
static inline php_phongo_serverheartbeatstartedevent_t* php_serverheartbeatstartedevent_fetch_object(zend_object* obj)
175+
{
176+
return (php_phongo_serverheartbeatstartedevent_t*) ((char*) obj - XtOffsetOf(php_phongo_serverheartbeatstartedevent_t, std));
177+
}
178+
static inline php_phongo_serverheartbeatsucceededevent_t* php_serverheartbeatsucceededevent_fetch_object(zend_object* obj)
179+
{
180+
return (php_phongo_serverheartbeatsucceededevent_t*) ((char*) obj - XtOffsetOf(php_phongo_serverheartbeatsucceededevent_t, std));
181+
}
174182
static inline php_phongo_serveropeningevent_t* php_serveropeningevent_fetch_object(zend_object* obj)
175183
{
176184
return (php_phongo_serveropeningevent_t*) ((char*) obj - XtOffsetOf(php_phongo_serveropeningevent_t, std));
@@ -225,6 +233,8 @@ static inline php_phongo_topologyopeningevent_t* php_topologyopeningevent_fetch_
225233
#define Z_SERVERCHANGEDEVENT_OBJ_P(zv) (php_serverchangedevent_fetch_object(Z_OBJ_P(zv)))
226234
#define Z_SERVERCLOSEDEVENT_OBJ_P(zv) (php_serverclosedevent_fetch_object(Z_OBJ_P(zv)))
227235
#define Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(zv) (php_serverheartbeatfailedevent_fetch_object(Z_OBJ_P(zv)))
236+
#define Z_SERVERHEARTBEATSTARTEDEVENT_OBJ_P(zv) (php_serverheartbeatstartedevent_fetch_object(Z_OBJ_P(zv)))
237+
#define Z_SERVERHEARTBEATSUCCEEDEDEVENT_OBJ_P(zv) (php_serverheartbeatsucceededevent_fetch_object(Z_OBJ_P(zv)))
228238
#define Z_SERVEROPENINGEVENT_OBJ_P(zv) (php_serveropeningevent_fetch_object(Z_OBJ_P(zv)))
229239
#define Z_TOPOLOGYCHANGEDEVENT_OBJ_P(zv) (php_topologychangedevent_fetch_object(Z_OBJ_P(zv)))
230240
#define Z_TOPOLOGYCLOSEDEVENT_OBJ_P(zv) (php_topologyclosedevent_fetch_object(Z_OBJ_P(zv)))
@@ -267,6 +277,8 @@ static inline php_phongo_topologyopeningevent_t* php_topologyopeningevent_fetch_
267277
#define Z_OBJ_SERVERCHANGEDEVENT(zo) (php_serverchangedevent_fetch_object(zo))
268278
#define Z_OBJ_SERVERCLOSEDEVENT(zo) (php_serverclosedevent_fetch_object(zo))
269279
#define Z_OBJ_SERVERHEARTBEATFAILEDEVENT(zo) (php_serverheartbeatfailedevent_fetch_object(zo))
280+
#define Z_OBJ_SERVERHEARTBEATSTARTEDEVENT(zo) (php_serverheartbeatstartedevent_fetch_object(zo))
281+
#define Z_OBJ_SERVERHEARTBEATSUCCEEDEDEVENT(zo) (php_serverheartbeatsucceededevent_fetch_object(zo))
270282
#define Z_OBJ_SERVEROPENINGEVENT(zo) (php_serveropeningevent_fetch_object(zo))
271283
#define Z_OBJ_TOPOLOGYCHANGEDEVENT(zo) (php_topologychangedevent_fetch_object(zo))
272284
#define Z_OBJ_TOPOLOGYCLOSEDEVENT(zo) (php_topologyclosedevent_fetch_object(zo))
@@ -346,6 +358,8 @@ extern zend_class_entry* php_phongo_subscriber_ce;
346358
extern zend_class_entry* php_phongo_serverchangedevent_ce;
347359
extern zend_class_entry* php_phongo_serverclosedevent_ce;
348360
extern zend_class_entry* php_phongo_serverheartbeatfailedevent_ce;
361+
extern zend_class_entry* php_phongo_serverheartbeatstartedevent_ce;
362+
extern zend_class_entry* php_phongo_serverheartbeatsucceededevent_ce;
349363
extern zend_class_entry* php_phongo_serveropeningevent_ce;
350364
extern zend_class_entry* php_phongo_topologychangedevent_ce;
351365
extern zend_class_entry* php_phongo_topologyclosedevent_ce;
@@ -425,6 +439,8 @@ extern void php_phongo_subscriber_init_ce(INIT_FUNC_ARGS);
425439
extern void php_phongo_serverchangedevent_init_ce(INIT_FUNC_ARGS);
426440
extern void php_phongo_serverclosedevent_init_ce(INIT_FUNC_ARGS);
427441
extern void php_phongo_serverheartbeatfailedevent_init_ce(INIT_FUNC_ARGS);
442+
extern void php_phongo_serverheartbeatstartedevent_init_ce(INIT_FUNC_ARGS);
443+
extern void php_phongo_serverheartbeatsucceededevent_init_ce(INIT_FUNC_ARGS);
428444
extern void php_phongo_serveropeningevent_init_ce(INIT_FUNC_ARGS);
429445
extern void php_phongo_topologychangedevent_init_ce(INIT_FUNC_ARGS);
430446
extern void php_phongo_topologyclosedevent_init_ce(INIT_FUNC_ARGS);

php_phongo_structs.h

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -307,14 +307,30 @@ typedef struct {
307307
} php_phongo_serverclosedevent_t;
308308

309309
typedef struct {
310-
bool awaited;
311-
int64_t duration;
312-
bson_error_t* error;
313-
char host[BSON_HOST_NAME_MAX + 1];
314-
uint16_t port;
315-
zend_object std;
310+
bool awaited;
311+
uint64_t duration_micros;
312+
zval z_error;
313+
char host[BSON_HOST_NAME_MAX + 1];
314+
uint16_t port;
315+
zend_object std;
316316
} php_phongo_serverheartbeatfailedevent_t;
317317

318+
typedef struct {
319+
bool awaited;
320+
char host[BSON_HOST_NAME_MAX + 1];
321+
uint16_t port;
322+
zend_object std;
323+
} php_phongo_serverheartbeatstartedevent_t;
324+
325+
typedef struct {
326+
bool awaited;
327+
uint64_t duration_micros;
328+
char host[BSON_HOST_NAME_MAX + 1];
329+
uint16_t port;
330+
bson_t* reply;
331+
zend_object std;
332+
} php_phongo_serverheartbeatsucceededevent_t;
333+
318334
typedef struct {
319335
bson_oid_t topology_id;
320336
char host[BSON_HOST_NAME_MAX + 1];

src/MongoDB/Monitoring/ServerHeartbeatFailedEvent.c

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,26 @@
2626

2727
zend_class_entry* php_phongo_serverheartbeatfailedevent_ce;
2828

29-
/* {{{ proto boolean ServerHeartbeatFailedEvent::getAwaited()
30-
Returns whether this event came from an awaitable hello */
31-
static PHP_METHOD(ServerHeartbeatFailedEvent, getAwaited)
29+
/* {{{ proto integer ServerHeartbeatFailedEvent::getDurationMicros()
30+
Returns this event's duration in microseconds */
31+
static PHP_METHOD(ServerHeartbeatFailedEvent, getDurationMicros)
3232
{
3333
php_phongo_serverheartbeatfailedevent_t* intern = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(getThis());
3434

3535
PHONGO_PARSE_PARAMETERS_NONE();
3636

37-
RETVAL_BOOL(intern->awaited);
37+
RETVAL_LONG(intern->duration_micros);
3838
} /* }}} */
3939

40-
/* {{{ proto integer ServerHeartbeatFailedEvent::getDuration()
41-
Returns this event's duration in microseconds */
42-
static PHP_METHOD(ServerHeartbeatFailedEvent, getDuration)
40+
/* {{{ proto Exception ServerHeartbeatFailedEvent::getError()
41+
Returns the error associated with the event */
42+
PHP_METHOD(ServerHeartbeatFailedEvent, getError)
4343
{
4444
php_phongo_serverheartbeatfailedevent_t* intern = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(getThis());
4545

4646
PHONGO_PARSE_PARAMETERS_NONE();
4747

48-
RETVAL_LONG(intern->duration);
48+
RETURN_ZVAL(&intern->z_error, 1, 0);
4949
} /* }}} */
5050

5151
/* {{{ proto string ServerHeartbeatFailedEvent::getHost()
@@ -70,17 +70,29 @@ static PHP_METHOD(ServerHeartbeatFailedEvent, getPort)
7070
RETVAL_LONG(intern->port);
7171
} /* }}} */
7272

73+
/* {{{ proto boolean ServerHeartbeatFailedEvent::isAwaited()
74+
Returns whether this event came from an awaitable hello */
75+
static PHP_METHOD(ServerHeartbeatFailedEvent, isAwaited)
76+
{
77+
php_phongo_serverheartbeatfailedevent_t* intern = Z_SERVERHEARTBEATFAILEDEVENT_OBJ_P(getThis());
78+
79+
PHONGO_PARSE_PARAMETERS_NONE();
80+
81+
RETVAL_BOOL(intern->awaited);
82+
} /* }}} */
83+
7384
/* {{{ MongoDB\Driver\Monitoring\ServerHeartbeatFailedEvent function entries */
7485
ZEND_BEGIN_ARG_INFO_EX(ai_ServerHeartbeatFailedEvent_void, 0, 0, 0)
7586
ZEND_END_ARG_INFO()
7687

7788
static zend_function_entry php_phongo_serverheartbeatfailedevent_me[] = {
7889
/* clang-format off */
7990
ZEND_NAMED_ME(__construct, PHP_FN(MongoDB_disabled___construct), ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)
80-
PHP_ME(ServerHeartbeatFailedEvent, getAwaited, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
81-
PHP_ME(ServerHeartbeatFailedEvent, getDuration, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
91+
PHP_ME(ServerHeartbeatFailedEvent, getDurationMicros, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
92+
PHP_ME(ServerHeartbeatFailedEvent, getError, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
8293
PHP_ME(ServerHeartbeatFailedEvent, getHost, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
8394
PHP_ME(ServerHeartbeatFailedEvent, getPort, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
95+
PHP_ME(ServerHeartbeatFailedEvent, isAwaited, ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
8496
ZEND_NAMED_ME(__wakeup, PHP_FN(MongoDB_disabled___wakeup), ai_ServerHeartbeatFailedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
8597
PHP_FE_END
8698
/* clang-format on */
@@ -95,6 +107,10 @@ static void php_phongo_serverheartbeatfailedevent_free_object(zend_object* objec
95107
php_phongo_serverheartbeatfailedevent_t* intern = Z_OBJ_SERVERHEARTBEATFAILEDEVENT(object);
96108

97109
zend_object_std_dtor(&intern->std);
110+
111+
if (!Z_ISUNDEF(intern->z_error)) {
112+
zval_ptr_dtor(&intern->z_error);
113+
}
98114
} /* }}} */
99115

100116
static zend_object* php_phongo_serverheartbeatfailedevent_create_object(zend_class_entry* class_type) /* {{{ */
@@ -118,12 +134,15 @@ static HashTable* php_phongo_serverheartbeatfailedevent_get_debug_info(phongo_co
118134

119135
intern = Z_OBJ_SERVERHEARTBEATFAILEDEVENT(PHONGO_COMPAT_GET_OBJ(object));
120136
*is_temp = 1;
121-
array_init_size(&retval, 4);
137+
array_init_size(&retval, 5);
122138

123139
ADD_ASSOC_STRING(&retval, "host", intern->host);
124140
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
125141
ADD_ASSOC_BOOL_EX(&retval, "awaited", intern->awaited);
126-
ADD_ASSOC_LONG_EX(&retval, "duration", intern->duration);
142+
ADD_ASSOC_INT64(&retval, "durationMicros", intern->duration_micros);
143+
144+
ADD_ASSOC_ZVAL_EX(&retval, "error", &intern->z_error);
145+
Z_ADDREF(intern->z_error);
127146

128147
return Z_ARRVAL(retval);
129148
} /* }}} */
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
/*
2+
* Copyright 2021-present MongoDB, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
#include <php.h>
18+
#include <Zend/zend_interfaces.h>
19+
20+
#ifdef HAVE_CONFIG_H
21+
#include "config.h"
22+
#endif
23+
24+
#include "phongo_compat.h"
25+
#include "php_phongo.h"
26+
27+
zend_class_entry* php_phongo_serverheartbeatstartedevent_ce;
28+
29+
/* {{{ proto string ServerHeartbeatStartedEvent::getHost()
30+
Returns this event's host */
31+
static PHP_METHOD(ServerHeartbeatStartedEvent, getHost)
32+
{
33+
php_phongo_serverheartbeatstartedevent_t* intern = Z_SERVERHEARTBEATSTARTEDEVENT_OBJ_P(getThis());
34+
35+
PHONGO_PARSE_PARAMETERS_NONE();
36+
37+
RETVAL_STRING(intern->host);
38+
} /* }}} */
39+
40+
/* {{{ proto integer ServerHeartbeatStartedEvent::getPort()
41+
Returns this event's port */
42+
static PHP_METHOD(ServerHeartbeatStartedEvent, getPort)
43+
{
44+
php_phongo_serverheartbeatstartedevent_t* intern = Z_SERVERHEARTBEATSTARTEDEVENT_OBJ_P(getThis());
45+
46+
PHONGO_PARSE_PARAMETERS_NONE();
47+
48+
RETVAL_LONG(intern->port);
49+
} /* }}} */
50+
51+
/* {{{ proto boolean ServerHeartbeatStartedEvent::isAwaited()
52+
Returns whether this event came from an awaitable hello */
53+
static PHP_METHOD(ServerHeartbeatStartedEvent, isAwaited)
54+
{
55+
php_phongo_serverheartbeatstartedevent_t* intern = Z_SERVERHEARTBEATSTARTEDEVENT_OBJ_P(getThis());
56+
57+
PHONGO_PARSE_PARAMETERS_NONE();
58+
59+
RETVAL_BOOL(intern->awaited);
60+
} /* }}} */
61+
62+
/* {{{ MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent function entries */
63+
ZEND_BEGIN_ARG_INFO_EX(ai_ServerHeartbeatStartedEvent_void, 0, 0, 0)
64+
ZEND_END_ARG_INFO()
65+
66+
static zend_function_entry php_phongo_serverheartbeatstartedevent_me[] = {
67+
/* clang-format off */
68+
ZEND_NAMED_ME(__construct, PHP_FN(MongoDB_disabled___construct), ai_ServerHeartbeatStartedEvent_void, ZEND_ACC_PRIVATE | ZEND_ACC_FINAL)
69+
PHP_ME(ServerHeartbeatStartedEvent, getHost, ai_ServerHeartbeatStartedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
70+
PHP_ME(ServerHeartbeatStartedEvent, getPort, ai_ServerHeartbeatStartedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
71+
PHP_ME(ServerHeartbeatStartedEvent, isAwaited, ai_ServerHeartbeatStartedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
72+
ZEND_NAMED_ME(__wakeup, PHP_FN(MongoDB_disabled___wakeup), ai_ServerHeartbeatStartedEvent_void, ZEND_ACC_PUBLIC | ZEND_ACC_FINAL)
73+
PHP_FE_END
74+
/* clang-format on */
75+
};
76+
/* }}} */
77+
78+
/* {{{ MongoDB\Driver\Monitoring\ServerHeartbeatStartedEvent object handlers */
79+
static zend_object_handlers php_phongo_handler_serverheartbeatstartedevent;
80+
81+
static void php_phongo_serverheartbeatstartedevent_free_object(zend_object* object) /* {{{ */
82+
{
83+
php_phongo_serverheartbeatstartedevent_t* intern = Z_OBJ_SERVERHEARTBEATSTARTEDEVENT(object);
84+
85+
zend_object_std_dtor(&intern->std);
86+
} /* }}} */
87+
88+
static zend_object* php_phongo_serverheartbeatstartedevent_create_object(zend_class_entry* class_type) /* {{{ */
89+
{
90+
php_phongo_serverheartbeatstartedevent_t* intern = NULL;
91+
92+
intern = PHONGO_ALLOC_OBJECT_T(php_phongo_serverheartbeatstartedevent_t, class_type);
93+
94+
zend_object_std_init(&intern->std, class_type);
95+
object_properties_init(&intern->std, class_type);
96+
97+
intern->std.handlers = &php_phongo_handler_serverheartbeatstartedevent;
98+
99+
return &intern->std;
100+
} /* }}} */
101+
102+
static HashTable* php_phongo_serverheartbeatstartedevent_get_debug_info(phongo_compat_object_handler_type* object, int* is_temp) /* {{{ */
103+
{
104+
php_phongo_serverheartbeatstartedevent_t* intern;
105+
zval retval = ZVAL_STATIC_INIT;
106+
107+
intern = Z_OBJ_SERVERHEARTBEATSTARTEDEVENT(PHONGO_COMPAT_GET_OBJ(object));
108+
*is_temp = 1;
109+
array_init_size(&retval, 4);
110+
111+
ADD_ASSOC_STRING(&retval, "host", intern->host);
112+
ADD_ASSOC_LONG_EX(&retval, "port", intern->port);
113+
ADD_ASSOC_BOOL_EX(&retval, "awaited", intern->awaited);
114+
115+
return Z_ARRVAL(retval);
116+
} /* }}} */
117+
/* }}} */
118+
119+
void php_phongo_serverheartbeatstartedevent_init_ce(INIT_FUNC_ARGS) /* {{{ */
120+
{
121+
zend_class_entry ce;
122+
(void) type;
123+
(void) module_number;
124+
125+
INIT_NS_CLASS_ENTRY(ce, "MongoDB\\Driver\\Monitoring", "ServerHeartbeatStartedEvent", php_phongo_serverheartbeatstartedevent_me);
126+
php_phongo_serverheartbeatstartedevent_ce = zend_register_internal_class(&ce);
127+
php_phongo_serverheartbeatstartedevent_ce->create_object = php_phongo_serverheartbeatstartedevent_create_object;
128+
PHONGO_CE_FINAL(php_phongo_serverheartbeatstartedevent_ce);
129+
PHONGO_CE_DISABLE_SERIALIZATION(php_phongo_serverheartbeatstartedevent_ce);
130+
131+
memcpy(&php_phongo_handler_serverheartbeatstartedevent, phongo_get_std_object_handlers(), sizeof(zend_object_handlers));
132+
php_phongo_handler_serverheartbeatstartedevent.get_debug_info = php_phongo_serverheartbeatstartedevent_get_debug_info;
133+
php_phongo_handler_serverheartbeatstartedevent.free_obj = php_phongo_serverheartbeatstartedevent_free_object;
134+
php_phongo_handler_serverheartbeatstartedevent.offset = XtOffsetOf(php_phongo_serverheartbeatstartedevent_t, std);
135+
136+
return;
137+
} /* }}} */
138+
139+
/*
140+
* Local variables:
141+
* tab-width: 4
142+
* c-basic-offset: 4
143+
* End:
144+
* vim600: noet sw=4 ts=4 fdm=marker
145+
* vim<600: noet sw=4 ts=4
146+
*/

0 commit comments

Comments
 (0)