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:



50
51
52
53
54
55
56
57
58
59
60
61
# File 'ext/rbczmq/beacon.c', line 50

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_blocking_region(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)


74
75
76
77
78
79
# File 'ext/rbczmq/beacon.c', line 74

static VALUE rb_czmq_beacon_destroy(VALUE obj)
{
    GetZmqBeacon(obj);
    rb_thread_blocking_region(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)


91
92
93
94
95
# File 'ext/rbczmq/beacon.c', line 91

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)


120
121
122
123
124
125
126
127
128
129
# File 'ext/rbczmq/beacon.c', line 120

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_blocking_region(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)


153
154
155
156
157
158
# File 'ext/rbczmq/beacon.c', line 153

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

#pipeObject



293
294
295
296
297
298
299
300
301
302
# File 'ext/rbczmq/beacon.c', line 293

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)


183
184
185
186
187
188
189
190
191
192
193
# File 'ext/rbczmq/beacon.c', line 183

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 = StringValueCStr(transmit);
    args.length = (int)RSTRING_LEN(transmit);
    rb_thread_blocking_region(rb_czmq_nogvl_publish, (void *)&args, RUBY_UBF_IO, 0);
    return Qnil;
}

#silencenil

Stop broadcasting beacons to peers.

Examples

beacon.silence   =>  nil

Returns:

  • (nil)


217
218
219
220
221
222
# File 'ext/rbczmq/beacon.c', line 217

static VALUE rb_czmq_beacon_silence(VALUE obj)
{
    GetZmqBeacon(obj);
    rb_thread_blocking_region(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)


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

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 = StringValueCStr(filter);
        args.length = (int)RSTRING_LEN(filter);
    }
    rb_thread_blocking_region(rb_czmq_nogvl_subscribe, (void *)&args, RUBY_UBF_IO, 0);
    return Qnil;
}

#unsubscribenil

Stop broadcasting beacons to peers.

Examples

beacon.unsubscribe   =>  nil

Returns:

  • (nil)


286
287
288
289
290
291
# File 'ext/rbczmq/beacon.c', line 286

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