BLPAPI C++ 3.25.12
Loading...
Searching...
No Matches
blpapi_request.h
Go to the documentation of this file.
1/* Copyright 2012. Bloomberg Finance L.P.
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to
5 * deal in the Software without restriction, including without limitation the
6 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7 * sell copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions: The above
9 * copyright notice and this permission notice shall be included in all copies
10 * or substantial portions of the Software.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18 * IN THE SOFTWARE.
19 */
20
28#ifndef INCLUDED_BLPAPI_REQUEST
29#define INCLUDED_BLPAPI_REQUEST
30
61#include <blpapi_defs.h>
62#include <blpapi_deprecate.h>
63#include <blpapi_element.h>
64#include <blpapi_exception.h>
65#include <blpapi_name.h>
66#include <blpapi_types.h>
67
68struct blpapi_Request;
69typedef struct blpapi_Request blpapi_Request_t;
70
71#ifdef __cplusplus
72extern "C" {
73#endif
74
77
80
83 blpapi_Request_t *request, blpapi_CorrelationId_t *correlationId);
84
87 const blpapi_Request_t *request, const char **requestId);
88
89#ifdef __cplusplus
90}
91
92#include <cassert>
93#include <cstddef>
94#include <iosfwd>
95#include <string>
96
104namespace BloombergLP {
105namespace blpapi {
106
107class RequestRef;
108
147class Request {
148
149 blpapi_Request_t *d_handle;
150 Element d_elements;
151
153 Request& operator=(const Request& rhs);
154
155 public:
157
158 Request(RequestRef src);
159 Request(Request& src);
165 ~Request();
170 operator RequestRef();
171
172 BLPAPI_DEPRECATE_STRING_NAME void set(const char *name, bool value);
177 BLPAPI_DEPRECATE_STRING_NAME void set(const char *name, char value);
182 BLPAPI_DEPRECATE_STRING_NAME void set(const char *name, Int32 value);
187 BLPAPI_DEPRECATE_STRING_NAME void set(const char *name, Int64 value);
192 BLPAPI_DEPRECATE_STRING_NAME void set(const char *name, Float32 value);
197 BLPAPI_DEPRECATE_STRING_NAME void set(const char *name, Float64 value);
202 BLPAPI_DEPRECATE_STRING_NAME void set(
203 const char *name, const Datetime& value);
208 BLPAPI_DEPRECATE_STRING_NAME void set(const char *name, const char *value);
213 void set(const Name& name, bool value);
218 void set(const Name& name, char value);
223 void set(const Name& name, Int32 value);
228 void set(const Name& name, Int64 value);
233 void set(const Name& name, Float32 value);
238 void set(const Name& name, Float64 value);
243 void set(const Name& name, const Datetime& value);
248 void set(const Name& name, const char *value);
253 void set(const Name& name, const std::string& value);
258 void set(const Name& name, const void *value, std::size_t length);
263 template <typename BYTES,
264 typename std::enable_if<IsByteSequence<BYTES>::value, bool>::type
265 = true>
266 void set(const Name& name, const BYTES& value);
271 BLPAPI_DEPRECATE_STRING_NAME void append(const char *name, bool value);
276 BLPAPI_DEPRECATE_STRING_NAME void append(const char *name, char value);
281 BLPAPI_DEPRECATE_STRING_NAME void append(const char *name, Int32 value);
286 BLPAPI_DEPRECATE_STRING_NAME void append(const char *name, Int64 value);
291 BLPAPI_DEPRECATE_STRING_NAME void append(const char *name, Float32 value);
296 BLPAPI_DEPRECATE_STRING_NAME void append(const char *name, Float64 value);
301 BLPAPI_DEPRECATE_STRING_NAME void append(
302 const char *name, const Datetime& value);
307 BLPAPI_DEPRECATE_STRING_NAME void append(
308 const char *name, const char *value);
313 void append(const Name& name, bool value);
318 void append(const Name& name, char value);
323 void append(const Name& name, Int32 value);
328 void append(const Name& name, Int64 value);
333 void append(const Name& name, Float32 value);
338 void append(const Name& name, Float64 value);
343 void append(const Name& name, const Datetime& value);
348 void append(const Name& name, const char *value);
353 void append(const Name& name, const std::string& value);
363 BLPAPI_DEPRECATE_STRING_NAME Element getElement(const char *name);
368 Element getElement(const Name& name);
373 BLPAPI_DEPRECATE_STRING_NAME const Element getElement(
374 const char *name) const;
379 const Element getElement(const Name& name) const;
384 const Element asElement() const;
389 void fromJson(const char *json);
399 void fromJson(const std::string& json);
411 const char *getRequestId() const;
423 blpapi_Request_t *handle() const;
424
425 std::ostream& print(
426 std::ostream& stream, int level = 0, int spacesPerLevel = 4) const;
439};
440
444std::ostream& operator<<(std::ostream& stream, const Request& request);
458 Request *d_request_p;
459
460 public:
461 RequestRef(Request *request_p);
462 Request *ptr() const;
463 Request *operator->() const;
464};
465
466//=============================================================================
467// INLINE FUNCTION DEFINITIONS
468//=============================================================================
469
470// -------------
471// class Request
472// -------------
473
475{
476 d_handle = newHandle;
477 if (newHandle) {
478 d_elements.rebind(blpapi_Request_elements(newHandle));
479 }
480}
481
483{
484 Request *src = ref.ptr();
485 assert(src);
486 d_handle = src->d_handle;
487 d_elements = src->d_elements;
488 src->d_handle = 0;
489 src->d_elements.rebind(0);
490}
491
493{
494 d_handle = src.d_handle;
495 d_elements = src.d_elements;
496 src.d_handle = 0;
497 src.d_elements.rebind(0);
498}
499
501{
502 if (d_handle) {
503 blpapi_Request_destroy(d_handle);
504 }
505}
506
507inline Request::operator RequestRef() { return RequestRef(this); }
508
509inline void Request::set(const char *element, bool value)
510{
511 d_elements.setElement(Name(element), value);
512}
513
514inline void Request::set(const char *element, char value)
515{
516 d_elements.setElement(Name(element), value);
517}
518
519inline void Request::set(const char *element, Int32 value)
520{
521 d_elements.setElement(Name(element), value);
522}
523
524inline void Request::set(const char *element, Int64 value)
525{
526 d_elements.setElement(Name(element), value);
527}
528
529inline void Request::set(const char *element, Float32 value)
530{
531 d_elements.setElement(Name(element), value);
532}
533
534inline void Request::set(const char *element, Float64 value)
535{
536 d_elements.setElement(Name(element), value);
537}
538
539inline void Request::set(const char *element, const Datetime& value)
540{
541 d_elements.setElement(Name(element), value);
542}
543
544inline void Request::set(const char *element, const char *value)
545{
546 d_elements.setElement(Name(element), value);
547}
548
549inline void Request::append(const char *element, bool value)
550{
551 Element namedElement = d_elements.getElement(Name(element));
552 namedElement.appendValue(value);
553}
554
555inline void Request::append(const char *element, char value)
556{
557 Element namedElement = d_elements.getElement(Name(element));
558 namedElement.appendValue(value);
559}
560
561inline void Request::append(const char *element, Int32 value)
562{
563 Element namedElement = d_elements.getElement(Name(element));
564 namedElement.appendValue(value);
565}
566
567inline void Request::append(const char *element, Int64 value)
568{
569 Element namedElement = d_elements.getElement(Name(element));
570 namedElement.appendValue(value);
571}
572
573inline void Request::append(const char *element, Float32 value)
574{
575 Element namedElement = d_elements.getElement(Name(element));
576 namedElement.appendValue(value);
577}
578
579inline void Request::append(const char *element, Float64 value)
580{
581 Element namedElement = d_elements.getElement(Name(element));
582 namedElement.appendValue(value);
583}
584
585inline void Request::append(const char *element, const Datetime& value)
586{
587 Element namedElement = d_elements.getElement(Name(element));
588 namedElement.appendValue(value);
589}
590
591inline void Request::append(const char *element, const char *value)
592{
593 Element namedElement = d_elements.getElement(Name(element));
594 namedElement.appendValue(value);
595}
596
597inline void Request::set(const Name& element, bool value)
598{
599 d_elements.setElement(element, value);
600}
601
602inline void Request::set(const Name& element, char value)
603{
604 d_elements.setElement(element, value);
605}
606
607inline void Request::set(const Name& element, Int32 value)
608{
609 d_elements.setElement(element, value);
610}
611
612inline void Request::set(const Name& element, Int64 value)
613{
614 d_elements.setElement(element, value);
615}
616
617inline void Request::set(const Name& element, Float32 value)
618{
619 d_elements.setElement(element, value);
620}
621
622inline void Request::set(const Name& element, Float64 value)
623{
624 d_elements.setElement(element, value);
625}
626
627inline void Request::set(const Name& element, const Datetime& value)
628{
629 d_elements.setElement(element, value);
630}
631
632inline void Request::set(const Name& element, const char *value)
633{
634 d_elements.setElement(element, value);
635}
636
637inline void Request::set(const Name& element, const std::string& value)
638{
639 d_elements.setElement(element, value);
640}
641
642inline void Request::set(
643 const Name& element, const void *value, std::size_t length)
644{
645 d_elements.setElement(element, value, length);
646}
647
648template <typename BYTES,
649 typename std::enable_if<IsByteSequence<BYTES>::value, bool>::type>
650inline void Request::set(const Name& element, const BYTES& value)
651{
652 d_elements.setElement(element, value);
653}
654
655inline void Request::append(const Name& element, bool value)
656{
657 Element namedElement = d_elements.getElement(element);
658 namedElement.appendValue(value);
659}
660
661inline void Request::append(const Name& element, char value)
662{
663 Element namedElement = d_elements.getElement(element);
664 namedElement.appendValue(value);
665}
666
667inline void Request::append(const Name& element, Int32 value)
668{
669 Element namedElement = d_elements.getElement(element);
670 namedElement.appendValue(value);
671}
672
673inline void Request::append(const Name& element, Int64 value)
674{
675 Element namedElement = d_elements.getElement(element);
676 namedElement.appendValue(value);
677}
678
679inline void Request::append(const Name& element, Float32 value)
680{
681 Element namedElement = d_elements.getElement(element);
682 namedElement.appendValue(value);
683}
684
685inline void Request::append(const Name& element, Float64 value)
686{
687 Element namedElement = d_elements.getElement(element);
688 namedElement.appendValue(value);
689}
690
691inline void Request::append(const Name& element, const Datetime& value)
692{
693 Element namedElement = d_elements.getElement(element);
694 namedElement.appendValue(value);
695}
696
697inline void Request::append(const Name& element, const char *value)
698{
699 Element namedElement = d_elements.getElement(element);
700 namedElement.appendValue(value);
701}
702
703inline void Request::append(const Name& element, const std::string& value)
704{
705 Element namedElement = d_elements.getElement(element);
706 namedElement.appendValue(value);
707}
708
709inline Element Request::getElement(const char *name)
710{
711 return d_elements.getElement(Name(name));
712}
713
715{
716 return d_elements.getElement(name);
717}
718
719inline Element Request::asElement() { return d_elements; }
720
721inline const Element Request::getElement(const char *name) const
722{
723 return d_elements.getElement(Name(name));
724}
725
726inline const Element Request::getElement(const Name& name) const
727{
728 return d_elements.getElement(name);
729}
730
731inline const Element Request::asElement() const { return d_elements; }
732
733inline void Request::fromJson(const char *json) { d_elements.fromJson(json); }
734
735inline void Request::fromJson(const std::string& json)
736{
737 fromJson(json.c_str());
738}
739
740inline const char *Request::getRequestId() const
741{
742 const char *requestId = 0;
743 BLPAPI_CALL(blpapi_Request_getRequestId)(d_handle, &requestId);
744 return requestId;
745}
746
747inline blpapi_Request_t *Request::handle() const { return d_handle; }
748
749inline std::ostream& Request::print(
750 std::ostream& stream, int level, int spacesPerLevel) const
751{
752 return d_elements.print(stream, level, spacesPerLevel);
753}
754
755inline std::ostream& operator<<(std::ostream& stream, const Request& request)
756{
757 return request.print(stream, 0, -1);
758}
759// ----------------
760// class RequestRef
761// ----------------
762
764 : d_request_p(request)
765{
766}
767
768inline Request *RequestRef::ptr() const { return this->d_request_p; }
769
770inline Request *RequestRef::operator->() const { return this->d_request_p; }
771
772} // close namespace blpapi
773} // close namespace BloombergLP
774
775#endif // #ifdef __cplusplus
776
777#endif // #ifndef INCLUDED_BLPAPI_REQUEST
#define BLPAPI_CALL(FUNCNAME)
Definition blpapi_call.h:353
Provide a key to identify individual subscriptions or requests.
Common definitions used by the library.
#define BLPAPI_EXPORT
Definition blpapi_defs.h:172
struct blpapi_CorrelationId_t_ blpapi_CorrelationId_t
Definition blpapi_dispatchtbl.h:74
struct blpapi_Request blpapi_Request_t
Definition blpapi_dispatchtbl.h:83
Provide a representation of an item in a message.
Defines Exceptions that can be thrown by the blpapi library.
Provide a representation of strings for use as container keys.
BLPAPI_EXPORT void blpapi_Request_setPreferredRoute(blpapi_Request_t *request, blpapi_CorrelationId_t *correlationId)
BLPAPI_EXPORT int blpapi_Request_getRequestId(const blpapi_Request_t *request, const char **requestId)
BLPAPI_EXPORT void blpapi_Request_destroy(blpapi_Request_t *request)
BLPAPI_EXPORT blpapi_Element_t * blpapi_Request_elements(blpapi_Request_t *request)
Provide BLPAPI types.
Definition blpapi_datetime.h:245
Definition blpapi_element.h:473
void rebind(blpapi_Element_t *element)
Definition blpapi_element.h:1638
BLPAPI_DEPRECATE_STRING_NAME int getElement(Element *result, const char *name) const
Definition blpapi_element.h:1946
void appendValue(bool value)
Definition blpapi_element.h:1854
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_element.h:2363
BLPAPI_DEPRECATE_STRING_NAME void setElement(const char *name, bool value)
Definition blpapi_element.h:1643
void fromJson(const char *json)
Definition blpapi_element.h:2382
Definition blpapi_name.h:150
Definition blpapi_request.h:457
Request * ptr() const
Definition blpapi_request.h:768
RequestRef(Request *request_p)
Definition blpapi_request.h:763
Request * operator->() const
Definition blpapi_request.h:770
Definition blpapi_request.h:147
BLPAPI_DEPRECATE_STRING_NAME void append(const char *name, bool value)
Definition blpapi_request.h:549
blpapi_Request_t * handle() const
Definition blpapi_request.h:747
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_request.h:749
BLPAPI_DEPRECATE_STRING_NAME void set(const char *name, bool value)
Definition blpapi_request.h:509
BLPAPI_DEPRECATE_STRING_NAME Element getElement(const char *name)
Definition blpapi_request.h:709
void fromJson(const char *json)
Definition blpapi_request.h:733
~Request()
Definition blpapi_request.h:500
Request(blpapi_Request_t *handle)
Definition blpapi_request.h:474
const char * getRequestId() const
Definition blpapi_request.h:740
Element asElement()
Definition blpapi_request.h:719
struct blpapi_Element blpapi_Element_t
Definition blpapi_types.h:136
blpapi_Float64_t Float64
Definition blpapi_types.h:474
blpapi_Float32_t Float32
Definition blpapi_types.h:473
blpapi_Int64_t Int64
Definition blpapi_types.h:471
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:647
blpapi_Int32_t Int32
Definition blpapi_types.h:469
Definition blpapi_abstractsession.h:195