101d6381dSPawel Dziepak /* 201d6381dSPawel Dziepak * Copyright 2012 Haiku, Inc. All rights reserved. 301d6381dSPawel Dziepak * Distributed under the terms of the MIT License. 401d6381dSPawel Dziepak * 501d6381dSPawel Dziepak * Authors: 601d6381dSPawel Dziepak * Paweł Dziepak, pdziepak@quarnos.org 701d6381dSPawel Dziepak */ 801d6381dSPawel Dziepak 901d6381dSPawel Dziepak 1001d6381dSPawel Dziepak #include "Request.h" 1101d6381dSPawel Dziepak 1201d6381dSPawel Dziepak 1301d6381dSPawel Dziepak status_t 1401d6381dSPawel Dziepak Request::Send() 1501d6381dSPawel Dziepak { 16*3ce57b34SPawel Dziepak return _TrySend(); 17*3ce57b34SPawel Dziepak } 18*3ce57b34SPawel Dziepak 19*3ce57b34SPawel Dziepak 20*3ce57b34SPawel Dziepak status_t 21*3ce57b34SPawel Dziepak Request::_TrySend() 22*3ce57b34SPawel Dziepak { 2301d6381dSPawel Dziepak RPC::Reply *rpl; 24*3ce57b34SPawel Dziepak RPC::Request *rpc; 25*3ce57b34SPawel Dziepak 26*3ce57b34SPawel Dziepak status_t result = fServer->SendCallAsync(fBuilder.Request(), &rpl, &rpc); 2701d6381dSPawel Dziepak if (result != B_OK) 2801d6381dSPawel Dziepak return result; 2901d6381dSPawel Dziepak 30*3ce57b34SPawel Dziepak result = fServer->WaitCall(rpc); 31*3ce57b34SPawel Dziepak if (result != B_OK) { 32*3ce57b34SPawel Dziepak fServer->CancelCall(rpc); 33*3ce57b34SPawel Dziepak delete rpc; 34*3ce57b34SPawel Dziepak return result; 35*3ce57b34SPawel Dziepak } 36*3ce57b34SPawel Dziepak 3701d6381dSPawel Dziepak return fReply.SetTo(rpl); 3801d6381dSPawel Dziepak } 3901d6381dSPawel Dziepak 4001d6381dSPawel Dziepak 4101d6381dSPawel Dziepak void 4201d6381dSPawel Dziepak Request::Reset() 4301d6381dSPawel Dziepak { 4401d6381dSPawel Dziepak fBuilder.Reset(); 4501d6381dSPawel Dziepak fReply.Reset(); 4601d6381dSPawel Dziepak } 4701d6381dSPawel Dziepak 48