Class: ZMQ::Beacon

Inherits:
Object
  • Object
show all
Defined in:
ext/rbczmq/beacon.c

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.ZMQ::Beacon.new(9999) ⇒ ZMQ::Beacon

Create a new beacon.

Examples

ZMQ::Beacon.new(9999)    =>  ZMQ::Beacon

Returns:



53
54
55
56
57
58
59
60
61
62
63
64
# File 'ext/rbczmq/beacon.c', line 53

static VALUE rb_czmq_beacon_s_new(VALUE beacon, VALUE port)
{
    zmq_beacon_wrapper *bcn = NULL;
    int prt;
    Check_Type(port, T_FIXNUM);
    beacon = Data_Make_Struct(rb_cZmqBeacon, zmq_beacon_wrapper, 0, rb_czmq_free_beacon_gc, bcn);
    prt = FIX2INT(port);
    bcn->beacon = (zbeacon_t*)rb_thread_call_without_gvl(rb_czmq_nogvl_new_beacon, (void *)prt, RUBY_UBF_IO, 0);
    ZmqAssertObjOnAlloc(bcn->beacon, bcn);
    rb_obj_call_init(beacon, 0, NULL);
    return beacon;
}

Instance Method Details

#destroynil

Stop broadcasting a beacon. The GC will take the same action if a beacon object is not reachable anymore on the next GC cycle. This is a lower level API.

Examples

beacon.destroy    =>  nil

Returns:

  • (nil)


77
78
79
80
81
82
# File 'ext/rbczmq/beacon.c', line 77

static VALUE rb_czmq_beacon_destroy(VALUE obj)
{
    GetZmqBeacon(obj);
    rb_thread_call_without_gvl(rb_czmq_nogvl_beacon_destroy, beacon, RUBY_UBF_IO, 0);
    return Qnil;
}

#hostnameString

Returns the beacon’s IP address

Examples

beacon.hostname   =>  "127.0.0.1"

Returns:

  • (String)


94
95
96
97
98
# File 'ext/rbczmq/beacon.c', line 94

static VALUE rb_czmq_beacon_hostname(VALUE obj)
{
    GetZmqBeacon(obj);
    return rb_str_new2(zbeacon_hostname(beacon->beacon));
}

#interval=(100) ⇒ nil

Sets the broadcast interval in milliseconds

Examples

beacon.interval = 100   =>  nil

Returns:

  • (nil)


123
124
125
126
127
128
129
130
131
132
# File 'ext/rbczmq/beacon.c', line 123

static VALUE rb_czmq_beacon_set_interval(VALUE obj, VALUE interval)
{
    struct nogvl_beacon_interval_args args;
    GetZmqBeacon(obj);
    Check_Type(interval, T_FIXNUM);
    args.beacon = beacon;
    args.interval = FIX2INT(interval);
    rb_thread_call_without_gvl(rb_czmq_nogvl_set_interval, (void *)&args, RUBY_UBF_IO, 0);
    return Qnil;
}

#noechonil

Filter out any beacon that looks exactly like ours

Examples

beacon.noecho   =>  nil

Returns:

  • (nil)


156
157
158
159
160
161
# File 'ext/rbczmq/beacon.c', line 156

static VALUE rb_czmq_beacon_noecho(VALUE obj)
{
    GetZmqBeacon(obj);
    rb_thread_call_without_gvl(rb_czmq_nogvl_noecho, (void *)beacon, RUBY_UBF_IO, 0);
    return Qnil;
}

#pipeObject



296
297
298
299
300
301
302
303
304
305
# File 'ext/rbczmq/beacon.c', line 296

static VALUE rb_czmq_beacon_pipe(VALUE obj)
{
    zmq_sock_wrapper *sock = NULL;
    VALUE socket;
    GetZmqBeacon(obj);
    socket = rb_czmq_socket_alloc(Qnil, NULL, zbeacon_socket(beacon->beacon));
    GetZmqSocket(socket);
    sock->state = ZMQ_SOCKET_BOUND;
    return socket;
}

#publish("address") ⇒ nil

Start broadcasting beacon to peers.

Examples

beacon.publish("address")   =>  nil

Returns:

  • (nil)


186
187
188
189
190
191
192
193
194
195
196
# File 'ext/rbczmq/beacon.c', line 186

static VALUE rb_czmq_beacon_publish(VALUE obj, VALUE transmit)
{
    struct nogvl_beacon_publish_args args;
    GetZmqBeacon(obj);
    Check_Type(transmit, T_STRING);
    args.beacon = beacon;
    args.transmit = RSTRING_PTR(transmit);
    args.length = (int)RSTRING_LEN(transmit);
    rb_thread_call_without_gvl(rb_czmq_nogvl_publish, (void *)&args, RUBY_UBF_IO, 0);
    return Qnil;
}

#silencenil

Stop broadcasting beacons to peers.

Examples

beacon.silence   =>  nil

Returns:

  • (nil)


220
221
222
223
224
225
# File 'ext/rbczmq/beacon.c', line 220

static VALUE rb_czmq_beacon_silence(VALUE obj)
{
    GetZmqBeacon(obj);
    rb_thread_call_without_gvl(rb_czmq_nogvl_silence, (void *)beacon, RUBY_UBF_IO, 0);
    return Qnil;
}

#subscribe("channel") ⇒ nil

Start listening to other peers.

Examples

beacon.subscribe("channel")   =>  nil

Returns:

  • (nil)


250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
# File 'ext/rbczmq/beacon.c', line 250

static VALUE rb_czmq_beacon_subscribe(VALUE obj, VALUE filter)
{
    struct nogvl_beacon_subscribe_args args;
    GetZmqBeacon(obj);
    args.beacon = beacon;
    if (NIL_P(filter)) {
        args.filter = NULL;
        args.length = 0;
    } else {
        Check_Type(filter, T_STRING);
        args.filter = RSTRING_PTR(filter);
        args.length = (int)RSTRING_LEN(filter);
    }
    rb_thread_call_without_gvl(rb_czmq_nogvl_subscribe, (void *)&args, RUBY_UBF_IO, 0);
    return Qnil;
}

#unsubscribenil

Stop broadcasting beacons to peers.

Examples

beacon.unsubscribe   =>  nil

Returns:

  • (nil)


289
290
291
292
293
294
# File 'ext/rbczmq/beacon.c', line 289

static VALUE rb_czmq_beacon_unsubscribe(VALUE obj)
{
    GetZmqBeacon(obj);
    rb_thread_call_without_gvl(rb_czmq_nogvl_unsubscribe, (void *)beacon, RUBY_UBF_IO, 0);
    return Qnil;
}