xtdwnuisea
发表于 2010-1-8 17:17:35
modern
的确是强人呀, 你说的是对的, 服务配置框架已经帮我们把stream与module结合起来了;
在CCM_App工程中遇到一个问题, 在make_stream()刚建立好流后, 立即压入消息是不对的, 我以前错了两个地方:
1. 就是您说的:没有自己调度消息
2. 在make_stream()函数中刚 new完流就进行消息压入;
现在我在make_stream()中创建一个线程,等Module全部压入流以后,再在我的工作线程中向流中压入消息; 这样就没有问题了;
与你进行深层次交流真是一件大快人心的事呀:) 非常感谢您在这件事情上对我的提醒与深度交流!
[ 本帖最后由 xtdwnuisea 于 2010-1-8 17:19 编辑 ]
federation123
发表于 2010-1-11 09:51:03
公司曾经使用stream来开发一个通讯系统,但当软件开发完成以后,才发现会出现shutdown
楼上各位要小心下面的情况。
SEGV during shutdown with ACE Streamsfrom [Chad Beaulac]
Subject: SEGV during shutdown with ACE StreamsFrom: Chad BeaulacDate: Thu, 29 May 2008 06:08:19 -0700 PDTNewsgroups: comp.soft-sys.ace
file:///F:/project/P-软总线/V-版本/DDS/SEGV%20during%20shutdown%20with%20ACE%20Streams.files/banner_en.jpg ACE VERSION: 5.6.3, 5.6.4, 5.6.5 HOST MACHINE and OPERATING SYSTEM: Fedora Core 7 and 8, AS 4.5 TARGET MACHINE and OPERATING SYSTEM, if different from HOST: COMPILER NAME AND VERSION (AND PATCHLEVEL): same THE $ACE_ROOT/ace/config.h FILE: #define ACE_HAS_REACTOR_NOTIFICATION_QUEUE #include "ace/config-linux.h" THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE: no_hidden_visibility = 1 include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU AREA/CLASS/EXAMPLE AFFECTED: $ACE_ROOT/examples/ASX/CCM_App ./server -f svc.conf DOES THE PROBLEM AFFECT: COMPILATION? no LINKING? no EXECUTION? yes OTHER (please specify)? ACE and the example application are affected SYNOPSIS: When you hit Ctrl-C or Ctrl-D to stop the example server program,it core dumps with a SEGV during shutdown. DESCRIPTION: I have a processing framework for real-time processing systems andI'd like to convert it to use the ACE Streams framework whereapplicable. A SEGV during shutdown isn't acceptable in my office so Ican't use the Streams framework yet. REPEAT BY: Run $ACE_ROOT/examples/ASX/CCM_App/server -f $ACE_ROOT/examples/ASX/CCM_App/svc.conf SAMPLE FIX/WORKAROUND: none at this time
Joe
发表于 2010-1-11 16:07:48
原帖由 xtdwnuisea 于 2010-1-7 15:20 发表 http://www.acejoy.com/bbs/images/common/back.gif
CCM_App 这个项目我已经能运行起来
问一下楼主,为什么这个例子运行会出错呢,window系统
我用server.exe -d -f svc.conf运行的
Joe
发表于 2010-1-12 15:07:46
static ACE_Service_Manager "-d -p 4911"
dynamic Test_Task Service_Object *CCM_App:_make_Test_Task() "-p 3000"
#stream dynamic CCM_App STREAM *CCM_App:make_stream() active
{
dynamic Device_Adapter Module *CCM_App:make_da()
dynamic Event_Analyzer Module *CCM_App:make_ea()
dynamic Multicast_Router Module *CCM_App:make_mr() "-p 3001"
}
#stream CCM_App
{
remove Device_Adapter
remove Event_Analyzer
remove Multicast_Router
}
remove CCM_App
remove Test_Task
如果svc.conf是这样的就不会出错,也就是说将三个Module加载到Service configraturor中是不会出错;
但是不能将Stream加载到Service configraturor中,也不能将三个Module加载到Stream中;
我就用ACE version 5.6的自带的例子ACE_wrappers\examples\ASX\CCM_App;
不知道是我哪里没有弄对,希望两位能给指点一下,感谢
xtdwnuisea
发表于 2010-2-1 18:11:56
Module可以加载到Stream中
Stream可以加载到service configure中
在主应用程序中,还可以使用迭代的方式,取到service configure中Stream的指定,向stream中压入消息, 这个贴子在modern
的帮助下,一直讨论的这个话题
关于如何迭代,在test项目中还有例子;
[ 本帖最后由 xtdwnuisea 于 2010-2-1 18:13 编辑 ]
acecoder
发表于 2010-4-20 09:58:10
"在主应用程序中,还可以使用迭代的方式,取到service configure中Stream的指定,向stream中压入消息" 他最后这么说,我会迭代,但我只能得到名字,而不能 取到service configure中Stream的指定,向stream中压入消息, 因为我取到名字后,使用ACE_Dynamic_Service,只能得到ACE_Service_Object派生类对象。而ACE_Stream不行。