#!/usr/bin/env python3
"""
動的サブスクリプション機能のテストスクリプト

RithmicClientを使用して、
1. サーバー（Windows）に接続
2. 動的に銘柄（例: GCJ6.COMEX）を購読
3. データ受信を確認
4. 購読リストを確認
を行う。
"""

import time
import argparse
from rithmic_bridge.client.library import RithmicClient

def main():
    parser = argparse.ArgumentParser(description="動的サブスクリプションテスト")
    parser.add_argument("--host", default="192.168.100.31", help="WindowsホストIP")
    parser.add_argument("--symbol", default="GCJ6", help="購読するシンボル")
    parser.add_argument("--exchange", default="COMEX", help="取引所")
    args = parser.parse_args()

    print(f"Connecting to {args.host}...")
    client = RithmicClient(host=args.host)
    
    # コールバック
    def on_mbo(event):
        print(f"[MBO] {event.timestamp:.3f} {event.action} {event.price} @ {event.size}")

    client.on_mbo(on_mbo)
    
    try:
        client.connect()
        print("Connected to bridge.")
        
        # 少し待ってから購読リクエスト
        time.sleep(1)
        
        print(f"Subscribing to {args.symbol}.{args.exchange}...")
        success = client.subscribe(args.symbol, args.exchange)
        
        if success:
            print("Subscription command sent successfully.")
        else:
            print("Subscription failed.")
            return

        # 購読リスト確認
        time.sleep(1)
        subs = client.list_subscriptions()
        print(f"Active subscriptions: {subs}")
        
        print("Waiting for data... (Press Ctrl+C to exit)")
        while True:
            time.sleep(1)
            
    except KeyboardInterrupt:
        print("\nStopping...")
    finally:
        client.disconnect()
        print("Disconnected.")

if __name__ == "__main__":
    main()
