00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "alsaclient.h"
00021
00027 namespace drumstick {
00028
00053 Subscriber::Subscriber()
00054 {
00055 snd_seq_query_subscribe_malloc(&m_Info);
00056 }
00057
00062 Subscriber::Subscriber(const Subscriber& other)
00063 {
00064 snd_seq_query_subscribe_malloc(&m_Info);
00065 snd_seq_query_subscribe_copy(m_Info, other.m_Info);
00066 }
00067
00072 Subscriber::Subscriber(snd_seq_query_subscribe_t* other)
00073 {
00074 snd_seq_query_subscribe_malloc(&m_Info);
00075 snd_seq_query_subscribe_copy(m_Info, other);
00076 }
00077
00081 Subscriber::~Subscriber()
00082 {
00083 snd_seq_query_subscribe_free(m_Info);
00084 }
00085
00090 Subscriber* Subscriber::clone()
00091 {
00092 return new Subscriber(m_Info);
00093 }
00094
00100 Subscriber& Subscriber::operator=(const Subscriber& other)
00101 {
00102 snd_seq_query_subscribe_copy(m_Info, other.m_Info);
00103 return *this;
00104 }
00105
00110 int
00111 Subscriber::getClient()
00112 {
00113 return snd_seq_query_subscribe_get_client(m_Info);
00114 }
00115
00120 int
00121 Subscriber::getPort()
00122 {
00123 return snd_seq_query_subscribe_get_port(m_Info);
00124 }
00125
00130 const snd_seq_addr_t*
00131 Subscriber::getRoot()
00132 {
00133 return snd_seq_query_subscribe_get_root(m_Info);
00134 }
00135
00144 snd_seq_query_subs_type_t
00145 Subscriber::getType()
00146 {
00147 return snd_seq_query_subscribe_get_type(m_Info);
00148 }
00149
00154 int
00155 Subscriber::getIndex()
00156 {
00157 return snd_seq_query_subscribe_get_index(m_Info);
00158 }
00159
00164 int
00165 Subscriber::getNumSubs()
00166 {
00167 return snd_seq_query_subscribe_get_num_subs(m_Info);
00168 }
00169
00174 const snd_seq_addr_t*
00175 Subscriber::getAddr()
00176 {
00177 return snd_seq_query_subscribe_get_addr(m_Info);
00178 }
00179
00184 int
00185 Subscriber::getQueue()
00186 {
00187 return snd_seq_query_subscribe_get_queue(m_Info);
00188 }
00189
00194 bool
00195 Subscriber::getExclusive()
00196 {
00197 return (snd_seq_query_subscribe_get_exclusive(m_Info) != 0);
00198 }
00199
00204 bool
00205 Subscriber::getTimeUpdate()
00206 {
00207 return (snd_seq_query_subscribe_get_time_update(m_Info) != 0);
00208 }
00209
00214 bool
00215 Subscriber::getTimeReal()
00216 {
00217 return (snd_seq_query_subscribe_get_time_real(m_Info) != 0);
00218 }
00219
00224 void
00225 Subscriber::setClient(int client)
00226 {
00227 snd_seq_query_subscribe_set_client(m_Info, client);
00228 }
00229
00234 void
00235 Subscriber::setPort(int port)
00236 {
00237 snd_seq_query_subscribe_set_port(m_Info, port);
00238 }
00239
00244 void
00245 Subscriber::setRoot(snd_seq_addr_t* addr)
00246 {
00247 snd_seq_query_subscribe_set_root(m_Info, addr);
00248 }
00249
00258 void
00259 Subscriber::setType(snd_seq_query_subs_type_t type)
00260 {
00261 snd_seq_query_subscribe_set_type(m_Info, type);
00262 }
00263
00268 void
00269 Subscriber::setIndex(int index)
00270 {
00271 snd_seq_query_subscribe_set_index(m_Info, index);
00272 }
00273
00278 int
00279 Subscriber::getSizeOfInfo() const
00280 {
00281 return snd_seq_query_subscribe_sizeof();
00282 }
00283
00287 Subscription::Subscription()
00288 {
00289 snd_seq_port_subscribe_malloc(&m_Info);
00290 }
00291
00296 Subscription::Subscription(const Subscription& other)
00297 {
00298 snd_seq_port_subscribe_malloc(&m_Info);
00299 snd_seq_port_subscribe_copy(m_Info, other.m_Info);
00300 }
00301
00306 Subscription::Subscription(snd_seq_port_subscribe_t* other)
00307 {
00308 snd_seq_port_subscribe_malloc(&m_Info);
00309 snd_seq_port_subscribe_copy(m_Info, other);
00310 }
00311
00316 Subscription::Subscription(MidiClient* seq)
00317 {
00318 snd_seq_port_subscribe_malloc(&m_Info);
00319 CHECK_WARNING(snd_seq_get_port_subscription(seq->getHandle(), m_Info));
00320 }
00321
00326 Subscription::~Subscription()
00327 {
00328 snd_seq_port_subscribe_free(m_Info);
00329 }
00330
00335 Subscription*
00336 Subscription::clone()
00337 {
00338 return new Subscription(m_Info);
00339 }
00340
00346 Subscription&
00347 Subscription::operator=(const Subscription& other)
00348 {
00349 snd_seq_port_subscribe_copy(m_Info, other.m_Info);
00350 return *this;
00351 }
00352
00357 const snd_seq_addr_t*
00358 Subscription::getSender()
00359 {
00360 return snd_seq_port_subscribe_get_sender(m_Info);
00361 }
00362
00367 const snd_seq_addr_t*
00368 Subscription::getDest()
00369 {
00370 return snd_seq_port_subscribe_get_dest(m_Info);
00371 }
00372
00377 int
00378 Subscription::getQueue()
00379 {
00380 return snd_seq_port_subscribe_get_queue(m_Info);
00381 }
00382
00387 bool
00388 Subscription::getExclusive()
00389 {
00390 return (snd_seq_port_subscribe_get_exclusive(m_Info) != 0);
00391 }
00392
00397 bool
00398 Subscription::getTimeUpdate()
00399 {
00400 return (snd_seq_port_subscribe_get_time_update(m_Info) != 0);
00401 }
00402
00407 bool
00408 Subscription::getTimeReal()
00409 {
00410 return (snd_seq_port_subscribe_get_time_real(m_Info) != 0);
00411 }
00412
00417 void
00418 Subscription::setSender(const snd_seq_addr_t* addr)
00419 {
00420 snd_seq_port_subscribe_set_sender(m_Info, addr);
00421 }
00422
00427 void
00428 Subscription::setDest(const snd_seq_addr_t* addr)
00429 {
00430 snd_seq_port_subscribe_set_dest(m_Info, addr);
00431 }
00432
00437 void
00438 Subscription::setQueue(int q)
00439 {
00440 snd_seq_port_subscribe_set_queue(m_Info, q);
00441 }
00442
00447 void
00448 Subscription::setExclusive(bool val)
00449 {
00450 snd_seq_port_subscribe_set_exclusive(m_Info, val?1:0);
00451 }
00452
00457 void
00458 Subscription::setTimeUpdate(bool val)
00459 {
00460 snd_seq_port_subscribe_set_time_update(m_Info, val?1:0);
00461 }
00462
00467 void
00468 Subscription::setTimeReal(bool val)
00469 {
00470 snd_seq_port_subscribe_set_time_real(m_Info, val?1:0);
00471 }
00472
00478 void
00479 Subscription::setSender(unsigned char client, unsigned char port)
00480 {
00481 snd_seq_addr_t addr;
00482 addr.client = client;
00483 addr.port = port;
00484 setSender(&addr);
00485 }
00486
00492 void
00493 Subscription::setDest(unsigned char client, unsigned char port)
00494 {
00495 snd_seq_addr_t addr;
00496 addr.client = client;
00497 addr.port = port;
00498 setDest(&addr);
00499 }
00500
00507 void
00508 Subscription::subscribe(MidiClient* seq)
00509 {
00510 if ((m_Info == NULL) || (seq == NULL) || !(seq->isOpened()))
00511 {
00512 return;
00513 }
00514 CHECK_WARNING(snd_seq_subscribe_port(seq->getHandle(), m_Info));
00515 }
00516
00523 void
00524 Subscription::unsubscribe(MidiClient* seq)
00525 {
00526 if ((m_Info == NULL) || (seq == NULL) || !(seq->isOpened()))
00527 {
00528 return;
00529 }
00530 CHECK_WARNING(snd_seq_unsubscribe_port(seq->getHandle(), m_Info));
00531 }
00532
00537 int
00538 Subscription::getSizeOfInfo() const
00539 {
00540 return snd_seq_port_subscribe_sizeof();
00541 }
00542
00543 }
00544