10
10
*
11
11
*
12
12
* IDENTIFICATION
13
- * $PostgreSQL: pgsql/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c,v 1.2 2010/01/20 11:58:44 heikki Exp $
13
+ * $PostgreSQL: pgsql/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c,v 1.3 2010/02/03 09:47:19 heikki Exp $
14
14
*
15
15
*-------------------------------------------------------------------------
16
16
*/
@@ -48,8 +48,8 @@ static char *recvBuf = NULL;
48
48
49
49
/* Prototypes for interface functions */
50
50
static bool libpqrcv_connect (char * conninfo , XLogRecPtr startpoint );
51
- static bool libpqrcv_receive (int timeout , XLogRecPtr * recptr , char * * buffer ,
52
- int * len );
51
+ static bool libpqrcv_receive (int timeout , unsigned char * type ,
52
+ char * * buffer , int * len );
53
53
static void libpqrcv_disconnect (void );
54
54
55
55
/* Prototypes for private functions */
@@ -236,13 +236,13 @@ libpqrcv_disconnect(void)
236
236
}
237
237
238
238
/*
239
- * Receive any WAL records available from XLOG stream, blocking for
239
+ * Receive a message available from XLOG stream, blocking for
240
240
* maximum of 'timeout' ms.
241
241
*
242
242
* Returns:
243
243
*
244
- * True if data was received. *recptr , *buffer and *len are set to
245
- * the WAL location of the received data, buffer holding it, and length,
244
+ * True if data was received. *type , *buffer and *len are set to
245
+ * the type of the received data, buffer holding it, and length,
246
246
* respectively.
247
247
*
248
248
* False if no data was available within timeout, or wait was interrupted
@@ -254,7 +254,7 @@ libpqrcv_disconnect(void)
254
254
* ereports on error.
255
255
*/
256
256
static bool
257
- libpqrcv_receive (int timeout , XLogRecPtr * recptr , char * * buffer , int * len )
257
+ libpqrcv_receive (int timeout , unsigned char * type , char * * buffer , int * len )
258
258
{
259
259
int rawlen ;
260
260
@@ -275,14 +275,14 @@ libpqrcv_receive(int timeout, XLogRecPtr *recptr, char **buffer, int *len)
275
275
276
276
if (PQconsumeInput (streamConn ) == 0 )
277
277
ereport (ERROR ,
278
- (errmsg ("could not read xlog records : %s" ,
278
+ (errmsg ("could not receive data from XLOG stream : %s" ,
279
279
PQerrorMessage (streamConn ))));
280
280
}
281
281
justconnected = false;
282
282
283
283
/* Receive CopyData message */
284
284
rawlen = PQgetCopyData (streamConn , & recvBuf , 1 );
285
- if (rawlen == 0 ) /* no records available yet, then return */
285
+ if (rawlen == 0 ) /* no data available yet, then return */
286
286
return false;
287
287
if (rawlen == -1 ) /* end-of-streaming or error */
288
288
{
@@ -297,22 +297,18 @@ libpqrcv_receive(int timeout, XLogRecPtr *recptr, char **buffer, int *len)
297
297
}
298
298
PQclear (res );
299
299
ereport (ERROR ,
300
- (errmsg ("could not read xlog records : %s" ,
300
+ (errmsg ("could not receive data from XLOG stream : %s" ,
301
301
PQerrorMessage (streamConn ))));
302
302
}
303
303
if (rawlen < -1 )
304
304
ereport (ERROR ,
305
- (errmsg ("could not read xlog records : %s" ,
305
+ (errmsg ("could not receive data from XLOG stream : %s" ,
306
306
PQerrorMessage (streamConn ))));
307
307
308
- if (rawlen < sizeof (XLogRecPtr ))
309
- ereport (ERROR ,
310
- (errmsg ("invalid WAL message received from primary" )));
311
-
312
- /* Return received WAL records to caller */
313
- * recptr = * ((XLogRecPtr * ) recvBuf );
314
- * buffer = recvBuf + sizeof (XLogRecPtr );
315
- * len = rawlen - sizeof (XLogRecPtr );
308
+ /* Return received messages to caller */
309
+ * type = * ((unsigned char * ) recvBuf );
310
+ * buffer = recvBuf + sizeof (* type );
311
+ * len = rawlen - sizeof (* type );
316
312
317
313
return true;
318
314
}
0 commit comments