MessageQ_put returns MessageQ_E_SHUTDOWN when transport fails
authorRobert Tivy <rtivy@ti.com>
Thu, 30 Apr 2015 17:37:07 +0000 (10:37 -0700)
committerRobert Tivy <rtivy@ti.com>
Thu, 30 Apr 2015 23:38:15 +0000 (16:38 -0700)
After calling the transport's "put" function, MessageQ_put() checks
errno for ESHUTDOWN, and if set MessageQ_put() returns MessageQ_E_SHUTDOWN.

linux/src/api/MessageQ.c

index 9fba28790e90bb7571234d538a6fd29d16c7b4a0..13ab27d5be1f4e548e87a20b237d1b43aac323ce 100644 (file)
@@ -860,7 +860,9 @@ Int MessageQ_put(MessageQ_QueueId queueId, MessageQ_Msg msg)
             case INetworkTransport_TypeId:
                 netTrans = INetworkTransport_downCast(baseTrans);
                 delivered = INetworkTransport_put(netTrans, (Ptr)msg);
             case INetworkTransport_TypeId:
                 netTrans = INetworkTransport_downCast(baseTrans);
                 delivered = INetworkTransport_put(netTrans, (Ptr)msg);
-                status = (delivered ? MessageQ_S_SUCCESS : MessageQ_E_FAIL);
+                status = (delivered ? MessageQ_S_SUCCESS :
+                          (errno == ESHUTDOWN ? MessageQ_E_SHUTDOWN :
+                           MessageQ_E_FAIL));
                 break;
 
             default:
                 break;
 
             default:
@@ -886,7 +888,8 @@ Int MessageQ_put(MessageQ_QueueId queueId, MessageQ_Msg msg)
 
         msgTrans = MessageQ_module->transports[clusterId][priority];
         delivered = IMessageQTransport_put(msgTrans, (Ptr)msg);
 
         msgTrans = MessageQ_module->transports[clusterId][priority];
         delivered = IMessageQTransport_put(msgTrans, (Ptr)msg);
-        status = (delivered ? MessageQ_S_SUCCESS : MessageQ_E_FAIL);
+        status = (delivered ? MessageQ_S_SUCCESS :
+                  (errno == ESHUTDOWN ? MessageQ_E_SHUTDOWN : MessageQ_E_FAIL));
     }
 
 done:
     }
 
 done: