1// 2// Copyright (c) ZeroC, Inc. All rights reserved. 3// 4 5#import <Request.h> 6 7@implementation ICERequest 8-(ICECurrent*) getCurrent 9{ 10 return current; 11} 12 13+(id) request:(ICECurrent*)current is:(id<ICEInputStream>)is os:(id<ICEOutputStream>)os 14{ 15 ICERequest* result = [((ICERequest*)[ICERequest alloc]) init:current is:is os:os]; 16 [result autorelease]; 17 return result; 18} 19 20-(id) init:(ICECurrent*)current_ is:(id<ICEInputStream>)is_ os:(id<ICEOutputStream>)os_ 21{ 22 if(![super init]) 23 { 24 return nil; 25 } 26 current = [current_ retain]; 27 is = [is_ retain]; 28 os = [os_ retain]; 29 needReset = NO; 30 return self; 31} 32 33-(void) callDispatch:(ICEServant*)servant 34{ 35 if(needReset == NO) 36 { 37 needReset = YES; 38 } 39 else 40 { 41 [is rewind]; 42 [os reset:NO]; 43 } 44 [servant iceDispatch:current is:is os:os]; 45} 46 47-(void) dealloc 48{ 49 [current release]; 50 [is release]; 51 [os release]; 52 [super dealloc]; 53} 54@end 55