فهرست منبع

client: DatagramPeerIO: remove DatagramPeerIO_SetHandlers

ambrop7 14 سال پیش
والد
کامیت
cd864d2277
3فایلهای تغییر یافته به همراه22 افزوده شده و 42 حذف شده
  1. 9 19
      client/DatagramPeerIO.c
  2. 9 15
      client/DatagramPeerIO.h
  3. 4 8
      client/client.c

+ 9 - 19
client/DatagramPeerIO.c

@@ -137,7 +137,11 @@ int DatagramPeerIO_Init (
     int num_frames,
     PacketPassInterface *recv_userif,
     int otp_warning_count,
-    BThreadWorkDispatcher *twd
+    BThreadWorkDispatcher *twd,
+    void *user,
+    DatagramPeerIO_handler_error handler_error,
+    DatagramPeerIO_handler_otp_warning handler_otp_warning,
+    DatagramPeerIO_handler_otp_ready handler_otp_ready
 )
 {
     ASSERT(payload_mtu >= 0)
@@ -154,9 +158,8 @@ int DatagramPeerIO_Init (
     o->reactor = reactor;
     o->payload_mtu = payload_mtu;
     o->sp_params = sp_params;
-    
-    // set no handlers
-    o->handler_error = NULL;
+    o->user = user;
+    o->handler_error = handler_error;
     
     // check num frames (for FragmentProtoAssembler)
     if (num_frames >= FPA_MAX_TIME) {
@@ -198,6 +201,7 @@ int DatagramPeerIO_Init (
         BLog(BLOG_ERROR, "SPProtoDecoder_Init failed");
         goto fail1;
     }
+    SPProtoDecoder_SetHandlers(&o->recv_decoder, handler_otp_ready, user);
     
     // init connector
     PacketRecvConnector_Init(&o->recv_connector, o->effective_socket_mtu, BReactor_PendingGroup(o->reactor));
@@ -218,6 +222,7 @@ int DatagramPeerIO_Init (
         BLog(BLOG_ERROR, "SPProtoEncoder_Init failed");
         goto fail3;
     }
+    SPProtoEncoder_SetHandlers(&o->send_encoder, handler_otp_warning, user);
     
     // init connector
     PacketPassConnector_Init(&o->send_connector, o->effective_socket_mtu, BReactor_PendingGroup(o->reactor));
@@ -232,7 +237,6 @@ int DatagramPeerIO_Init (
     o->mode = DATAGRAMPEERIO_MODE_NONE;
     
     DebugObject_Init(&o->d_obj);
-    
     return 1;
     
 fail4:
@@ -406,17 +410,3 @@ void DatagramPeerIO_RemoveOTPRecvSeeds (DatagramPeerIO *o)
     // remove receiving seeds
     SPProtoDecoder_RemoveOTPSeeds(&o->recv_decoder);
 }
-
-void DatagramPeerIO_SetHandlers (DatagramPeerIO *o, void *user,
-                                 DatagramPeerIO_handler_error handler_error,
-                                 DatagramPeerIO_handler_otp_warning handler_otp_warning,
-                                 DatagramPeerIO_handler_otp_ready handler_otp_ready)
-{
-    DebugObject_Access(&o->d_obj);
-    
-    o->user = user;
-    o->handler_error = handler_error;
-    
-    SPProtoDecoder_SetHandlers(&o->recv_decoder, handler_otp_ready, user);
-    SPProtoEncoder_SetHandlers(&o->send_encoder, handler_otp_warning, user);
-}

+ 9 - 15
client/DatagramPeerIO.h

@@ -139,6 +139,10 @@ typedef struct {
  * @param otp_warning_count If using OTPs, after how many encoded packets to call the handler.
  *                          In this case, must be >0 and <=sp_params.otp_num.
  * @param twd thread work dispatcher
+ * @param user value to pass to handlers
+ * @param handler_error error handler
+ * @param handler_otp_warning OTP warning handler
+ * @param handler_otp_ready handler called when OTP generation for a new receive seed is finished
  * @return 1 on success, 0 on failure
  */
 int DatagramPeerIO_Init (
@@ -151,7 +155,11 @@ int DatagramPeerIO_Init (
     int num_frames,
     PacketPassInterface *recv_userif,
     int otp_warning_count,
-    BThreadWorkDispatcher *twd
+    BThreadWorkDispatcher *twd,
+    void *user,
+    DatagramPeerIO_handler_error handler_error,
+    DatagramPeerIO_handler_otp_warning handler_otp_warning,
+    DatagramPeerIO_handler_otp_ready handler_otp_ready
 ) WARN_UNUSED;
 
 /**
@@ -250,18 +258,4 @@ void DatagramPeerIO_AddOTPRecvSeed (DatagramPeerIO *o, uint16_t seed_id, uint8_t
  */
 void DatagramPeerIO_RemoveOTPRecvSeeds (DatagramPeerIO *o);
 
-/**
- * Sets handlers.
- * 
- * @param o the object
- * @param handler_error error handler
- * @param handler_otp_warning OTP warning handler
- * @param handler_otp_ready handler called when OTP generation for a new receive seed is finished
- * @param user value to pass to handler
- */
-void DatagramPeerIO_SetHandlers (DatagramPeerIO *o, void *user,
-                                 DatagramPeerIO_handler_error handler_error,
-                                 DatagramPeerIO_handler_otp_warning handler_otp_warning,
-                                 DatagramPeerIO_handler_otp_ready handler_otp_ready);
-
 #endif

+ 4 - 8
client/client.c

@@ -1594,19 +1594,15 @@ int peer_init_link (struct peer_data *peer)
         if (!DatagramPeerIO_Init(
             &peer->pio.udp.pio, &ss, data_mtu, CLIENT_UDP_MTU, sp_params,
             options.fragmentation_latency, PEER_UDP_ASSEMBLER_NUM_FRAMES, recv_if,
-            options.otp_num_warn, &twd
+            options.otp_num_warn, &twd, peer,
+            (DatagramPeerIO_handler_error)peer_udp_pio_handler_error,
+            (DatagramPeerIO_handler_otp_warning)peer_udp_pio_handler_seed_warning,
+            (DatagramPeerIO_handler_otp_ready)peer_udp_pio_handler_seed_ready
         )) {
             peer_log(peer, BLOG_ERROR, "DatagramPeerIO_Init failed");
             goto fail1;
         }
         
-        // set handlers
-        DatagramPeerIO_SetHandlers(&peer->pio.udp.pio, peer,
-            (DatagramPeerIO_handler_error)peer_udp_pio_handler_error,
-            (DatagramPeerIO_handler_otp_warning)peer_udp_pio_handler_seed_warning,
-            (DatagramPeerIO_handler_otp_ready)peer_udp_pio_handler_seed_ready
-        );
-        
         // init send seed state
         if (SPPROTO_HAVE_OTP(sp_params)) {
             peer->pio.udp.sendseed_nextid = 0;