import socket
import struct
import sys
from threading import Thread
from Queue import Queue
class UmdfStream:
def __init__(self, grp, port):
self.grp = grp
self.port = port
self.q = Queue()
self.t = Thread(target=self.worker)
self.t.daemon = True
self.buff = ''
self.t.start()
def connect( self ):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', self.port))
mreq = struct.pack("4sl", socket.inet_aton(self.grp), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
while True:
self.q.put( sock.recv(1500) )
def worker( self ):
needmore = False
while True:
if needmore:
data = self.q.get()
self.q.task_done()
needmore = False
if self.buff == '':
data = self.q.get()
pkt_size = len( data )
if pkt_size < 10:
self.buff += data
else:
hdr_seq_num = struct.unpack('!i', data[0:4])[0]
hdr_num_chucks = struct.unpack('!h', data[4:6])[0]
hdr_cur_chuck = struct.unpack('!h', data[6:8])[0]
print 'decoding msg seq:', hdr_seq_num, ' chuck: ', hdr_cur_chuck, '/', hdr_num_chucks
self.q.task_done()
if __name__ == '__main__':
if len(sys.argv) < 3:
print 'Usage:', sys.argv[0], ' multicast ip, port'
sys.exit(1)
stream = UmdfStream( sys.argv[1], int(sys.argv[2]) )
stream.connect()
Para usar: python umdf.py 233.252.8.57 10007 ( para ver as mensagens do canal de indice futuro chegando )
Este pedaço de codigo, auxilia identificar rapidamente se o sinal UMDF esta chegando ate a maquina ;)
sábado, 8 de setembro de 2012
BM&FBOVESPA - UMDF and Python
segunda-feira, 7 de maio de 2012
Enviando single order no Apama
com.apama.oms.NewOrder norder := new com.apama.oms.NewOrder;
norder.orderId := "test" + integer.getUnique().toString();
norder.type := "LIMIT";
norder.quantity := 100;
norder.symbol := "BISA3";
// order details
com.apama.oms.OrderPublisherStateContainer npub := new com.apama.oms.OrderPublisherStateContainer;
com.apama.service.framework.ServiceInterface frwk;
frwk := framework.initialiseServiceInterface("apamafmk"," apamafmk ","",new dictionary<string,string>);
com.apama.oms.OrderPublisherStateContainer npub := new com.apama.oms.OrderPublisherStateContainer;
// useless stuff
npub.submit( frwk, norder, true);
// order sent !? lets mensure it ;)
domingo, 18 de setembro de 2011
segunda-feira, 12 de setembro de 2011
domingo, 11 de setembro de 2011
Um cliente me solicitou que instalace o server FIX que fiz pra ele em java ( pra testar o QuifkFIX/J ), achei isto na net http://wrapper.tanukisoftware.com/doc/english/product-overview.html vou passar o domingao brincando com isto :D
quarta-feira, 19 de janeiro de 2011
gnustep-base instalado
// Hello.m
#import
@interface HelloWorld : NSObject {
// no instance variables
}
// methods
- (void)sayHello;
@end
@implementation HelloWorld
- (void)sayHello
{
NSLog(@"Hello, world, at %@", [NSCalendarDate calendarDate]);
}
@end
int main() {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
// my stuff
HelloWorld *hw = [[HelloWorld alloc] init];
[hw autorelease];
[hw sayHello];
[pool release];
return 0;
}
// GNUmakefile
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = Hello
Hello_OBJC_FILES = Hello.m
include $(GNUSTEP_MAKEFILES)/tool.make
moia:bzero:~/objc> gmake
This is gnustep-make 2.0.8. Type 'make print-gnustep-make-help' for help.
Making all for tool Hello...
Compiling file Hello.m ...
Linking tool Hello ...
Assinar:
Postagens (Atom)