MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / xdr_blobBuffer

Function xdr_blobBuffer

src/remote/protocol.cpp:2570–2618  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2568}
2569
2570static bool_t xdr_blobBuffer(RemoteXdr* xdrs, RemBlobBuffer* buff)
2571{
2572 SLONG len;
2573 UCHAR* data;
2574 static const SCHAR filler[4] = { 0, 0, 0, 0 };
2575
2576 switch (xdrs->x_op)
2577 {
2578 case XDR_ENCODE:
2579 len = buff->getCount();
2580 if (!xdr_long(xdrs, &len))
2581 return FALSE;
2582
2583 data = buff->begin();
2584 if (len && !xdrs->x_putbytes(reinterpret_cast<const SCHAR*>(data), len))
2585 return FALSE;
2586
2587 len = (4 - len) & 3;
2588 if (len)
2589 return xdrs->x_putbytes(filler, len);
2590
2591 return TRUE;
2592
2593 case XDR_DECODE:
2594 if (!xdr_long(xdrs, &len))
2595 return FALSE;
2596
2597 if (len)
2598 {
2599 data = buff->getBuffer(len);
2600 if (!xdrs->x_getbytes(reinterpret_cast<SCHAR*>(data), len))
2601 return FALSE;
2602 }
2603
2604 len = (4 - len) & 3;
2605 if (len)
2606 {
2607 SCHAR trash[4];
2608 return xdrs->x_getbytes(trash, len);
2609 }
2610
2611 return TRUE;
2612
2613 case XDR_FREE:
2614 return TRUE;
2615 }
2616
2617 return FALSE;
2618}

Callers 1

xdr_protocolFunction · 0.85

Calls 6

xdr_longFunction · 0.85
getCountMethod · 0.45
beginMethod · 0.45
x_putbytesMethod · 0.45
getBufferMethod · 0.45
x_getbytesMethod · 0.45

Tested by

no test coverage detected