Archived
This forum has been archived. Please start a new discussion on GitHub.
IceSL 0.3.2: oneway outgoing calls not supported?
kwaclaw
Oshawa, Canada
in Bug Reports
I am accessing IceStorm from a Silverlight app.
The Slice definitions have no return values and no exceptions defined:
The code to get the proxy is this:
If I change the remoteWhiteboard proxy to a twoway proxy it works fine in Silverlight, but the oneway calls hang in Outgoing.invoke(), at Monitor.Wait(). The exact same code works OK with Ice for .NET.
The Ice setup has 4 client threads:
Karl
The Slice definitions have no return values and no exceptions defined:
interface WhiteboardSession { ["ami"] void StartStroke(StylusPointSeq points); ["ami"] void AddPoints(StylusPointSeq points); ["ami"] void Clear(); ["ami"] void Upload(StrokeDataSeq strokes); };
The code to get the proxy is this:
switch (args.Task) { case TaskType.Connect: try { topic = topicMgr.retrieve(args.Topic); } catch (IceStorm.NoSuchTopic) { topic = topicMgr.create(args.Topic); } try { topic.subscribeAndGetPublisher(qos, localWhiteboard.Proxy); Ice.ObjectPrx pub = topic.getPublisher(); remoteWhiteboard = Wbs.WhiteboardSessionPrxHelper.uncheckedCast(pub.ice_oneway()); Dispatcher.BeginInvoke(() => { ConnectBtn.Content = "Disconnect"; }); } catch (IceStorm.AlreadySubscribed) { } catch { Dispatcher.BeginInvoke(() => { WhiteBoardNameBox.IsReadOnly = false; }); throw; } break;
If I change the remoteWhiteboard proxy to a twoway proxy it works fine in Silverlight, but the oneway calls hang in Outgoing.invoke(), at Monitor.Wait(). The exact same code works OK with Ice for .NET.
The Ice setup has 4 client threads:
Ice.InitializationData initData = new Ice.InitializationData(); initData.properties = Ice.Util.createProperties(); initData.properties.setProperty("Ice.Default.Router", "Glacier2/router:tcp -p 4502 -h " + args.Address); initData.properties.setProperty("Ice.ACM.Client", "0"); initData.properties.setProperty("Ice.RetryIntervals", "0 10 100"); initData.properties.setProperty("Ice.ThreadPool.Client.Size", "4"); initData.properties.setProperty("Ice.ThreadPool.Client.SizeMax", "16"); initData.properties.setProperty("Ice.MessageSizeMax", "1024"); initData.properties.setProperty("Ice.FactoryAssemblies", "WhiteBoardSL,version=1.0.0.0"); initData.properties.setProperty("TopicManager.Proxy", "Whiteboard/TopicManager:tcp -p 4505"); comm = Ice.Util.initialize(initData); Ice.RouterPrx defaultRouter = comm.getDefaultRouter(); if (defaultRouter == null) throw new Exception("no default router set"); router = Glacier2.RouterPrxHelper.checkedCast(defaultRouter); if (router == null) throw new Exception("configured router is not a glacier2 router"); session = router.createSession("", ""); String category = router.getCategoryForClient(); Ice.ObjectAdapter adapter = comm.createObjectAdapterWithRouter("WhiteboardAdapter", router); WhiteboardSessionI wbSession = new WhiteboardSessionI(args.Page.InkP, adapter, category);
Karl
0
Comments
-
Hi Karl,
This is a bug in IceSl-0.3.2 socket transport, we are going to fix this in next IceSl release that would be available soon.
Thanks for the bug report.
José0